@@ -10,6 +10,9 @@ using namespace scratchcpprender;
1010using namespace libscratchcpp ;
1111
1212using ::testing::Return;
13+ using ::testing::WithArgs;
14+ using ::testing::Invoke;
15+ using ::testing::_;
1316
1417TEST (StageModelTest, Constructors)
1518{
@@ -108,6 +111,32 @@ TEST(StageModelTest, OnBubbleTextChanged)
108111 ASSERT_EQ (spy.count (), 2 );
109112}
110113
114+ TEST (SpriteModelTest, TouchingClones)
115+ {
116+ StageModel model;
117+
118+ RenderedTargetMock renderedTarget;
119+ model.setRenderedTarget (&renderedTarget);
120+
121+ Sprite clone1, clone2;
122+ std::vector<Sprite *> clones = { &clone1, &clone2 };
123+ std::vector<Sprite *> actualClones;
124+
125+ EXPECT_CALL (renderedTarget, touchingClones (_)).WillOnce (WithArgs<0 >(Invoke ([&actualClones](const std::vector<Sprite *> &candidates) {
126+ actualClones = candidates;
127+ return false ;
128+ })));
129+ ASSERT_FALSE (model.touchingClones (clones));
130+ ASSERT_EQ (actualClones, clones);
131+
132+ EXPECT_CALL (renderedTarget, touchingClones (_)).WillOnce (WithArgs<0 >(Invoke ([&actualClones](const std::vector<Sprite *> &candidates) {
133+ actualClones = candidates;
134+ return true ;
135+ })));
136+ ASSERT_TRUE (model.touchingClones (clones));
137+ ASSERT_EQ (actualClones, clones);
138+ }
139+
111140TEST (StageModelTest, TouchingPoint)
112141{
113142 StageModel model;
0 commit comments