@@ -619,6 +619,39 @@ TEST(TargetTest, TouchingSprite)
619619 })));
620620 ASSERT_TRUE (target.touchingSprite (clone2.get ()));
621621 ASSERT_EQ (clones, actualClones);
622+
623+ // Pass an invisible sprite
624+ clone2->setVisible (false );
625+ clones.erase (clones.begin () + 2 );
626+ EXPECT_CALL (target, touchingClones (_)).WillOnce (WithArgs<0 >(Invoke ([&clones, &actualClones](const std::vector<Sprite *> &candidates) {
627+ actualClones = candidates;
628+ return true ;
629+ })));
630+ ASSERT_TRUE (target.touchingSprite (clone2.get ()));
631+ ASSERT_EQ (clones, actualClones);
632+
633+ EXPECT_CALL (target, touchingClones (_)).WillOnce (WithArgs<0 >(Invoke ([&clones, &actualClones](const std::vector<Sprite *> &candidates) {
634+ actualClones = candidates;
635+ return true ;
636+ })));
637+ ASSERT_TRUE (target.touchingSprite (&sprite));
638+ ASSERT_EQ (clones, actualClones);
639+
640+ sprite.setVisible (false );
641+ clones.erase (clones.begin ());
642+ EXPECT_CALL (target, touchingClones (_)).WillOnce (WithArgs<0 >(Invoke ([&clones, &actualClones](const std::vector<Sprite *> &candidates) {
643+ actualClones = candidates;
644+ return true ;
645+ })));
646+ ASSERT_TRUE (target.touchingSprite (clone3.get ()));
647+ ASSERT_EQ (clones, actualClones);
648+
649+ EXPECT_CALL (target, touchingClones (_)).WillOnce (WithArgs<0 >(Invoke ([&clones, &actualClones](const std::vector<Sprite *> &candidates) {
650+ actualClones = candidates;
651+ return true ;
652+ })));
653+ ASSERT_TRUE (target.touchingSprite (&sprite));
654+ ASSERT_EQ (clones, actualClones);
622655}
623656
624657TEST (TargetTest, TouchingPoint)
0 commit comments