@@ -23,6 +23,8 @@ using namespace libscratchcpp;
2323
2424using ::testing::Return;
2525using ::testing::ReturnRef;
26+ using ::testing::Invoke;
27+ using ::testing::_;
2628
2729class RenderedTargetTest : public testing ::Test
2830{
@@ -1093,6 +1095,31 @@ TEST_F(RenderedTargetTest, TouchingColor)
10931095 sprite2->setLayerOrder (3 );
10941096
10951097 const std::vector<std::shared_ptr<Target>> targets = { stage, sprite, sprite1 };
1098+ EXPECT_CALL (engine, getVisibleTargets (_)).WillRepeatedly (Invoke ([&targets](std::vector<Target *> &dst) {
1099+ dst.clear ();
1100+
1101+ for (auto target : targets) {
1102+ ASSERT_TRUE (target);
1103+
1104+ if (target->isStage ())
1105+ dst.push_back (target.get ());
1106+ else {
1107+ Sprite *sprite = static_cast <Sprite *>(target.get ());
1108+
1109+ if (sprite->visible ())
1110+ dst.push_back (target.get ());
1111+
1112+ const auto &clones = sprite->clones ();
1113+
1114+ for (auto clone : clones) {
1115+ if (clone->visible ())
1116+ dst.push_back (clone.get ());
1117+ }
1118+ }
1119+ }
1120+
1121+ std::sort (dst.begin (), dst.end (), [](Target *t1, Target *t2) { return t1->layerOrder () > t2->layerOrder (); });
1122+ }));
10961123
10971124 QQuickItem parent;
10981125 parent.setWidth (480 );
@@ -1128,7 +1155,6 @@ TEST_F(RenderedTargetTest, TouchingColor)
11281155 target.beforeRedraw ();
11291156
11301157 Rect penBounds (5 , 1 , 6 , -5 );
1131- EXPECT_CALL (engine, targets ()).WillRepeatedly (ReturnRef (targets));
11321158 EXPECT_CALL (stageTarget, stageModel ()).WillRepeatedly (Return (&stageModel));
11331159 EXPECT_CALL (target1, stageModel ()).WillRepeatedly (Return (nullptr ));
11341160 EXPECT_CALL (target2, stageModel ()).WillRepeatedly (Return (nullptr ));
0 commit comments