Skip to content

Commit 1fddc53

Browse files
committed
Implement looks_nextcostume block
1 parent 81d15b6 commit 1fddc53

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

src/blocks/looksblocks.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ void LooksBlocks::registerBlocks(IEngine *engine)
2525
engine->addCompileFunction(this, "looks_setsizeto", &compileSetSizeTo);
2626
engine->addCompileFunction(this, "looks_size", &compileSize);
2727
engine->addCompileFunction(this, "looks_switchcostumeto", &compileSwitchCostumeTo);
28+
engine->addCompileFunction(this, "looks_nextcostume", &compileNextCostume);
2829
engine->addCompileFunction(this, "looks_costumenumbername", &compileCostumeNumberName);
2930

3031
// Inputs
@@ -104,6 +105,11 @@ void LooksBlocks::compileSwitchCostumeTo(Compiler *compiler)
104105
}
105106
}
106107

108+
void LooksBlocks::compileNextCostume(Compiler *compiler)
109+
{
110+
compiler->addFunctionCall(&nextCostume);
111+
}
112+
107113
void LooksBlocks::compileCostumeNumberName(Compiler *compiler)
108114
{
109115
int option = compiler->field(NUMBER_NAME)->specialValueId();

src/blocks/looksblocks.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class LooksBlocks : public IBlockSection
4141
static void compileSetSizeTo(Compiler *compiler);
4242
static void compileSize(Compiler *compiler);
4343
static void compileSwitchCostumeTo(Compiler *compiler);
44+
static void compileNextCostume(Compiler *compiler);
4445
static void compileCostumeNumberName(Compiler *compiler);
4546

4647
static unsigned int show(VirtualMachine *vm);

test/blocks/looks_blocks_test.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ TEST_F(LooksBlocksTest, RegisterBlocks)
100100
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "looks_setsizeto", &LooksBlocks::compileSetSizeTo));
101101
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "looks_size", &LooksBlocks::compileSize));
102102
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "looks_switchcostumeto", &LooksBlocks::compileSwitchCostumeTo));
103+
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "looks_nextcostume", &LooksBlocks::compileNextCostume));
103104
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "looks_costumenumbername", &LooksBlocks::compileCostumeNumberName));
104105

105106
// Inputs
@@ -642,6 +643,23 @@ TEST_F(LooksBlocksTest, SwitchCostumeToImpl)
642643
}
643644

644645
TEST_F(LooksBlocksTest, NextCostume)
646+
{
647+
Compiler compiler(&m_engineMock);
648+
649+
auto block = std::make_shared<Block>("a", "looks_nextcostume");
650+
651+
EXPECT_CALL(m_engineMock, functionIndex(&LooksBlocks::nextCostume)).WillOnce(Return(0));
652+
653+
compiler.init();
654+
compiler.setBlock(block);
655+
LooksBlocks::compileNextCostume(&compiler);
656+
compiler.end();
657+
658+
ASSERT_EQ(compiler.bytecode(), std::vector<unsigned int>({ vm::OP_START, vm::OP_EXEC, 0, vm::OP_HALT }));
659+
ASSERT_TRUE(compiler.constValues().empty());
660+
}
661+
662+
TEST_F(LooksBlocksTest, NextCostumeImpl)
645663
{
646664
static unsigned int bytecode[] = { vm::OP_START, vm::OP_EXEC, 0, vm::OP_HALT };
647665
static BlockFunc functions[] = { &LooksBlocks::nextCostume };

0 commit comments

Comments
 (0)