@@ -113,6 +113,7 @@ TEST_F(MotionBlocksTest, RegisterBlocks)
113113 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " motion_setrotationstyle" , &MotionBlocks::compileSetRotationStyle));
114114 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " motion_xposition" , &MotionBlocks::compileXPosition));
115115 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " motion_yposition" , &MotionBlocks::compileYPosition));
116+ EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " motion_direction" , &MotionBlocks::compileDirection));
116117
117118 // Inputs
118119 EXPECT_CALL (m_engineMock, addInput (m_section.get (), " STEPS" , MotionBlocks::STEPS));
@@ -1223,3 +1224,37 @@ TEST_F(MotionBlocksTest, YPositionImpl)
12231224 ASSERT_EQ (vm.registerCount (), 1 );
12241225 ASSERT_EQ (vm.getInput (0 , 1 )->toDouble (), -68.5408 );
12251226}
1227+
1228+ TEST_F (MotionBlocksTest, Direction)
1229+ {
1230+ Compiler compiler (&m_engineMock);
1231+
1232+ auto block = std::make_shared<Block>(" a" , " motion_direction" );
1233+
1234+ EXPECT_CALL (m_engineMock, functionIndex (&MotionBlocks::direction)).WillOnce (Return (0 ));
1235+
1236+ compiler.init ();
1237+ compiler.setBlock (block);
1238+ MotionBlocks::compileDirection (&compiler);
1239+ compiler.end ();
1240+
1241+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_EXEC, 0 , vm::OP_HALT }));
1242+ ASSERT_TRUE (compiler.constValues ().empty ());
1243+ }
1244+
1245+ TEST_F (MotionBlocksTest, DirectionImpl)
1246+ {
1247+ static unsigned int bytecode[] = { vm::OP_START, vm::OP_EXEC, 0 , vm::OP_HALT };
1248+ static BlockFunc functions[] = { &MotionBlocks::direction };
1249+
1250+ Sprite sprite;
1251+ sprite.setDirection (179.605 );
1252+
1253+ VirtualMachine vm (&sprite, nullptr , nullptr );
1254+ vm.setBytecode (bytecode);
1255+ vm.setFunctions (functions);
1256+ vm.run ();
1257+
1258+ ASSERT_EQ (vm.registerCount (), 1 );
1259+ ASSERT_EQ (vm.getInput (0 , 1 )->toDouble (), 179.605 );
1260+ }
0 commit comments