@@ -1241,3 +1241,95 @@ void OrderedChildren_get_ordered_children_from_stage(void) {
12411241
12421242 ecs_fini (world );
12431243}
1244+
1245+ void OrderedChildren_ordered_children_w_name (void ) {
1246+ ecs_world_t * world = ecs_mini ();
1247+
1248+ ecs_entity_t e = ecs_new_w_id (world , EcsPrefab );
1249+ ecs_add_id (world , e , EcsOrderedChildren );
1250+
1251+ ecs_entity (world , { .parent = e , .name = "a" });
1252+ ecs_entity (world , { .parent = e , .name = "b" });
1253+ ecs_entity (world , { .parent = e , .name = "c" });
1254+
1255+ ecs_entities_t children = ecs_get_ordered_children (world , e );
1256+ test_int (children .count , 3 );
1257+ test_str (ecs_get_name (world , children .ids [0 ]), "a" );
1258+ test_str (ecs_get_name (world , children .ids [1 ]), "b" );
1259+ test_str (ecs_get_name (world , children .ids [2 ]), "c" );
1260+
1261+ ecs_delete (world , e );
1262+
1263+ test_assert (ecs_lookup (world , "a" ) == 0 );
1264+ test_assert (ecs_lookup (world , "b" ) == 0 );
1265+ test_assert (ecs_lookup (world , "c" ) == 0 );
1266+
1267+ ecs_fini (world );
1268+ }
1269+
1270+ void OrderedChildren_get_ordered_children_from_prefab_instance_no_children (void ) {
1271+ ecs_world_t * world = ecs_mini ();
1272+
1273+ ecs_entity_t p = ecs_new_w_id (world , EcsPrefab );
1274+ ecs_add_id (world , p , EcsOrderedChildren );
1275+
1276+ ecs_entity_t i = ecs_new_w_pair (world , EcsIsA , p );
1277+ test_assert (ecs_has_id (world , i , EcsOrderedChildren ));
1278+
1279+ ecs_entities_t children = ecs_get_ordered_children (world , i );
1280+ test_int (children .count , 0 );
1281+
1282+ ecs_fini (world );
1283+ }
1284+
1285+ void OrderedChildren_get_ordered_children_from_prefab_instance_3_children (void ) {
1286+ ecs_world_t * world = ecs_mini ();
1287+
1288+ ecs_entity_t p = ecs_new_w_id (world , EcsPrefab );
1289+ ecs_add_id (world , p , EcsOrderedChildren );
1290+
1291+ ecs_entity (world , { .parent = p , .name = "a" });
1292+ ecs_entity (world , { .parent = p , .name = "b" });
1293+ ecs_entity (world , { .parent = p , .name = "c" });
1294+
1295+ ecs_entity_t i = ecs_new_w_pair (world , EcsIsA , p );
1296+ test_assert (ecs_has_id (world , i , EcsOrderedChildren ));
1297+
1298+ ecs_entities_t children = ecs_get_ordered_children (world , i );
1299+ test_int (children .count , 3 );
1300+ test_str (ecs_get_name (world , children .ids [0 ]), "a" );
1301+ test_str (ecs_get_name (world , children .ids [1 ]), "b" );
1302+ test_str (ecs_get_name (world , children .ids [2 ]), "c" );
1303+
1304+ ecs_fini (world );
1305+ }
1306+
1307+ void OrderedChildren_get_ordered_children_from_prefab_instance_nested_children (void ) {
1308+ ecs_world_t * world = ecs_mini ();
1309+
1310+ ecs_entity_t p = ecs_new_w_id (world , EcsPrefab );
1311+ ecs_add_id (world , p , EcsOrderedChildren );
1312+
1313+ ecs_entity (world , { .parent = p , .name = "a" });
1314+ ecs_entity (world , { .parent = p , .name = "b" });
1315+ ecs_entity_t c = ecs_entity (world , { .parent = p , .name = "c" });
1316+ ecs_add_id (world , c , EcsOrderedChildren );
1317+ ecs_entity (world , { .parent = c , .name = "x" });
1318+ ecs_entity (world , { .parent = c , .name = "y" });
1319+
1320+ ecs_entity_t i = ecs_new_w_pair (world , EcsIsA , p );
1321+ test_assert (ecs_has_id (world , i , EcsOrderedChildren ));
1322+
1323+ ecs_entities_t children = ecs_get_ordered_children (world , i );
1324+ test_int (children .count , 3 );
1325+ test_str (ecs_get_name (world , children .ids [0 ]), "a" );
1326+ test_str (ecs_get_name (world , children .ids [1 ]), "b" );
1327+ test_str (ecs_get_name (world , children .ids [2 ]), "c" );
1328+
1329+ ecs_entities_t grandchildren = ecs_get_ordered_children (world , children .ids [2 ]);
1330+ test_int (grandchildren .count , 2 );
1331+ test_str (ecs_get_name (world , grandchildren .ids [0 ]), "x" );
1332+ test_str (ecs_get_name (world , grandchildren .ids [1 ]), "y" );
1333+
1334+ ecs_fini (world );
1335+ }
0 commit comments