diff options
-rw-r--r-- | ecs/tests/query.rs | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/ecs/tests/query.rs b/ecs/tests/query.rs index 062fd5a..8615e3a 100644 --- a/ecs/tests/query.rs +++ b/ecs/tests/query.rs @@ -1,4 +1,5 @@ use ecs::component::Component; +use ecs::pair::{Pair, Wildcard}; use ecs::query::term::Without; use ecs::query::{ TermWithFieldTuple as QueryTermWithFieldTuple, @@ -320,3 +321,59 @@ fn query_without_comp_and_archetype_nonexistant() vec![ent_1_id, ent_2_id], ); } + +#[test] +fn query_with_wildcard_target_pair() +{ + setup(); + + let _test_lock = TEST_LOCK.lock(); + + let mut world = World::new(); + + let ent_1_id = world.create_entity((A, C)); + + world.create_entity((B,)); + + let ent_2_id = world.create_entity((B, Pair::new::<G>(ent_1_id))); + + world.create_entity((B, Pair::new::<F>(ent_1_id))); + world.create_entity((B, A, C, Pair::new::<F>(ent_1_id))); + + let ent_3_id = world.create_entity((B, Pair::new::<G>(ent_2_id))); + + let ent_4_id = world.create_entity((B, E, Pair::new_with_comp_target::<G>(D))); + + assert_query_finds_ents( + world.query::<(&B, Pair<G, Wildcard>), ()>(), + vec![ent_2_id, ent_3_id, ent_4_id], + ); +} + +#[test] +fn query_with_component_target_pair() +{ + setup(); + + let _test_lock = TEST_LOCK.lock(); + + let mut world = World::new(); + + let ent_1_id = world.create_entity((A, C)); + + world.create_entity((B,)); + + world.create_entity((B, Pair::new::<G>(ent_1_id))); + + world.create_entity((B, Pair::new::<F>(ent_1_id))); + world.create_entity((B, A, C, Pair::new::<F>(ent_1_id))); + + let ent_2_id = world.create_entity((B, Pair::new_with_comp_target::<G>(F))); + + let ent_3_id = world.create_entity((B, E, Pair::new_with_comp_target::<G>(F))); + + assert_query_finds_ents( + world.query::<(&B, Pair<G, &F>), ()>(), + vec![ent_2_id, ent_3_id], + ); +} |