@@ -99,6 +99,7 @@ TEST_F(SensingBlocksTest, RegisterBlocks)
9999 // Blocks
100100 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " sensing_distanceto" , &SensingBlocks::compileDistanceTo));
101101 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " sensing_keypressed" , &SensingBlocks::compileKeyPressed));
102+ EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " sensing_mousedown" , &SensingBlocks::compileMouseDown));
102103 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " sensing_timer" , &SensingBlocks::compileTimer));
103104 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " sensing_resettimer" , &SensingBlocks::compileResetTimer));
104105 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " sensing_current" , &SensingBlocks::compileCurrent));
@@ -339,6 +340,47 @@ TEST_F(SensingBlocksTest, KeyPressedImpl)
339340 ASSERT_EQ (vm.getInput (0 , 1 )->toBool (), false );
340341}
341342
343+ TEST_F (SensingBlocksTest, MouseDown)
344+ {
345+ Compiler compiler (&m_engineMock);
346+
347+ auto block = std::make_shared<Block>(" a" , " sensing_mousedown" );
348+
349+ EXPECT_CALL (m_engineMock, functionIndex (&SensingBlocks::mouseDown)).WillOnce (Return (0 ));
350+ compiler.init ();
351+
352+ compiler.setBlock (block);
353+ SensingBlocks::compileMouseDown (&compiler);
354+
355+ compiler.end ();
356+
357+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_EXEC, 0 , vm::OP_HALT }));
358+ ASSERT_TRUE (compiler.constValues ().empty ());
359+ }
360+
361+ TEST_F (SensingBlocksTest, MouseDownImpl)
362+ {
363+ static unsigned int bytecode[] = { vm::OP_START, vm::OP_EXEC, 0 , vm::OP_HALT };
364+ static BlockFunc functions[] = { &SensingBlocks::mouseDown };
365+
366+ VirtualMachine vm (nullptr , &m_engineMock, nullptr );
367+ vm.setFunctions (functions);
368+
369+ EXPECT_CALL (m_engineMock, mousePressed ()).WillOnce (Return (true ));
370+ vm.setBytecode (bytecode);
371+ vm.run ();
372+
373+ ASSERT_EQ (vm.registerCount (), 1 );
374+ ASSERT_EQ (vm.getInput (0 , 1 )->toBool (), true );
375+
376+ EXPECT_CALL (m_engineMock, mousePressed ()).WillOnce (Return (false ));
377+ vm.reset ();
378+ vm.run ();
379+
380+ ASSERT_EQ (vm.registerCount (), 1 );
381+ ASSERT_EQ (vm.getInput (0 , 1 )->toBool (), false );
382+ }
383+
342384TEST_F (SensingBlocksTest, Timer)
343385{
344386 Compiler compiler (&m_engineMock);
0 commit comments