more tests for unwrapping equips
This commit is contained in:
		
							parent
							
								
									9e8e10d434
								
							
						
					
					
						commit
						b29bb473d5
					
				| @ -34,7 +34,7 @@ async fn test_unwrap_weapon() { | |||||||
|             } |             } | ||||||
|         }).await.unwrap(); |         }).await.unwrap(); | ||||||
| 
 | 
 | ||||||
|     println!("created item: {:?}", wrapped_item); |     assert!(wrapped_item.item.as_client_bytes() == [0x00,0x01,0x00,0x05,0xDA,0x05,0x03,0x14,0x05,0x1E,0x00,0x00,0x00,0x00,0x00,0x00]); | ||||||
| 
 | 
 | ||||||
|     let mut inventory = Vec::<item::ItemEntity>::new(); |     let mut inventory = Vec::<item::ItemEntity>::new(); | ||||||
|     inventory.push(wrapped_item.into()); |     inventory.push(wrapped_item.into()); | ||||||
| @ -67,17 +67,205 @@ async fn test_unwrap_weapon() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[async_std::test] | #[async_std::test] | ||||||
| async fn test_unwrap_armor() {} | async fn test_unwrap_armor() { | ||||||
|  |     let mut entity_gateway = InMemoryGateway::new(); | ||||||
|  | 
 | ||||||
|  |     let (_user1, char1) = new_user_character(&mut entity_gateway, "a1", "a").await; | ||||||
|  | 
 | ||||||
|  |     let wrapped_item = entity_gateway.create_item( | ||||||
|  |         item::NewItemEntity { | ||||||
|  |             item: item::ItemDetail::Armor(item::armor::Armor { | ||||||
|  |                 armor: item::armor::ArmorType::PerfectFrame, | ||||||
|  |                 dfp: 3u8, | ||||||
|  |                 evp: 2u8, | ||||||
|  |                 slots: 4u8, | ||||||
|  |                 wrapping: Some(item::WrappingPaper::Red_Green), // 5
 | ||||||
|  |             }), | ||||||
|  |             location: item::ItemLocation::Inventory{ | ||||||
|  |                 character_id: char1.id, | ||||||
|  |             } | ||||||
|  |         }).await.unwrap(); | ||||||
|  | 
 | ||||||
|  |     // slots should be untouched when wrapped regardless of wrapping paper colour
 | ||||||
|  |     assert!(wrapped_item.item.as_client_bytes() == [0x01,0x01,0x10,0x00,0x40,0x04,0x03,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00]); | ||||||
|  | 
 | ||||||
|  |     let mut inventory = Vec::<item::ItemEntity>::new(); | ||||||
|  |     inventory.push(wrapped_item.into()); | ||||||
|  |     entity_gateway.set_character_inventory(&char1.id, &item::InventoryEntity::new(inventory)).await.unwrap(); | ||||||
|  | 
 | ||||||
|  |     let mut ship = Box::new(ShipServerState::builder() | ||||||
|  |         .gateway(entity_gateway.clone()) | ||||||
|  |         .build()); | ||||||
|  |     
 | ||||||
|  |     log_in_char(&mut ship, ClientId(1), "a1", "a").await; | ||||||
|  |     join_lobby(&mut ship, ClientId(1)).await; | ||||||
|  |     create_room(&mut ship, ClientId(1), "room", "").await; | ||||||
|  | 
 | ||||||
|  |     ship.handle(ClientId(1), &RecvShipPacket::Message(Message::new(GameMessage::PlayerUseItem(PlayerUseItem { | ||||||
|  |         client: 0, | ||||||
|  |         target: 0, | ||||||
|  |         item_id: 0x10000, | ||||||
|  |     })))).await.unwrap().for_each(drop); | ||||||
|  | 
 | ||||||
|  |     let inventory_items = entity_gateway.get_character_inventory(&char1.id).await.unwrap(); | ||||||
|  | 
 | ||||||
|  |     inventory_items.items[0].with_individual(|item| { | ||||||
|  |         match &item.item { | ||||||
|  |             item::ItemDetail::Armor(armor) => { | ||||||
|  |                 assert!(armor.as_bytes() == [0x01,0x01,0x10,0x00,0x00,0x04,0x03,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00]); | ||||||
|  |             }, | ||||||
|  |             _ => panic!(), | ||||||
|  |         } | ||||||
|  |     }).unwrap(); | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| #[async_std::test] | #[async_std::test] | ||||||
| async fn test_unwrap_shield() {} | async fn test_unwrap_shield() { | ||||||
|  |     let mut entity_gateway = InMemoryGateway::new(); | ||||||
|  | 
 | ||||||
|  |     let (_user1, char1) = new_user_character(&mut entity_gateway, "a1", "a").await; | ||||||
|  | 
 | ||||||
|  |     let wrapped_item = entity_gateway.create_item( | ||||||
|  |         item::NewItemEntity { | ||||||
|  |             item: item::ItemDetail::Shield(item::shield::Shield { | ||||||
|  |                 shield: item::shield::ShieldType::CoreShield, | ||||||
|  |                 dfp: 2u8, | ||||||
|  |                 evp: 3u8, | ||||||
|  |                 wrapping: Some(item::WrappingPaper::Red_Green), // 5
 | ||||||
|  |             }), | ||||||
|  |             location: item::ItemLocation::Inventory{ | ||||||
|  |                 character_id: char1.id, | ||||||
|  |             } | ||||||
|  |         }).await.unwrap(); | ||||||
|  | 
 | ||||||
|  |     assert!(wrapped_item.item.as_client_bytes() == [0x01,0x02,0x02,0x00,0x40,0x05,0x02,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00]); | ||||||
|  | 
 | ||||||
|  |     let mut inventory = Vec::<item::ItemEntity>::new(); | ||||||
|  |     inventory.push(wrapped_item.into()); | ||||||
|  |     entity_gateway.set_character_inventory(&char1.id, &item::InventoryEntity::new(inventory)).await.unwrap(); | ||||||
|  | 
 | ||||||
|  |     let mut ship = Box::new(ShipServerState::builder() | ||||||
|  |         .gateway(entity_gateway.clone()) | ||||||
|  |         .build()); | ||||||
|  |     
 | ||||||
|  |     log_in_char(&mut ship, ClientId(1), "a1", "a").await; | ||||||
|  |     join_lobby(&mut ship, ClientId(1)).await; | ||||||
|  |     create_room(&mut ship, ClientId(1), "room", "").await; | ||||||
|  | 
 | ||||||
|  |     ship.handle(ClientId(1), &RecvShipPacket::Message(Message::new(GameMessage::PlayerUseItem(PlayerUseItem { | ||||||
|  |         client: 0, | ||||||
|  |         target: 0, | ||||||
|  |         item_id: 0x10000, | ||||||
|  |     })))).await.unwrap().for_each(drop); | ||||||
|  | 
 | ||||||
|  |     let inventory_items = entity_gateway.get_character_inventory(&char1.id).await.unwrap(); | ||||||
|  | 
 | ||||||
|  |     inventory_items.items[0].with_individual(|item| { | ||||||
|  |         match &item.item { | ||||||
|  |             item::ItemDetail::Shield(shield) => { | ||||||
|  |                 assert!(shield.as_bytes() == [0x01,0x02,0x02,0x00,0x00,0x00,0x02,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00]); | ||||||
|  |             }, | ||||||
|  |             _ => panic!(), | ||||||
|  |         } | ||||||
|  |     }).unwrap(); | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| #[async_std::test] | #[async_std::test] | ||||||
| async fn test_unwrap_unit() {} | async fn test_unwrap_unit() { | ||||||
|  |     let mut entity_gateway = InMemoryGateway::new(); | ||||||
|  | 
 | ||||||
|  |     let (_user1, char1) = new_user_character(&mut entity_gateway, "a1", "a").await; | ||||||
|  | 
 | ||||||
|  |     let wrapped_item = entity_gateway.create_item( | ||||||
|  |         item::NewItemEntity { | ||||||
|  |             item: item::ItemDetail::Unit(item::unit::Unit { | ||||||
|  |                 unit: item::unit::UnitType::KnightPower, | ||||||
|  |                 modifier: Some(item::unit::UnitModifier::MinusMinus), | ||||||
|  |                 wrapping: Some(item::WrappingPaper::Red_Green), // 5
 | ||||||
|  |             }), | ||||||
|  |             location: item::ItemLocation::Inventory{ | ||||||
|  |                 character_id: char1.id, | ||||||
|  |             } | ||||||
|  |         }).await.unwrap(); | ||||||
|  | 
 | ||||||
|  |     assert!(wrapped_item.item.as_client_bytes() == [0x01,0x03,0x00,0x00,0x40,0x05,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]); | ||||||
|  | 
 | ||||||
|  |     let mut inventory = Vec::<item::ItemEntity>::new(); | ||||||
|  |     inventory.push(wrapped_item.into()); | ||||||
|  |     entity_gateway.set_character_inventory(&char1.id, &item::InventoryEntity::new(inventory)).await.unwrap(); | ||||||
|  | 
 | ||||||
|  |     let mut ship = Box::new(ShipServerState::builder() | ||||||
|  |         .gateway(entity_gateway.clone()) | ||||||
|  |         .build()); | ||||||
|  |     
 | ||||||
|  |     log_in_char(&mut ship, ClientId(1), "a1", "a").await; | ||||||
|  |     join_lobby(&mut ship, ClientId(1)).await; | ||||||
|  |     create_room(&mut ship, ClientId(1), "room", "").await; | ||||||
|  | 
 | ||||||
|  |     ship.handle(ClientId(1), &RecvShipPacket::Message(Message::new(GameMessage::PlayerUseItem(PlayerUseItem { | ||||||
|  |         client: 0, | ||||||
|  |         target: 0, | ||||||
|  |         item_id: 0x10000, | ||||||
|  |     })))).await.unwrap().for_each(drop); | ||||||
|  | 
 | ||||||
|  |     let inventory_items = entity_gateway.get_character_inventory(&char1.id).await.unwrap(); | ||||||
|  | 
 | ||||||
|  |     inventory_items.items[0].with_individual(|item| { | ||||||
|  |         match &item.item { | ||||||
|  |             item::ItemDetail::Unit(unit) => { | ||||||
|  |                 assert!(unit.as_bytes() == [0x01,0x03,0x00,0x00,0x00,0x00,0xFE,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]); | ||||||
|  |             }, | ||||||
|  |             _ => panic!(), | ||||||
|  |         } | ||||||
|  |     }).unwrap(); | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| // mag cells are covered in test_mags.rs
 | // mag cells are covered in test_mags.rs
 | ||||||
| #[async_std::test] | #[async_std::test] | ||||||
| async fn test_unwrap_mag() {} | async fn test_unwrap_mag() { | ||||||
|  |     let mut entity_gateway = InMemoryGateway::new(); | ||||||
|  | 
 | ||||||
|  |     let (_user1, char1) = new_user_character(&mut entity_gateway, "a1", "a").await; | ||||||
|  | 
 | ||||||
|  |     let wrapped_item = entity_gateway.create_item( | ||||||
|  |         item::NewItemEntity { | ||||||
|  |             item: item::ItemDetail::Mag(item::mag::Mag::wrapped_baby_mag(12)), //turquoise
 | ||||||
|  |             location: item::ItemLocation::Inventory{ | ||||||
|  |                 character_id: char1.id, | ||||||
|  |             } | ||||||
|  |         }).await.unwrap(); | ||||||
|  | 
 | ||||||
|  |     assert!(wrapped_item.item.as_client_bytes() == [0x02,0x00,0x00,0x00,0xF4,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x40,0x0C]); // item maker is wrong?
 | ||||||
|  | 
 | ||||||
|  |     let mut inventory = Vec::<item::ItemEntity>::new(); | ||||||
|  |     inventory.push(wrapped_item.into()); | ||||||
|  |     entity_gateway.set_character_inventory(&char1.id, &item::InventoryEntity::new(inventory)).await.unwrap(); | ||||||
|  | 
 | ||||||
|  |     let mut ship = Box::new(ShipServerState::builder() | ||||||
|  |         .gateway(entity_gateway.clone()) | ||||||
|  |         .build()); | ||||||
|  |     
 | ||||||
|  |     log_in_char(&mut ship, ClientId(1), "a1", "a").await; | ||||||
|  |     join_lobby(&mut ship, ClientId(1)).await; | ||||||
|  |     create_room(&mut ship, ClientId(1), "room", "").await; | ||||||
|  | 
 | ||||||
|  |     ship.handle(ClientId(1), &RecvShipPacket::Message(Message::new(GameMessage::PlayerUseItem(PlayerUseItem { | ||||||
|  |         client: 0, | ||||||
|  |         target: 0, | ||||||
|  |         item_id: 0x10000, | ||||||
|  |     })))).await.unwrap().for_each(drop); | ||||||
|  | 
 | ||||||
|  |     let inventory_items = entity_gateway.get_character_inventory(&char1.id).await.unwrap(); | ||||||
|  | 
 | ||||||
|  |     inventory_items.items[0].with_individual(|item| { | ||||||
|  |         match &item.item { | ||||||
|  |             item::ItemDetail::Mag(mag) => { | ||||||
|  |                 assert!(mag.as_bytes() == [0x02,0x00,0x00,0x00,0xF4,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x0C]); | ||||||
|  |             }, | ||||||
|  |             _ => panic!(), | ||||||
|  |         } | ||||||
|  |     }).unwrap(); | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| // TODO: implement wrapping packet (gallons shop quest)
 | // TODO: implement wrapping packet (gallons shop quest)
 | ||||||
| // wrap presents
 | // wrap presents
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user