Skip to content

Commit 4b2d8ec

Browse files
authored
Merge pull request #269 from scratchcpp/block_tests_value_block
Use a null block instead of join in block tests
2 parents ae960e6 + a53f8f7 commit 4b2d8ec

File tree

4 files changed

+59
-59
lines changed

4 files changed

+59
-59
lines changed

test/blocks/control_blocks_test.cpp

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,15 @@ class ControlBlocksTest : public testing::Test
4848
return block;
4949
}
5050

51+
std::shared_ptr<Block> createNullBlock(const std::string &id)
52+
{
53+
std::shared_ptr<Block> block = std::make_shared<Block>(id, "");
54+
BlockComp func = [](Compiler *compiler) { compiler->addInstruction(vm::OP_NULL); };
55+
block->setCompileFunction(func);
56+
57+
return block;
58+
}
59+
5160
void addSubstackInput(std::shared_ptr<Block> block, const std::string &name, ControlBlocks::Inputs id, std::shared_ptr<Block> valueBlock) const
5261
{
5362
auto input = std::make_shared<Input>(name, Input::Type::NoShadow);
@@ -859,10 +868,8 @@ TEST_F(ControlBlocksTest, CreateCloneOf)
859868
// create clone of [myself]
860869
auto block2 = createCloneBlock("b", "_myself_");
861870

862-
// create clone of (join "" "")
863-
auto joinBlock = std::make_shared<Block>("d", "operator_join");
864-
joinBlock->setCompileFunction(&OperatorBlocks::compileJoin);
865-
auto block3 = createCloneBlock("c", "", joinBlock);
871+
// create clone of (null block)
872+
auto block3 = createCloneBlock("c", "", createNullBlock("d"));
866873

867874
EXPECT_CALL(m_engineMock, findTarget("Sprite1")).WillOnce(Return(4));
868875
EXPECT_CALL(m_engineMock, functionIndex(&ControlBlocks::createCloneByIndex)).WillOnce(Return(0));
@@ -878,9 +885,7 @@ TEST_F(ControlBlocksTest, CreateCloneOf)
878885
ControlBlocks::compileCreateClone(&compiler);
879886
compiler.end();
880887

881-
ASSERT_EQ(
882-
compiler.bytecode(),
883-
std::vector<unsigned int>({ vm::OP_START, vm::OP_CONST, 0, vm::OP_EXEC, 0, vm::OP_EXEC, 1, vm::OP_NULL, vm::OP_NULL, vm::OP_STR_CONCAT, vm::OP_EXEC, 2, vm::OP_HALT }));
888+
ASSERT_EQ(compiler.bytecode(), std::vector<unsigned int>({ vm::OP_START, vm::OP_CONST, 0, vm::OP_EXEC, 0, vm::OP_EXEC, 1, vm::OP_NULL, vm::OP_EXEC, 2, vm::OP_HALT }));
884889
ASSERT_EQ(compiler.constValues().size(), 1);
885890
ASSERT_EQ(compiler.constValues()[0].toDouble(), 4);
886891
ASSERT_TRUE(compiler.variables().empty());

test/blocks/looks_blocks_test.cpp

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@ class LooksBlocksTest : public testing::Test
3030
// For any looks block
3131
std::shared_ptr<Block> createLooksBlock(const std::string &id, const std::string &opcode) const { return std::make_shared<Block>(id, opcode); }
3232

33+
std::shared_ptr<Block> createNullBlock(const std::string &id)
34+
{
35+
std::shared_ptr<Block> block = std::make_shared<Block>(id, "");
36+
BlockComp func = [](Compiler *compiler) { compiler->addInstruction(vm::OP_NULL); };
37+
block->setCompileFunction(func);
38+
39+
return block;
40+
}
41+
3342
void addValueInput(std::shared_ptr<Block> block, const std::string &name, LooksBlocks::Inputs id, const Value &value) const
3443
{
3544
auto input = std::make_shared<Input>(name, Input::Type::Shadow);
@@ -363,11 +372,9 @@ TEST_F(LooksBlocksTest, SwitchCostumeTo)
363372
auto block10 = std::make_shared<Block>("f", "looks_switchcostumeto");
364373
addDropdownInput(block10, "COSTUME", LooksBlocks::COSTUME, "previous costume");
365374

366-
// switch costume to (join "" "")
367-
auto joinBlock = std::make_shared<Block>("h", "operator_join");
368-
joinBlock->setCompileFunction(&OperatorBlocks::compileJoin);
375+
// switch costume to (null block)
369376
auto block11 = std::make_shared<Block>("g", "looks_switchcostumeto");
370-
addDropdownInput(block11, "COSTUME", LooksBlocks::COSTUME, "", joinBlock);
377+
addDropdownInput(block11, "COSTUME", LooksBlocks::COSTUME, "", createNullBlock("h"));
371378

372379
compiler.init();
373380

@@ -473,8 +480,6 @@ TEST_F(LooksBlocksTest, SwitchCostumeTo)
473480
vm::OP_EXEC,
474481
0,
475482
vm::OP_NULL,
476-
vm::OP_NULL,
477-
vm::OP_STR_CONCAT,
478483
vm::OP_EXEC,
479484
3,
480485
vm::OP_HALT }));
@@ -785,11 +790,9 @@ TEST_F(LooksBlocksTest, SwitchBackdropTo)
785790
auto block12 = std::make_shared<Block>("h", "looks_switchbackdropto");
786791
addDropdownInput(block12, "BACKDROP", LooksBlocks::BACKDROP, "random backdrop");
787792

788-
// switch backdrop to (join "" "")
789-
auto joinBlock = std::make_shared<Block>("j", "operator_join");
790-
joinBlock->setCompileFunction(&OperatorBlocks::compileJoin);
793+
// switch backdrop to (null block)
791794
auto block13 = std::make_shared<Block>("i", "looks_switchbackdropto");
792-
addDropdownInput(block13, "BACKDROP", LooksBlocks::BACKDROP, "", joinBlock);
795+
addDropdownInput(block13, "BACKDROP", LooksBlocks::BACKDROP, "", createNullBlock("j"));
793796

794797
compiler.init();
795798

@@ -925,8 +928,6 @@ TEST_F(LooksBlocksTest, SwitchBackdropTo)
925928
vm::OP_EXEC,
926929
0,
927930
vm::OP_NULL,
928-
vm::OP_NULL,
929-
vm::OP_STR_CONCAT,
930931
vm::OP_EXEC,
931932
4,
932933
vm::OP_HALT }));
@@ -1196,11 +1197,9 @@ TEST_F(LooksBlocksTest, SwitchBackdropToAndWait)
11961197
auto block12 = std::make_shared<Block>("h", "looks_switchbackdroptoandwait");
11971198
addDropdownInput(block12, "BACKDROP", LooksBlocks::BACKDROP, "random backdrop");
11981199

1199-
// switch backdrop to (join "" "") and wait
1200-
auto joinBlock = std::make_shared<Block>("j", "operator_join");
1201-
joinBlock->setCompileFunction(&OperatorBlocks::compileJoin);
1200+
// switch backdrop to (null block) and wait
12021201
auto block13 = std::make_shared<Block>("i", "looks_switchbackdroptoandwait");
1203-
addDropdownInput(block13, "BACKDROP", LooksBlocks::BACKDROP, "", joinBlock);
1202+
addDropdownInput(block13, "BACKDROP", LooksBlocks::BACKDROP, "", createNullBlock("j"));
12041203

12051204
compiler.init();
12061205

@@ -1376,8 +1375,6 @@ TEST_F(LooksBlocksTest, SwitchBackdropToAndWait)
13761375
vm::OP_EXEC,
13771376
5,
13781377
vm::OP_NULL,
1379-
vm::OP_NULL,
1380-
vm::OP_STR_CONCAT,
13811378
vm::OP_EXEC,
13821379
4,
13831380
vm::OP_EXEC,

test/blocks/motion_blocks_test.cpp

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,15 @@ class MotionBlocksTest : public testing::Test
3030
// For any motion block
3131
std::shared_ptr<Block> createMotionBlock(const std::string &id, const std::string &opcode) const { return std::make_shared<Block>(id, opcode); }
3232

33+
std::shared_ptr<Block> createNullBlock(const std::string &id)
34+
{
35+
std::shared_ptr<Block> block = std::make_shared<Block>(id, "");
36+
BlockComp func = [](Compiler *compiler) { compiler->addInstruction(vm::OP_NULL); };
37+
block->setCompileFunction(func);
38+
39+
return block;
40+
}
41+
3342
void addValueInput(std::shared_ptr<Block> block, const std::string &name, MotionBlocks::Inputs id, const Value &value) const
3443
{
3544
auto input = std::make_shared<Input>(name, Input::Type::Shadow);
@@ -308,11 +317,9 @@ TEST_F(MotionBlocksTest, PointTowards)
308317
auto block3 = std::make_shared<Block>("c", "motion_pointtowards");
309318
addDropdownInput(block3, "TOWARDS", MotionBlocks::TOWARDS, "Sprite2");
310319

311-
// point towards (join "" "")
312-
auto joinBlock = std::make_shared<Block>("e", "operator_join");
313-
joinBlock->setCompileFunction(&OperatorBlocks::compileJoin);
320+
// point towards (null block)
314321
auto block4 = std::make_shared<Block>("d", "motion_pointtowards");
315-
addDropdownInput(block4, "TOWARDS", MotionBlocks::TOWARDS, "", joinBlock);
322+
addDropdownInput(block4, "TOWARDS", MotionBlocks::TOWARDS, "", createNullBlock("e"));
316323

317324
compiler.init();
318325

@@ -335,9 +342,7 @@ TEST_F(MotionBlocksTest, PointTowards)
335342

336343
compiler.end();
337344

338-
ASSERT_EQ(
339-
compiler.bytecode(),
340-
std::vector<unsigned int>({ vm::OP_START, vm::OP_EXEC, 0, vm::OP_EXEC, 1, vm::OP_CONST, 0, vm::OP_EXEC, 2, vm::OP_NULL, vm::OP_NULL, vm::OP_STR_CONCAT, vm::OP_EXEC, 3, vm::OP_HALT }));
345+
ASSERT_EQ(compiler.bytecode(), std::vector<unsigned int>({ vm::OP_START, vm::OP_EXEC, 0, vm::OP_EXEC, 1, vm::OP_CONST, 0, vm::OP_EXEC, 2, vm::OP_NULL, vm::OP_EXEC, 3, vm::OP_HALT }));
341346
ASSERT_EQ(compiler.constValues().size(), 1);
342347
ASSERT_EQ(compiler.constValues()[0].toDouble(), 5);
343348
}
@@ -526,11 +531,9 @@ TEST_F(MotionBlocksTest, GoTo)
526531
auto block3 = std::make_shared<Block>("c", "motion_goto");
527532
addDropdownInput(block3, "TO", MotionBlocks::TO, "Sprite2");
528533

529-
// go to (join "" "")
530-
auto joinBlock = std::make_shared<Block>("e", "operator_join");
531-
joinBlock->setCompileFunction(&OperatorBlocks::compileJoin);
534+
// go to (null block)
532535
auto block4 = std::make_shared<Block>("d", "motion_goto");
533-
addDropdownInput(block4, "TO", MotionBlocks::TO, "", joinBlock);
536+
addDropdownInput(block4, "TO", MotionBlocks::TO, "", createNullBlock("e"));
534537

535538
compiler.init();
536539

@@ -553,9 +556,7 @@ TEST_F(MotionBlocksTest, GoTo)
553556

554557
compiler.end();
555558

556-
ASSERT_EQ(
557-
compiler.bytecode(),
558-
std::vector<unsigned int>({ vm::OP_START, vm::OP_EXEC, 0, vm::OP_EXEC, 1, vm::OP_CONST, 0, vm::OP_EXEC, 2, vm::OP_NULL, vm::OP_NULL, vm::OP_STR_CONCAT, vm::OP_EXEC, 3, vm::OP_HALT }));
559+
ASSERT_EQ(compiler.bytecode(), std::vector<unsigned int>({ vm::OP_START, vm::OP_EXEC, 0, vm::OP_EXEC, 1, vm::OP_CONST, 0, vm::OP_EXEC, 2, vm::OP_NULL, vm::OP_EXEC, 3, vm::OP_HALT }));
559560
ASSERT_EQ(compiler.constValues().size(), 1);
560561
ASSERT_EQ(compiler.constValues()[0].toDouble(), 5);
561562
}
@@ -762,12 +763,10 @@ TEST_F(MotionBlocksTest, GlideTo)
762763
addValueInput(block3, "SECS", MotionBlocks::SECS, 3.25);
763764
addDropdownInput(block3, "TO", MotionBlocks::TO, "Sprite2");
764765

765-
// glide (6.5) secs to (join "" "")
766-
auto joinBlock = std::make_shared<Block>("e", "operator_join");
767-
joinBlock->setCompileFunction(&OperatorBlocks::compileJoin);
766+
// glide (6.5) secs to (null block)
768767
auto block4 = std::make_shared<Block>("d", "motion_glideto");
769768
addValueInput(block4, "SECS", MotionBlocks::SECS, 6.5);
770-
addDropdownInput(block4, "TO", MotionBlocks::TO, "", joinBlock);
769+
addDropdownInput(block4, "TO", MotionBlocks::TO, "", createNullBlock("e"));
771770

772771
compiler.init();
773772

@@ -821,8 +820,6 @@ TEST_F(MotionBlocksTest, GlideTo)
821820
vm::OP_CONST,
822821
4,
823822
vm::OP_NULL,
824-
vm::OP_NULL,
825-
vm::OP_STR_CONCAT,
826823
vm::OP_EXEC,
827824
3,
828825
vm::OP_EXEC,

test/blocks/sensing_blocks_test.cpp

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,15 @@ class SensingBlocksTest : public testing::Test
3737
return block;
3838
}
3939

40+
std::shared_ptr<Block> createNullBlock(const std::string &id)
41+
{
42+
std::shared_ptr<Block> block = std::make_shared<Block>(id, "");
43+
BlockComp func = [](Compiler *compiler) { compiler->addInstruction(vm::OP_NULL); };
44+
block->setCompileFunction(func);
45+
46+
return block;
47+
}
48+
4049
void addObscuredInput(std::shared_ptr<Block> block, const std::string &name, SensingBlocks::Inputs id, std::shared_ptr<Block> valueBlock) const
4150
{
4251
auto input = std::make_shared<Input>(name, Input::Type::ObscuredShadow);
@@ -142,11 +151,9 @@ TEST_F(SensingBlocksTest, DistanceTo)
142151
auto block2 = std::make_shared<Block>("b", "sensing_distanceto");
143152
addDropdownInput(block2, "DISTANCETOMENU", SensingBlocks::DISTANCETOMENU, "_mouse_");
144153

145-
// distance to (join "" "")
146-
auto joinBlock = std::make_shared<Block>("d", "operator_join");
147-
joinBlock->setCompileFunction(&OperatorBlocks::compileJoin);
154+
// distance to (null block)
148155
auto block3 = std::make_shared<Block>("c", "sensing_distanceto");
149-
addDropdownInput(block3, "DISTANCETOMENU", SensingBlocks::DISTANCETOMENU, "", joinBlock);
156+
addDropdownInput(block3, "DISTANCETOMENU", SensingBlocks::DISTANCETOMENU, "", createNullBlock("d"));
150157

151158
compiler.init();
152159

@@ -165,9 +172,7 @@ TEST_F(SensingBlocksTest, DistanceTo)
165172

166173
compiler.end();
167174

168-
ASSERT_EQ(
169-
compiler.bytecode(),
170-
std::vector<unsigned int>({ vm::OP_START, vm::OP_CONST, 0, vm::OP_EXEC, 0, vm::OP_EXEC, 1, vm::OP_NULL, vm::OP_NULL, vm::OP_STR_CONCAT, vm::OP_EXEC, 2, vm::OP_HALT }));
175+
ASSERT_EQ(compiler.bytecode(), std::vector<unsigned int>({ vm::OP_START, vm::OP_CONST, 0, vm::OP_EXEC, 0, vm::OP_EXEC, 1, vm::OP_NULL, vm::OP_EXEC, 2, vm::OP_HALT }));
171176
ASSERT_EQ(compiler.constValues().size(), 1);
172177
ASSERT_EQ(compiler.constValues()[0].toDouble(), 5);
173178
}
@@ -277,11 +282,9 @@ TEST_F(SensingBlocksTest, KeyPressed)
277282
auto block2 = std::make_shared<Block>("b", "sensing_keypressed");
278283
addDropdownInput(block2, "KEY_OPTION", SensingBlocks::KEY_OPTION, "any");
279284

280-
// key (join "" "") pressed?
281-
auto joinBlock = std::make_shared<Block>("d", "operator_join");
282-
joinBlock->setCompileFunction(&OperatorBlocks::compileJoin);
285+
// key (null block) pressed?
283286
auto block3 = std::make_shared<Block>("c", "sensing_keypressed");
284-
addDropdownInput(block3, "KEY_OPTION", SensingBlocks::KEY_OPTION, "", joinBlock);
287+
addDropdownInput(block3, "KEY_OPTION", SensingBlocks::KEY_OPTION, "", createNullBlock("d"));
285288

286289
compiler.init();
287290

@@ -299,9 +302,7 @@ TEST_F(SensingBlocksTest, KeyPressed)
299302

300303
compiler.end();
301304

302-
ASSERT_EQ(
303-
compiler.bytecode(),
304-
std::vector<unsigned int>({ vm::OP_START, vm::OP_CONST, 0, vm::OP_EXEC, 0, vm::OP_CONST, 1, vm::OP_EXEC, 0, vm::OP_NULL, vm::OP_NULL, vm::OP_STR_CONCAT, vm::OP_EXEC, 0, vm::OP_HALT }));
305+
ASSERT_EQ(compiler.bytecode(), std::vector<unsigned int>({ vm::OP_START, vm::OP_CONST, 0, vm::OP_EXEC, 0, vm::OP_CONST, 1, vm::OP_EXEC, 0, vm::OP_NULL, vm::OP_EXEC, 0, vm::OP_HALT }));
305306
ASSERT_EQ(compiler.constValues(), std::vector<Value>({ "space", "any" }));
306307
}
307308

0 commit comments

Comments
 (0)