tests: Added more tests

- Added 2 more tests related to item moving
- Refactored inventory tests internals
This commit is contained in:
Alexey 2026-03-07 19:47:21 +03:00
commit 13dd936044

View file

@ -113,10 +113,10 @@ mod inventory {
} }
#[derive(Resource)] #[derive(Resource)]
struct Items(Vec<Item>, usize); struct Items(Vec<Item>, usize, bool);
#[derive(Component)] #[derive(Component)]
struct MovableItem(UVec2); struct MovableItem(UVec2, bool);
fn insert_item( fn insert_item(
mut commands: Commands, mut commands: Commands,
@ -129,28 +129,12 @@ mod inventory {
let q_pos = item.position.unwrap(); let q_pos = item.position.unwrap();
let (entity, inventory, children) = inventory_query.single().unwrap(); let (entity, inventory, children) = inventory_query.single().unwrap();
if let Some(children) = children { if let Some(children) = children {
println!("{q_size} {q_pos}"); if items.2 {
assert!(inventory.can_fit(item_query, children, q_size, q_pos)); assert!(inventory.can_fit(item_query, children, q_size, q_pos));
} } else {
let item_entity = commands.spawn(item.clone()).id();
commands.entity(entity).add_child(item_entity);
items.1 += 1;
}
fn failed_insert_item(
mut commands: Commands,
mut items: ResMut<Items>,
item_query: Query<&Item>,
inventory_query: Query<(Entity, &Inventory, Option<&Children>)>
) {
let item = &items.0[items.1];
let q_size = item.size;
let q_pos = item.position.unwrap();
let (entity, inventory, children) = inventory_query.single().unwrap();
if let Some(children) = children {
println!("{q_size} {q_pos}");
assert!(!inventory.can_fit(item_query, children, q_size, q_pos)); assert!(!inventory.can_fit(item_query, children, q_size, q_pos));
} }
}
let item_entity = commands.spawn(item.clone()).id(); let item_entity = commands.spawn(item.clone()).id();
commands.entity(entity).add_child(item_entity); commands.entity(entity).add_child(item_entity);
items.1 += 1; items.1 += 1;
@ -162,8 +146,12 @@ mod inventory {
movable_item: Query<(Entity, &MovableItem)>, movable_item: Query<(Entity, &MovableItem)>,
) { ) {
let (inventory, children) = inventory_query.single().unwrap(); let (inventory, children) = inventory_query.single().unwrap();
let (movable_item, MovableItem(query_pos)) = movable_item.single().unwrap(); let (movable_item, MovableItem(query_pos, assertion)) = movable_item.single().unwrap();
if *assertion {
assert!(inventory.can_move(item_query, children, movable_item, *query_pos)); assert!(inventory.can_move(item_query, children, movable_item, *query_pos));
} else {
assert!(!inventory.can_move(item_query, children, movable_item, *query_pos));
}
} }
#[test] #[test]
@ -172,7 +160,7 @@ mod inventory {
let system = world.register_system(insert_item); let system = world.register_system(insert_item);
world.insert_resource(Items(vec![item_a(), item_b(), item_c(), item_d()], 0)); world.insert_resource(Items(vec![item_a(), item_b(), item_c(), item_d()], 0, true));
world.spawn(inventory()); world.spawn(inventory());
@ -185,9 +173,9 @@ mod inventory {
fn items_e_f_g_do_not_fit() { fn items_e_f_g_do_not_fit() {
let mut world = World::new(); let mut world = World::new();
let system = world.register_system(failed_insert_item); let system = world.register_system(insert_item);
world.insert_resource(Items(vec![item_e(), item_f(), item_g()], 0)); world.insert_resource(Items(vec![item_e(), item_f(), item_g()], 0, false));
world.spawn(inventory()) world.spawn(inventory())
.with_child(item_a()) .with_child(item_a())
@ -207,10 +195,39 @@ mod inventory {
let system = world.register_system(try_to_move); let system = world.register_system(try_to_move);
world.spawn(inventory()) world.spawn(inventory())
.with_child((item_a(), MovableItem(UVec2::new(3, 2)))) .with_child((item_a(), MovableItem(UVec2::new(3, 2), true)))
.with_child(item_b()) .with_child(item_b())
.with_child(item_c()); .with_child(item_c());
world.run_system(system).expect("Error on running system"); world.run_system(system).expect("Error on running system");
} }
#[test]
fn cannot_move_item() {
let mut world = World::new();
let system = world.register_system(try_to_move);
world.spawn(inventory())
.with_child((item_a(), MovableItem(UVec2::new(3, 2), false)))
.with_child(item_b())
.with_child(item_c())
.with_child(item_d());
world.run_system(system).expect("Error on running system");
}
#[test]
fn move_item_slightly() {
let mut world = World::new();
let system = world.register_system(try_to_move);
world.spawn(inventory())
.with_child((item_a(), MovableItem(UVec2::new(0, 1), true)))
.with_child(item_c())
.with_child(item_d());
world.run_system(system).expect("Error on running system");
}
} }