summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2025-08-21 17:48:08 +0200
committerHampusM <hampus@hampusmat.com>2025-08-21 17:48:08 +0200
commitc8d3b211b8328452c9d15955004030430a99d1fc (patch)
treeacf6869701ba3e70b339c34bbc2cd445a466961f
parent29ee29b3887773e36fb7ad55ab44392dae7f8412 (diff)
test(ecs): add query with pair tests
-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],
+ );
+}