Skip to content

Commit 1a79e99

Browse files
committed
Add motion monitor name functions
1 parent b54961b commit 1a79e99

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed

src/blocks/motionblocks.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ void MotionBlocks::registerBlocks(IEngine *engine)
4545
engine->addCompileFunction(this, "motion_yposition", &compileYPosition);
4646
engine->addCompileFunction(this, "motion_direction", &compileDirection);
4747

48+
// Monitor names
49+
engine->addMonitorNameFunction(this, "motion_xposition", &xPositionMonitorName);
50+
engine->addMonitorNameFunction(this, "motion_yposition", &yPositionMonitorName);
51+
engine->addMonitorNameFunction(this, "motion_direction", &directionMonitorName);
52+
4853
// Inputs
4954
engine->addInput(this, "STEPS", STEPS);
5055
engine->addInput(this, "DEGREES", DEGREES);
@@ -245,6 +250,24 @@ void MotionBlocks::compileDirection(Compiler *compiler)
245250
compiler->addFunctionCall(&direction);
246251
}
247252

253+
const std::string &MotionBlocks::xPositionMonitorName(Block *block)
254+
{
255+
static const std::string name = "x position";
256+
return name;
257+
}
258+
259+
const std::string &MotionBlocks::yPositionMonitorName(Block *block)
260+
{
261+
static const std::string name = "y position";
262+
return name;
263+
}
264+
265+
const std::string &MotionBlocks::directionMonitorName(Block *block)
266+
{
267+
static const std::string name = "direction";
268+
return name;
269+
}
270+
248271
unsigned int MotionBlocks::moveSteps(VirtualMachine *vm)
249272
{
250273
Sprite *sprite = dynamic_cast<Sprite *>(vm->target());

src/blocks/motionblocks.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ class MotionBlocks : public IBlockSection
6767
static void compileYPosition(Compiler *compiler);
6868
static void compileDirection(Compiler *compiler);
6969

70+
static const std::string &xPositionMonitorName(Block *block);
71+
static const std::string &yPositionMonitorName(Block *block);
72+
static const std::string &directionMonitorName(Block *block);
73+
7074
static unsigned int moveSteps(VirtualMachine *vm);
7175
static unsigned int turnRight(VirtualMachine *vm);
7276
static unsigned int turnLeft(VirtualMachine *vm);

test/blocks/motion_blocks_test.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,11 @@ TEST_F(MotionBlocksTest, RegisterBlocks)
124124
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "motion_yposition", &MotionBlocks::compileYPosition));
125125
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "motion_direction", &MotionBlocks::compileDirection));
126126

127+
// Monitor names
128+
EXPECT_CALL(m_engineMock, addMonitorNameFunction(m_section.get(), "motion_xposition", &MotionBlocks::xPositionMonitorName));
129+
EXPECT_CALL(m_engineMock, addMonitorNameFunction(m_section.get(), "motion_yposition", &MotionBlocks::yPositionMonitorName));
130+
EXPECT_CALL(m_engineMock, addMonitorNameFunction(m_section.get(), "motion_direction", &MotionBlocks::directionMonitorName));
131+
127132
// Inputs
128133
EXPECT_CALL(m_engineMock, addInput(m_section.get(), "STEPS", MotionBlocks::STEPS));
129134
EXPECT_CALL(m_engineMock, addInput(m_section.get(), "DEGREES", MotionBlocks::DEGREES));
@@ -1301,6 +1306,11 @@ TEST_F(MotionBlocksTest, XPosition)
13011306
ASSERT_TRUE(compiler.constValues().empty());
13021307
}
13031308

1309+
TEST_F(MotionBlocksTest, XPositionMonitorName)
1310+
{
1311+
ASSERT_EQ(MotionBlocks::xPositionMonitorName(nullptr), "x position");
1312+
}
1313+
13041314
TEST_F(MotionBlocksTest, XPositionImpl)
13051315
{
13061316
static unsigned int bytecode[] = { vm::OP_START, vm::OP_EXEC, 0, vm::OP_HALT };
@@ -1335,6 +1345,11 @@ TEST_F(MotionBlocksTest, YPosition)
13351345
ASSERT_TRUE(compiler.constValues().empty());
13361346
}
13371347

1348+
TEST_F(MotionBlocksTest, YPositionMonitorName)
1349+
{
1350+
ASSERT_EQ(MotionBlocks::yPositionMonitorName(nullptr), "y position");
1351+
}
1352+
13381353
TEST_F(MotionBlocksTest, YPositionImpl)
13391354
{
13401355
static unsigned int bytecode[] = { vm::OP_START, vm::OP_EXEC, 0, vm::OP_HALT };
@@ -1369,6 +1384,11 @@ TEST_F(MotionBlocksTest, Direction)
13691384
ASSERT_TRUE(compiler.constValues().empty());
13701385
}
13711386

1387+
TEST_F(MotionBlocksTest, DirectionMonitorName)
1388+
{
1389+
ASSERT_EQ(MotionBlocks::directionMonitorName(nullptr), "direction");
1390+
}
1391+
13721392
TEST_F(MotionBlocksTest, DirectionImpl)
13731393
{
13741394
static unsigned int bytecode[] = { vm::OP_START, vm::OP_EXEC, 0, vm::OP_HALT };

0 commit comments

Comments
 (0)