@@ -40,6 +40,7 @@ TEST_F(SensingBlocksTest, RegisterBlocks)
4040{
4141 // Blocks
4242 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " sensing_timer" , &SensingBlocks::compileTimer)).Times (1 );
43+ EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " sensing_resettimer" , &SensingBlocks::compileResetTimer)).Times (1 );
4344
4445 m_section->registerBlocks (&m_engineMock);
4546}
@@ -77,3 +78,36 @@ TEST_F(SensingBlocksTest, TimerImpl)
7778 ASSERT_EQ (vm.registerCount (), 1 );
7879 ASSERT_EQ (vm.getInput (0 , 1 )->toDouble (), 2.375 );
7980}
81+
82+ TEST_F (SensingBlocksTest, ResetTimer)
83+ {
84+ Compiler compiler (&m_engineMock);
85+
86+ auto block = std::make_shared<Block>(" a" , " sensing_resettimer" );
87+
88+ EXPECT_CALL (m_engineMock, functionIndex (&SensingBlocks::resetTimer)).WillOnce (Return (0 ));
89+
90+ compiler.init ();
91+ compiler.setBlock (block);
92+ SensingBlocks::compileResetTimer (&compiler);
93+ compiler.end ();
94+
95+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_EXEC, 0 , vm::OP_HALT }));
96+ }
97+
98+ TEST_F (SensingBlocksTest, ResetTimerImpl)
99+ {
100+ static unsigned int bytecode[] = { vm::OP_START, vm::OP_EXEC, 0 , vm::OP_HALT };
101+ static BlockFunc functions[] = { &SensingBlocks::resetTimer };
102+
103+ VirtualMachine vm (nullptr , &m_engineMock, nullptr );
104+ vm.setFunctions (functions);
105+
106+ EXPECT_CALL (m_engineMock, timer ()).WillOnce (Return (&m_timerMock));
107+ EXPECT_CALL (m_timerMock, reset ()).Times (1 );
108+
109+ vm.setBytecode (bytecode);
110+ vm.run ();
111+
112+ ASSERT_EQ (vm.registerCount (), 0 );
113+ }
0 commit comments