Skip to content

Commit a2c35cb

Browse files
committed
Add test for compiling multiple targets
1 parent 4f68d58 commit a2c35cb

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

test/compiler/compiler_test.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include "scratch/stage.h"
33
#include "scratch/sprite.h"
44
#include "engine/compiler.h"
5+
#include "engine/script.h"
56
#include "internal/scratch3reader.h"
67
#include "../common.h"
78

@@ -475,3 +476,26 @@ TEST(CompilerTest, CustomBlocks)
475476
compiler.compile(definition);
476477
ASSERT_EQ(compiler.bytecode(), std::vector<unsigned int>({ vm::OP_START, vm::OP_CONST, 1, vm::OP_SET_VAR, 2, vm::OP_HALT }));
477478
}
479+
480+
TEST(CompilerTest, MultipleTargets)
481+
{
482+
LOAD_PROJECT("load_test.sb3", engine);
483+
engine.compile();
484+
auto scripts = engine.scripts();
485+
486+
auto sprite1 = engine.targetAt(engine.findTarget("Sprite1"));
487+
auto script = scripts.at(sprite1->greenFlagBlocks().at(0));
488+
ASSERT_EQ(script->bytecodeVector().size(), 30);
489+
auto vm = script->start();
490+
ASSERT_EQ(vm->target(), sprite1);
491+
ASSERT_EQ(vm->engine(), &engine);
492+
ASSERT_EQ(vm->script(), script.get());
493+
494+
auto sprite2 = engine.targetAt(engine.findTarget("Balloon1"));
495+
script = scripts.at(sprite2->greenFlagBlocks().at(0));
496+
ASSERT_EQ(script->bytecodeVector().size(), 6);
497+
vm = script->start();
498+
ASSERT_EQ(vm->target(), sprite2);
499+
ASSERT_EQ(vm->engine(), &engine);
500+
ASSERT_EQ(vm->script(), script.get());
501+
}

0 commit comments

Comments
 (0)