Skip to content

Commit e982ae1

Browse files
committed
Add test that repros observer cache invalidation
1 parent b87d468 commit e982ae1

3 files changed

Lines changed: 29 additions & 2 deletions

File tree

test/core/project.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -964,7 +964,8 @@
964964
"defer_remove_set_parent_different_stages_w_observer",
965965
"defer_reparent_to_deleted_parent",
966966
"delete_mixed_tree_1",
967-
"delete_mixed_tree_2"
967+
"delete_mixed_tree_2",
968+
"delete_mixed_tree_3"
968969
]
969970
}, {
970971
"id": "Hierarchies",

test/core/src/NonFragmentingChildOf.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5770,3 +5770,24 @@ void NonFragmentingChildOf_delete_mixed_tree_2(void) {
57705770

57715771
ecs_fini(world);
57725772
}
5773+
5774+
void NonFragmentingChildOf_delete_mixed_tree_3(void) {
5775+
ecs_world_t *world = ecs_init(); // using ecs_init vs. ecs_mini causes a crash
5776+
5777+
ecs_entity_t root = ecs_new(world);
5778+
ecs_entity_t prefab = ecs_new_w_id(world, EcsPrefab);
5779+
5780+
ecs_entity_t parent = ecs_new(world);
5781+
ecs_set(world, parent, EcsParent, {root});
5782+
ecs_add_pair(world, parent, EcsIsA, prefab);
5783+
5784+
ecs_entity_t child_a = ecs_new(world);
5785+
ecs_add_pair(world, child_a, EcsChildOf, parent);
5786+
5787+
ecs_entity_t child_b = ecs_new(world);
5788+
ecs_set(world, child_b, EcsParent, {parent});
5789+
5790+
ecs_delete(world, root);
5791+
5792+
ecs_fini(world);
5793+
}

test/core/src/main.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -933,6 +933,7 @@ void NonFragmentingChildOf_defer_remove_set_parent_different_stages_w_observer(v
933933
void NonFragmentingChildOf_defer_reparent_to_deleted_parent(void);
934934
void NonFragmentingChildOf_delete_mixed_tree_1(void);
935935
void NonFragmentingChildOf_delete_mixed_tree_2(void);
936+
void NonFragmentingChildOf_delete_mixed_tree_3(void);
936937

937938
// Testsuite 'Hierarchies'
938939
void Hierarchies_setup(void);
@@ -6823,6 +6824,10 @@ bake_test_case NonFragmentingChildOf_testcases[] = {
68236824
{
68246825
"delete_mixed_tree_2",
68256826
NonFragmentingChildOf_delete_mixed_tree_2
6827+
},
6828+
{
6829+
"delete_mixed_tree_3",
6830+
NonFragmentingChildOf_delete_mixed_tree_3
68266831
}
68276832
};
68286833

@@ -15735,7 +15740,7 @@ static bake_test_suite suites[] = {
1573515740
"NonFragmentingChildOf",
1573615741
NULL,
1573715742
NULL,
15738-
227,
15743+
228,
1573915744
NonFragmentingChildOf_testcases
1574015745
},
1574115746
{

0 commit comments

Comments
 (0)