33#include < scratchcpp/input.h>
44#include < scratchcpp/field.h>
55#include < scratchcpp/list.h>
6+ #include < scratchcpp/sprite.h>
67#include < scratchcpp/stage.h>
78#include < scratchcpp/monitor.h>
89#include < enginemock.h>
@@ -498,8 +499,12 @@ TEST_F(ListBlocksTest, ShowListImpl)
498499 Stage stage;
499500 stage.addList (list1);
500501
501- Target target;
502- target.addList (list2);
502+ Sprite sprite;
503+ sprite.addList (list2);
504+
505+ Engine fakeEngine;
506+ sprite.setEngine (&fakeEngine);
507+ auto clone = sprite.clone ();
503508
504509 // Global
505510 VirtualMachine vm1 (&stage, &m_engineMock, nullptr );
@@ -526,7 +531,7 @@ TEST_F(ListBlocksTest, ShowListImpl)
526531 monitor1.setVisible (false );
527532
528533 // Local
529- VirtualMachine vm2 (&target , &m_engineMock, nullptr );
534+ VirtualMachine vm2 (&sprite , &m_engineMock, nullptr );
530535 vm2.setBytecode (bytecode3);
531536 vm2.setFunctions (functions);
532537 vm2.setConstValues (constValues);
@@ -543,6 +548,26 @@ TEST_F(ListBlocksTest, ShowListImpl)
543548 ASSERT_EQ (vm2.registerCount (), 0 );
544549 ASSERT_FALSE (monitor1.visible ());
545550 ASSERT_TRUE (monitor2.visible ());
551+
552+ // Local - clone
553+ monitor2.setVisible (false );
554+ VirtualMachine vm3 (clone.get (), &m_engineMock, nullptr );
555+ vm3.setBytecode (bytecode3);
556+ vm3.setFunctions (functions);
557+ vm3.setConstValues (constValues);
558+ vm3.run ();
559+
560+ ASSERT_EQ (vm3.registerCount (), 0 );
561+ ASSERT_FALSE (monitor1.visible ());
562+ ASSERT_FALSE (monitor2.visible ());
563+
564+ vm3.reset ();
565+ vm3.setBytecode (bytecode4);
566+ vm3.run ();
567+
568+ ASSERT_EQ (vm3.registerCount (), 0 );
569+ ASSERT_FALSE (monitor1.visible ());
570+ ASSERT_TRUE (monitor2.visible ());
546571}
547572
548573TEST_F (ListBlocksTest, HideList)
@@ -601,8 +626,12 @@ TEST_F(ListBlocksTest, HideListImpl)
601626 Stage stage;
602627 stage.addList (list1);
603628
604- Target target;
605- target.addList (list2);
629+ Sprite sprite;
630+ sprite.addList (list2);
631+
632+ Engine fakeEngine;
633+ sprite.setEngine (&fakeEngine);
634+ auto clone = sprite.clone ();
606635
607636 // Global
608637 VirtualMachine vm1 (&stage, &m_engineMock, nullptr );
@@ -629,7 +658,7 @@ TEST_F(ListBlocksTest, HideListImpl)
629658 monitor1.setVisible (true );
630659
631660 // Local
632- VirtualMachine vm2 (&target , &m_engineMock, nullptr );
661+ VirtualMachine vm2 (&sprite , &m_engineMock, nullptr );
633662 vm2.setBytecode (bytecode3);
634663 vm2.setFunctions (functions);
635664 vm2.setConstValues (constValues);
@@ -646,4 +675,24 @@ TEST_F(ListBlocksTest, HideListImpl)
646675 ASSERT_EQ (vm2.registerCount (), 0 );
647676 ASSERT_TRUE (monitor1.visible ());
648677 ASSERT_FALSE (monitor2.visible ());
678+
679+ // Local - clone
680+ monitor2.setVisible (true );
681+ VirtualMachine vm3 (clone.get (), &m_engineMock, nullptr );
682+ vm3.setBytecode (bytecode3);
683+ vm3.setFunctions (functions);
684+ vm3.setConstValues (constValues);
685+ vm3.run ();
686+
687+ ASSERT_EQ (vm3.registerCount (), 0 );
688+ ASSERT_TRUE (monitor1.visible ());
689+ ASSERT_TRUE (monitor2.visible ());
690+
691+ vm3.reset ();
692+ vm3.setBytecode (bytecode4);
693+ vm3.run ();
694+
695+ ASSERT_EQ (vm3.registerCount (), 0 );
696+ ASSERT_TRUE (monitor1.visible ());
697+ ASSERT_FALSE (monitor2.visible ());
649698}
0 commit comments