33#include < scratchcpp/input.h>
44#include < scratchcpp/field.h>
55#include < scratchcpp/variable.h>
6+ #include < scratchcpp/sprite.h>
67#include < scratchcpp/stage.h>
78#include < scratchcpp/monitor.h>
89#include < enginemock.h>
@@ -271,8 +272,12 @@ TEST_F(VariableBlocksTest, ShowVariableImpl)
271272 Stage stage;
272273 stage.addVariable (var1);
273274
274- Target target;
275- target.addVariable (var2);
275+ Sprite sprite;
276+ sprite.addVariable (var2);
277+
278+ Engine fakeEngine;
279+ sprite.setEngine (&fakeEngine);
280+ auto clone = sprite.clone ();
276281
277282 // Global
278283 VirtualMachine vm1 (&stage, &m_engineMock, nullptr );
@@ -299,7 +304,7 @@ TEST_F(VariableBlocksTest, ShowVariableImpl)
299304 monitor1.setVisible (false );
300305
301306 // Local
302- VirtualMachine vm2 (&target , &m_engineMock, nullptr );
307+ VirtualMachine vm2 (&sprite , &m_engineMock, nullptr );
303308 vm2.setBytecode (bytecode3);
304309 vm2.setFunctions (functions);
305310 vm2.setConstValues (constValues);
@@ -316,6 +321,26 @@ TEST_F(VariableBlocksTest, ShowVariableImpl)
316321 ASSERT_EQ (vm2.registerCount (), 0 );
317322 ASSERT_FALSE (monitor1.visible ());
318323 ASSERT_TRUE (monitor2.visible ());
324+
325+ // Local - clone
326+ monitor2.setVisible (false );
327+ VirtualMachine vm3 (clone.get (), &m_engineMock, nullptr );
328+ vm3.setBytecode (bytecode3);
329+ vm3.setFunctions (functions);
330+ vm3.setConstValues (constValues);
331+ vm3.run ();
332+
333+ ASSERT_EQ (vm3.registerCount (), 0 );
334+ ASSERT_FALSE (monitor1.visible ());
335+ ASSERT_FALSE (monitor2.visible ());
336+
337+ vm3.reset ();
338+ vm3.setBytecode (bytecode4);
339+ vm3.run ();
340+
341+ ASSERT_EQ (vm3.registerCount (), 0 );
342+ ASSERT_FALSE (monitor1.visible ());
343+ ASSERT_TRUE (monitor2.visible ());
319344}
320345
321346TEST_F (VariableBlocksTest, HideVariable)
@@ -374,8 +399,12 @@ TEST_F(VariableBlocksTest, HideVariableImpl)
374399 Stage stage;
375400 stage.addVariable (var1);
376401
377- Target target;
378- target.addVariable (var2);
402+ Sprite sprite;
403+ sprite.addVariable (var2);
404+
405+ Engine fakeEngine;
406+ sprite.setEngine (&fakeEngine);
407+ auto clone = sprite.clone ();
379408
380409 // Global
381410 VirtualMachine vm1 (&stage, &m_engineMock, nullptr );
@@ -402,7 +431,7 @@ TEST_F(VariableBlocksTest, HideVariableImpl)
402431 monitor1.setVisible (true );
403432
404433 // Local
405- VirtualMachine vm2 (&target , &m_engineMock, nullptr );
434+ VirtualMachine vm2 (&sprite , &m_engineMock, nullptr );
406435 vm2.setBytecode (bytecode3);
407436 vm2.setFunctions (functions);
408437 vm2.setConstValues (constValues);
@@ -419,4 +448,24 @@ TEST_F(VariableBlocksTest, HideVariableImpl)
419448 ASSERT_EQ (vm2.registerCount (), 0 );
420449 ASSERT_TRUE (monitor1.visible ());
421450 ASSERT_FALSE (monitor2.visible ());
451+
452+ // Local - clone
453+ monitor2.setVisible (true );
454+ VirtualMachine vm3 (clone.get (), &m_engineMock, nullptr );
455+ vm3.setBytecode (bytecode3);
456+ vm3.setFunctions (functions);
457+ vm3.setConstValues (constValues);
458+ vm3.run ();
459+
460+ ASSERT_EQ (vm3.registerCount (), 0 );
461+ ASSERT_TRUE (monitor1.visible ());
462+ ASSERT_TRUE (monitor2.visible ());
463+
464+ vm3.reset ();
465+ vm3.setBytecode (bytecode4);
466+ vm3.run ();
467+
468+ ASSERT_EQ (vm3.registerCount (), 0 );
469+ ASSERT_TRUE (monitor1.visible ());
470+ ASSERT_FALSE (monitor2.visible ());
422471}
0 commit comments