Skip to content

Commit 30e37e9

Browse files
committed
Implement looks_nextbackdrop block
1 parent 54e5c0c commit 30e37e9

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
@@ -31,6 +31,7 @@ void LooksBlocks::registerBlocks(IEngine *engine)
3131
engine->addCompileFunction(this, "looks_switchcostumeto", &compileSwitchCostumeTo);
3232
engine->addCompileFunction(this, "looks_nextcostume", &compileNextCostume);
3333
engine->addCompileFunction(this, "looks_switchbackdropto", &compileSwitchBackdropTo);
34+
engine->addCompileFunction(this, "looks_nextbackdrop", &compileNextBackdrop);
3435
engine->addCompileFunction(this, "looks_costumenumbername", &compileCostumeNumberName);
3536
engine->addCompileFunction(this, "looks_backdropnumbername", &compileBackdropNumberName);
3637

@@ -156,6 +157,11 @@ void LooksBlocks::compileSwitchBackdropTo(Compiler *compiler)
156157
}
157158
}
158159

160+
void LooksBlocks::compileNextBackdrop(Compiler *compiler)
161+
{
162+
compiler->addFunctionCall(&nextBackdrop);
163+
}
164+
159165
void LooksBlocks::compileCostumeNumberName(Compiler *compiler)
160166
{
161167
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
@@ -45,6 +45,7 @@ class LooksBlocks : public IBlockSection
4545
static void compileSwitchCostumeTo(Compiler *compiler);
4646
static void compileNextCostume(Compiler *compiler);
4747
static void compileSwitchBackdropTo(Compiler *compiler);
48+
static void compileNextBackdrop(Compiler *compiler);
4849
static void compileCostumeNumberName(Compiler *compiler);
4950
static void compileBackdropNumberName(Compiler *compiler);
5051

test/blocks/looks_blocks_test.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ TEST_F(LooksBlocksTest, RegisterBlocks)
105105
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "looks_switchcostumeto", &LooksBlocks::compileSwitchCostumeTo));
106106
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "looks_nextcostume", &LooksBlocks::compileNextCostume));
107107
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "looks_switchbackdropto", &LooksBlocks::compileSwitchBackdropTo));
108+
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "looks_nextbackdrop", &LooksBlocks::compileNextBackdrop));
108109
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "looks_costumenumbername", &LooksBlocks::compileCostumeNumberName));
109110
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "looks_backdropnumbername", &LooksBlocks::compileBackdropNumberName));
110111

@@ -1121,6 +1122,23 @@ TEST_F(LooksBlocksTest, SwitchBackdropToImpl)
11211122
ASSERT_EQ(stage.currentCostume(), 1);
11221123
}
11231124

1125+
TEST_F(LooksBlocksTest, NextBackdrop)
1126+
{
1127+
Compiler compiler(&m_engineMock);
1128+
1129+
auto block = std::make_shared<Block>("a", "looks_nextbackdrop");
1130+
1131+
EXPECT_CALL(m_engineMock, functionIndex(&LooksBlocks::nextBackdrop)).WillOnce(Return(0));
1132+
1133+
compiler.init();
1134+
compiler.setBlock(block);
1135+
LooksBlocks::compileNextBackdrop(&compiler);
1136+
compiler.end();
1137+
1138+
ASSERT_EQ(compiler.bytecode(), std::vector<unsigned int>({ vm::OP_START, vm::OP_EXEC, 0, vm::OP_HALT }));
1139+
ASSERT_TRUE(compiler.constValues().empty());
1140+
}
1141+
11241142
TEST_F(LooksBlocksTest, NextBackdropImpl)
11251143
{
11261144
static unsigned int bytecode[] = { vm::OP_START, vm::OP_EXEC, 0, vm::OP_HALT };

0 commit comments

Comments
 (0)