22#include " scratch/stage.h"
33#include " scratch/sprite.h"
44#include " engine/engine.h"
5+ #include " scratchproject.h"
56#include " ../common.h"
67
78#define ASSERT_VAR (target, varName ) \
@@ -28,13 +29,15 @@ using namespace libscratchcpp;
2829
2930static Scratch3Reader s3reader;
3031static const std::vector<IProjectReader *> readers = { &s3reader };
31- static const std::unordered_map<IProjectReader *, std::string> fileExtensions = { { &s3reader, " .sb3" } };
32+ static const std::vector<ScratchProject::Version> scratchVersions = { ScratchProject::Version::Scratch3 };
33+ static const std::vector<std::string> fileExtensions = { " .sb3" };
3234
3335TEST (LoadProjectTest, EmptyProject)
3436{
37+ int i = 0 ;
3538 for (auto reader : readers) {
3639 reader->clear ();
37- reader->setFileName (" empty_project" + fileExtensions. at (reader) );
40+ reader->setFileName (" empty_project" + fileExtensions[i] );
3841
3942 ASSERT_TRUE (reader->load ());
4043 ASSERT_TRUE (reader->isValid ());
@@ -64,14 +67,17 @@ TEST(LoadProjectTest, EmptyProject)
6467 ASSERT_FALSE (backdrop.assetId ().empty ());
6568 ASSERT_EQ (backdrop.md5ext (), backdrop.assetId () + " .svg" );
6669 ASSERT_EQ (backdrop.dataFormat (), " svg" );
70+
71+ i++;
6772 }
6873}
6974
7075TEST (LoadProjectTest, LoadTestProject)
7176{
77+ int i = 0 ;
7278 for (auto reader : readers) {
7379 reader->clear ();
74- reader->setFileName (" load_test" + fileExtensions. at (reader) );
80+ reader->setFileName (" load_test" + fileExtensions[i] );
7581
7682 ASSERT_TRUE (reader->load ());
7783 ASSERT_TRUE (reader->isValid ());
@@ -258,5 +264,30 @@ TEST(LoadProjectTest, LoadTestProject)
258264 // Balloon1: lists
259265 ASSERT_LIST (sprite2, " list2" );
260266 ASSERT_EQ (GET_LIST (sprite2, " list2" )->toString (), " 0 4 3 4 1 5 6 9 4 8" );
267+
268+ i++;
269+ }
270+ }
271+
272+ TEST (LoadProjectTest, ScratchProjectTest)
273+ {
274+ int i = 0 ;
275+ for (auto version : scratchVersions) {
276+ std::string name = " load_test" + fileExtensions[i];
277+ ScratchProject p (name, version);
278+ ASSERT_EQ (p.fileName (), name);
279+ ASSERT_EQ (p.scratchVersion (), version);
280+ ASSERT_TRUE (p.load ());
281+
282+ i++;
261283 }
262284}
285+
286+ TEST (LoadProjectTest, ScratchProjectInvalidTest)
287+ {
288+ std::string name = " load_test.sb3" ;
289+ ScratchProject p (name, ScratchProject::Version::Invalid);
290+ ASSERT_EQ (p.fileName (), name);
291+ ASSERT_EQ (p.scratchVersion (), ScratchProject::Version::Invalid);
292+ ASSERT_FALSE (p.load ());
293+ }
0 commit comments