summaryrefslogtreecommitdiff
path: root/ecs
diff options
context:
space:
mode:
Diffstat (limited to 'ecs')
-rw-r--r--ecs/tests/query.rs57
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],
+ );
+}