55#include < scratchcpp/variable.h>
66#include < scratchcpp/sprite.h>
77#include < enginemock.h>
8+ #include < clockmock.h>
89
910#include " ../common.h"
1011#include " blocks/controlblocks.h"
1112#include " blocks/operatorblocks.h"
1213#include " engine/internal/engine.h"
14+ #include " engine/internal/clock.h"
1315
1416using namespace libscratchcpp ;
1517
@@ -732,6 +734,11 @@ TEST_F(ControlBlocksTest, WaitImpl)
732734 vm.setConstValues (constValues);
733735 vm.setBytecode (bytecode);
734736
737+ ClockMock clock;
738+ ControlBlocks::clock = &clock;
739+
740+ std::chrono::steady_clock::time_point startTime (std::chrono::milliseconds (1000 ));
741+ EXPECT_CALL (clock, currentSteadyTime ()).Times (2 ).WillRepeatedly (Return (startTime));
735742 EXPECT_CALL (m_engineMock, lockFrame ()).Times (1 );
736743 EXPECT_CALL (m_engineMock, breakFrame ()).Times (1 );
737744 vm.run ();
@@ -740,18 +747,20 @@ TEST_F(ControlBlocksTest, WaitImpl)
740747 ASSERT_TRUE (ControlBlocks::m_timeMap.find (&vm) != ControlBlocks::m_timeMap.cend ());
741748 ASSERT_FALSE (vm.atEnd ());
742749
750+ std::chrono::steady_clock::time_point time1 (std::chrono::milliseconds (6450 ));
751+ EXPECT_CALL (clock, currentSteadyTime ()).WillOnce (Return (time1));
743752 EXPECT_CALL (m_engineMock, lockFrame ()).Times (1 );
744753 EXPECT_CALL (m_engineMock, breakFrame ()).Times (1 );
745- ControlBlocks::m_timeMap[&vm].first = std::chrono::steady_clock::now () - std::chrono::milliseconds (5250 );
746754 vm.run ();
747755
748756 ASSERT_EQ (vm.registerCount (), 0 );
749757 ASSERT_TRUE (ControlBlocks::m_timeMap.find (&vm) != ControlBlocks::m_timeMap.cend ());
750758 ASSERT_FALSE (vm.atEnd ());
751759
760+ std::chrono::steady_clock::time_point time2 (std::chrono::milliseconds (6500 ));
761+ EXPECT_CALL (clock, currentSteadyTime ()).WillOnce (Return (time2));
752762 EXPECT_CALL (m_engineMock, lockFrame ()).Times (1 );
753763 EXPECT_CALL (m_engineMock, breakFrame ()).Times (1 );
754- ControlBlocks::m_timeMap[&vm].first = std::chrono::steady_clock::now () - std::chrono::milliseconds (5500 );
755764 vm.run ();
756765
757766 ASSERT_EQ (vm.registerCount (), 0 );
@@ -765,6 +774,8 @@ TEST_F(ControlBlocksTest, WaitImpl)
765774 ASSERT_EQ (vm.registerCount (), 0 );
766775 ASSERT_TRUE (ControlBlocks::m_timeMap.find (&vm) == ControlBlocks::m_timeMap.cend ());
767776 ASSERT_TRUE (vm.atEnd ());
777+
778+ ControlBlocks::clock = Clock::instance ().get ();
768779}
769780
770781TEST_F (ControlBlocksTest, WaitUntil)
0 commit comments