@@ -4643,7 +4643,7 @@ void Filter_filter_iter_2_or_same_type(void) {
46434643 ecs_fini (world );
46444644}
46454645
4646- void Filter_filter_or_w_wildcard (void ) {
4646+ void Filter_filter_iter_or_w_wildcard (void ) {
46474647 ecs_world_t * world = ecs_mini ();
46484648
46494649 ECS_TAG (world , Rel );
@@ -4687,6 +4687,68 @@ void Filter_filter_or_w_wildcard(void) {
46874687 ecs_fini (world );
46884688}
46894689
4690+ void Filter_filer_iter_or_w_component_and_tag (void ) {
4691+ ecs_world_t * world = ecs_mini ();
4692+
4693+ ECS_COMPONENT (world , Position );
4694+ ECS_TAG (world , TagA );
4695+
4696+ ecs_filter_t * q = ecs_filter (world , {
4697+ .terms = {
4698+ { ecs_id (Position ), .oper = EcsOr },
4699+ { TagA }
4700+ }
4701+ });
4702+
4703+ test_assert (q != NULL );
4704+
4705+ ecs_entity_t e = ecs_new_id (world );
4706+ ecs_set (world , e , Position , {10 , 20 });
4707+ ecs_add (world , e , TagA );
4708+
4709+ ecs_iter_t it = ecs_filter_iter (world , q );
4710+ test_bool (true, ecs_filter_next (& it ));
4711+ test_int (1 , it .count );
4712+ test_uint (e , it .entities [0 ]);
4713+ test_uint (ecs_id (Position ), ecs_field_id (& it , 1 ));
4714+ test_bool (false, ecs_filter_next (& it ));
4715+
4716+ ecs_filter_fini (q );
4717+
4718+ ecs_fini (world );
4719+ }
4720+
4721+ void Filter_filer_iter_or_w_tag_and_component (void ) {
4722+ ecs_world_t * world = ecs_mini ();
4723+
4724+ ECS_COMPONENT (world , Position );
4725+ ECS_TAG (world , TagA );
4726+
4727+ ecs_filter_t * q = ecs_filter (world , {
4728+ .terms = {
4729+ { TagA , .oper = EcsOr },
4730+ { ecs_id (Position ) }
4731+ }
4732+ });
4733+
4734+ test_assert (q != NULL );
4735+
4736+ ecs_entity_t e = ecs_new_id (world );
4737+ ecs_set (world , e , Position , {10 , 20 });
4738+ ecs_add (world , e , TagA );
4739+
4740+ ecs_iter_t it = ecs_filter_iter (world , q );
4741+ test_bool (true, ecs_filter_next (& it ));
4742+ test_int (1 , it .count );
4743+ test_uint (e , it .entities [0 ]);
4744+ test_uint (TagA , ecs_field_id (& it , 1 ));
4745+ test_bool (false, ecs_filter_next (& it ));
4746+
4747+ ecs_filter_fini (q );
4748+
4749+ ecs_fini (world );
4750+ }
4751+
46904752void Filter_filter_iter_2_or (void ) {
46914753 ecs_world_t * world = ecs_mini ();
46924754
0 commit comments