Skip to content

Commit 7d9df09

Browse files
committed
make system queries work
1 parent 07199cb commit 7d9df09

File tree

8 files changed

+182
-83
lines changed

8 files changed

+182
-83
lines changed

assets/tests/add_system/system_with_parameters__RETURNS.lua

+9-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ function on_test()
2121
post_update_schedule,
2222
system_builder("my_parameterised_system", script_id)
2323
:resource(ResourceTypeA)
24-
:query(world.query():component(ComponentA):with(ComponentB))
24+
:query(world.query():component(ComponentA):component(ComponentB))
2525
:resource(ResourceTypeB)
2626
)
2727

@@ -39,6 +39,14 @@ function my_parameterised_system(resourceA,query,resourceB)
3939
assert(#resourceA.bytes == 6, "Expected 6 bytes, got: " .. #resourceA.bytes)
4040
assert(resourceB.string == "Initial Value", "Expected 'Initial Value', got: " .. resourceB.string)
4141
assert(#query == 2, "Expected 3 results, got: " .. #query)
42+
for i,result in pairs(query) do
43+
components = result:components()
44+
assert(#components == 2, "Expected 2 components, got " .. #components)
45+
local componentA = components[1]
46+
local componentB = components[2]
47+
assert(componentA._1 == "Default", "Expected 'Default', got: " .. componentA._1)
48+
assert(componentB._1 == "Default", "Expected 'Default', got: " .. componentA._1)
49+
end
4250
end
4351

4452

assets/tests/add_system/system_with_parameters__RETURNS.rhai

+7
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@ fn my_parameterised_system(resourceA, query, resourceB) {
3737
assert(resourceA.bytes.len() == 6, "Expected 6 bytes, got: " + resourceA.bytes.len());
3838
assert(resourceB.string == "Initial Value", "Expected 'Initial Value', got: " + resourceB.string);
3939
assert(query.len() == 2, "Expected 3 results, got: " + query.len());
40+
for result in query {
41+
components = result.components.call();
42+
let componentA = components[0];
43+
let componentB = components[1];
44+
assert(componentA["_0"] == "Default", "Expected 'Default', got: " + componentA["_0"]);
45+
assert(componentB["_0"] == "Default", "Expected 'Default', got: " + componentB["_0"]);
46+
}
4047
}
4148

4249
fn on_test_post_update() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
local entity_a = world.spawn()
2+
3+
local componentA = world.get_type_by_name("CompWithFromWorldAndComponentData")
4+
local componentB = world.get_type_by_name("CompWithDefaultAndComponentData")
5+
local componentC = world.get_type_by_name("TestComponent")
6+
7+
world.add_default_component(entity_a, componentA)
8+
world.add_default_component(entity_a, componentB)
9+
world.insert_component(entity_a, componentC, construct(componentC, {
10+
strings = { [1] = "asd" }
11+
}))
12+
13+
local query_result = world.query():component(componentA):component(componentA):component(componentC):build()
14+
15+
assert(#query_result == 1, "Expected 1 result, got " .. #query_result)
16+
for i,result in pairs(query_result) do
17+
assert(result:entity():index() == entity_a:index(), "Expected entity_a, got " .. result:entity():index())
18+
components = result:components()
19+
assert(#components == 3, "Expected 3 components, got " .. #components)
20+
A = components[1]
21+
B = components[2]
22+
C = components[3]
23+
assert(A._1 == "Default", "Expected 'Default', got: " .. A._1)
24+
assert(B._1 == "Default", "Expected 'Default', got: " .. B._1)
25+
assert(C.strings[1] == "asd", "Expected 'asd', got: " .. C.strings[1])
26+
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
let entity_a = world.spawn_.call();
2+
let componentA = world.get_type_by_name.call("CompWithFromWorldAndComponentData");
3+
let componentB = world.get_type_by_name.call("CompWithDefaultAndComponentData");
4+
let componentC = world.get_type_by_name.call("TestComponent");
5+
6+
world.add_default_component.call(entity_a, componentA);
7+
world.add_default_component.call(entity_a, componentB);
8+
world.insert_component.call(entity_a, componentC, construct.call(componentC, #{
9+
strings: ["asd"]
10+
}));
11+
12+
let query_result = world.query.call().component.call(componentA).component.call(componentA).component.call(componentC).build.call();
13+
14+
assert(query_result.len == 1, "Expected 1 result, got " + query_result.len);
15+
for (result, i) in query_result {
16+
assert(result.entity.call().index.call() == entity_a.index.call(), "Expected entity_a, got " + result.entity.call().index.call());
17+
let components = result.components.call();
18+
assert(components.len == 3, "Expected 3 components, got " + components.len);
19+
let A = components[0];
20+
let B = components[1];
21+
let C = components[2];
22+
assert(A["_0"] == "Default", "Expected 'Default', got: " + A["_0"]);
23+
assert(B["_0"] == "Default", "Expected 'Default', got: " + B["_0"]);
24+
assert(C.strings[0] == "asd", "Expected 'asd', got: " + C.strings[0]);
25+
}

0 commit comments

Comments
 (0)