@@ -168,3 +168,55 @@ TEST_F(PenBlocksTest, PenDown_Stage)
168168 thread->run ();
169169 ASSERT_TRUE (model.penDown ());
170170}
171+
172+ TEST_F (PenBlocksTest, PenUp_Sprite)
173+ {
174+ auto sprite = std::make_shared<Sprite>();
175+ sprite->setEngine (&m_engineMock);
176+
177+ RenderedTarget renderedTarget;
178+ SpriteModel model;
179+ model.init (sprite.get ());
180+ model.setRenderedTarget (&renderedTarget);
181+ sprite->setInterface (&model);
182+
183+ ScriptBuilder builder (m_extension.get (), m_engine, sprite);
184+ builder.addBlock (" pen_penUp" );
185+
186+ auto thread = buildScript (builder, sprite.get ());
187+
188+ model.setPenDown (true );
189+
190+ EXPECT_CALL (m_engineMock, requestRedraw).Times (0 );
191+ thread->run ();
192+ ASSERT_FALSE (model.penDown ());
193+
194+ thread->run ();
195+ ASSERT_FALSE (model.penDown ());
196+ }
197+
198+ TEST_F (PenBlocksTest, PenUp_Stage)
199+ {
200+ auto stage = std::make_shared<Stage>();
201+ stage->setEngine (&m_engineMock);
202+
203+ RenderedTarget renderedTarget;
204+ StageModel model;
205+ model.init (stage.get ());
206+ model.setRenderedTarget (&renderedTarget);
207+ stage->setInterface (&model);
208+
209+ ScriptBuilder builder (m_extension.get (), m_engine, stage);
210+ builder.addBlock (" pen_penUp" );
211+
212+ auto thread = buildScript (builder, stage.get ());
213+
214+ model.setPenDown (true );
215+
216+ EXPECT_CALL (m_engineMock, requestRedraw).Times (0 );
217+ thread->run ();
218+ ASSERT_FALSE (model.penDown ());
219+
220+ thread->run ();
221+ ASSERT_FALSE (model.penDown ());
222+ }
0 commit comments