11#include < scratchcpp/project.h>
2+ #include < scratchcpp/iengine.h>
23#include < scratchcpp/input.h>
34#include < scratchcpp/inputvalue.h>
45#include < scratchcpp/field.h>
1011#include < scratchcpp/sound.h>
1112#include < scratchcpp/sprite.h>
1213
13- #include " internal/scratch3reader.h"
14- #include " engine/engine.h"
1514#include " ../common.h"
1615
1716using namespace libscratchcpp ;
1817
19- static Scratch3Reader s3reader;
20- static const std::vector<IProjectReader *> readers = { &s3reader };
2118static const std::vector<ScratchVersion> scratchVersions = { ScratchVersion::Scratch3 };
2219static const std::vector<std::string> fileExtensions = { " .sb3" };
2320
2421TEST (LoadProjectTest, EmptyProject)
2522{
2623 int i = 0 ;
27- for (auto reader : readers) {
28- reader->clear ();
29- reader->setFileName (" empty_project" + fileExtensions[i]);
24+ for (auto version : scratchVersions) {
25+ Project p (" empty_project" + fileExtensions[i], version);
3026
31- ASSERT_TRUE (reader->load ());
32- ASSERT_TRUE (reader->isValid ());
33- ASSERT_EQ (reader->targets ().size (), 1 );
34- ASSERT_EQ (reader->extensions ().size (), 0 );
35- ASSERT_EQ (reader->broadcasts ().size (), 0 );
27+ ASSERT_TRUE (p.load ());
3628
37- std::shared_ptr<Stage> stage = std::reinterpret_pointer_cast<Stage>(reader->targets ().at (0 ));
29+ auto engine = p.engine ();
30+ ASSERT_EQ (engine->targets ().size (), 1 );
31+ ASSERT_EQ (engine->extensions ().size (), 0 );
32+ ASSERT_EQ (engine->broadcasts ().size (), 0 );
33+
34+ std::shared_ptr<Stage> stage = std::reinterpret_pointer_cast<Stage>(engine->targets ().at (0 ));
3835 ASSERT_TRUE (stage->isStage ());
3936 ASSERT_EQ (stage->name (), " Stage" );
4037 ASSERT_EQ (stage->variables ().size (), 0 );
@@ -64,24 +61,19 @@ TEST(LoadProjectTest, EmptyProject)
6461TEST (LoadProjectTest, LoadTestProject)
6562{
6663 int i = 0 ;
67- for (auto reader : readers) {
68- reader->clear ();
69- reader->setFileName (" load_test" + fileExtensions[i]);
70-
71- ASSERT_TRUE (reader->load ());
72- ASSERT_TRUE (reader->isValid ());
73- ASSERT_EQ (reader->targets ().size (), 3 );
74- ASSERT_EQ (reader->extensions ().size (), 0 );
75- ASSERT_EQ (reader->broadcasts ().size (), 1 );
76- Engine engine;
77- engine.setTargets (reader->targets ());
78- engine.setBroadcasts (reader->broadcasts ());
79- engine.setExtensions (reader->extensions ());
80- engine.compile ();
64+ for (auto version : scratchVersions) {
65+ Project p (" load_test" + fileExtensions[i], version);
66+
67+ ASSERT_TRUE (p.load ());
68+
69+ auto engine = p.engine ();
70+ ASSERT_EQ (engine->targets ().size (), 3 );
71+ ASSERT_EQ (engine->extensions ().size (), 0 );
72+ ASSERT_EQ (engine->broadcasts ().size (), 1 );
8173
8274 // Stage
83- ASSERT_NE (engine. findTarget (" Stage" ), -1 );
84- Stage *stage = dynamic_cast <Stage *>(engine. targetAt (engine. findTarget (" Stage" )));
75+ ASSERT_NE (engine-> findTarget (" Stage" ), -1 );
76+ Stage *stage = dynamic_cast <Stage *>(engine-> targetAt (engine-> findTarget (" Stage" )));
8577 ASSERT_EQ (stage->variables ().size (), 2 );
8678 ASSERT_EQ (stage->lists ().size (), 1 );
8779
@@ -96,8 +88,8 @@ TEST(LoadProjectTest, LoadTestProject)
9688 ASSERT_EQ (GET_LIST (stage, " list1" )->toString (), " 3 1 4 8 7 6 7 7 2 4" );
9789
9890 // Sprite1
99- ASSERT_NE (engine. findTarget (" Sprite1" ), -1 );
100- Sprite *sprite1 = dynamic_cast <Sprite *>(engine. targetAt (engine. findTarget (" Sprite1" )));
91+ ASSERT_NE (engine-> findTarget (" Sprite1" ), -1 );
92+ Sprite *sprite1 = dynamic_cast <Sprite *>(engine-> targetAt (engine-> findTarget (" Sprite1" )));
10193 ASSERT_FALSE (sprite1->isStage ());
10294 ASSERT_EQ (sprite1->name (), " Sprite1" );
10395 ASSERT_EQ (sprite1->variables ().size (), 1 );
@@ -221,8 +213,8 @@ TEST(LoadProjectTest, LoadTestProject)
221213 ASSERT_EQ (argBlock->opcode (), " argument_reporter_string_number" );
222214
223215 // Balloon1
224- ASSERT_NE (engine. findTarget (" Balloon1" ), -1 );
225- Sprite *sprite2 = dynamic_cast <Sprite *>(engine. targetAt (engine. findTarget (" Balloon1" )));
216+ ASSERT_NE (engine-> findTarget (" Balloon1" ), -1 );
217+ Sprite *sprite2 = dynamic_cast <Sprite *>(engine-> targetAt (engine-> findTarget (" Balloon1" )));
226218 ASSERT_FALSE (sprite2->isStage ());
227219 ASSERT_EQ (sprite2->name (), " Balloon1" );
228220 ASSERT_EQ (sprite2->variables ().size (), 1 );
0 commit comments