~aleteoryx/muditaos

6d481b753b536457043125447db92d07bd4e3af6 — Radoslaw Wicik 5 years ago d967f86
[EGD-4763] Fix Unit Tests - db unittest

Fix reqired by CI to work
M module-db/Database/DatabaseInitializer.cpp => module-db/Database/DatabaseInitializer.cpp +1 -1
@@ 1,4 1,4 @@
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "DatabaseInitializer.hpp"

M module-db/tests/unittest.cpp => module-db/tests/unittest.cpp +50 -44
@@ 125,32 125,35 @@ TEST_CASE("Database initialization scripts")
    vfs.Init();
    Database::initialize();

    const char *script_create = "CREATE TABLE IF NOT EXISTS tracks("
                                "_id	                INTEGER PRIMARY KEY,"
                                "filename	            TEXT UNIQUE,"
                                "name	            	TEXT,"
                                "duration	            INTEGER,"
                                "artist_id	            INTEGER,"
                                "album_id	            INTEGER,"
                                "cover  	            INTEGER,"
                                "FOREIGN KEY(artist_id) REFERENCES artists(_id),"
                                "FOREIGN KEY(album_id) 	REFERENCES albums(_id)"
                                ");";

    const char *script_insert = "insert or ignore into artists(name) VALUES('%q');";

    const char *script_comment = "--insert or ignore into artists(name) VALUES('%q');\n"
                                 "insert or ignore into artists(name) VALUES('%q');\n"
                                 "--insert or ignore into artists(name) VALUES('%q');\n"
                                 "insert or ignore into artists(name) VALUES('%q');\n";

    const char *script_invalid = "insert artists(name) VALUES('%q');";
    const std::string script_create = "CREATE TABLE IF NOT EXISTS tracks("
                                      "_id	                INTEGER PRIMARY KEY,"
                                      "filename	            TEXT UNIQUE,"
                                      "name	            	TEXT,"
                                      "duration	            INTEGER,"
                                      "artist_id	            INTEGER,"
                                      "album_id	            INTEGER,"
                                      "cover  	            INTEGER,"
                                      "FOREIGN KEY(artist_id) REFERENCES artists(_id),"
                                      "FOREIGN KEY(album_id) 	REFERENCES albums(_id)"
                                      ");\n";

    const std::string script_insert = "insert or ignore into artists(name) VALUES('%q');\n";

    const std::string script_comment = "--insert or ignore into artists(name) VALUES('%q');\n"
                                       "insert or ignore into artists(name) VALUES('%q');\n"
                                       "--insert or ignore into artists(name) VALUES('%q');\n"
                                       "insert or ignore into artists(name) VALUES('%q');\n";

    const std::string script_invalid = "insert artists(name) VALUES('%q');\n";

    SECTION("list files")
    {
        ScopedDir dir(USER_PATH("scripts"));
        ScopedDir dir(USER_PATH("test"));
        LOG_INFO("PATH_SYS: %s", PATH_SYS);
        LOG_INFO("PATH_USER: %s", PATH_USER);

        auto file = std::fopen(dir("test_1.sql").c_str(), "w");
        LOG_INFO("test file: %s", dir("test_1.sql").c_str());
        std::fclose(file);

        file = std::fopen(dir("test_021.sql").c_str(), "w");


@@ 167,29 170,28 @@ TEST_CASE("Database initialization scripts")

        Database db(dir("test.db").c_str());
        DatabaseInitializer initializer(&db);
        auto files = initializer.listFiles(PATH_SYS "/" PATH_USER "/", "test", "sql");
        auto files = initializer.listFiles(dir(), "test", "sql");

        REQUIRE(files.size() == 4);
        REQUIRE(files[0] == USER_PATH("test_1.sql"));
        REQUIRE(files[1] == USER_PATH("test_003.sql"));
        REQUIRE(files[2] == USER_PATH("test_011.sql"));
        REQUIRE(files[3] == USER_PATH("test_021.sql"));
        REQUIRE(files[0] == dir("test_1.sql"));
        REQUIRE(files[1] == dir("test_003.sql"));
        REQUIRE(files[2] == dir("test_011.sql"));
        REQUIRE(files[3] == dir("test_021.sql"));
    }

    SECTION("read script files")
    {
        ScopedDir dir(USER_PATH("scripts"));
        std::string test_file("read_script_test_1.sql");

        auto file = std::fopen(dir("test_1.sql").c_str(), "w");

        std::fprintf(file, "%s\n", script_create);
        std::fprintf(file, "%s\n", script_insert);

        auto file = std::fopen(dir(test_file).c_str(), "w");
        std::fwrite(script_create.data(), sizeof(char), script_create.size(), file);
        std::fwrite(script_insert.data(), sizeof(char), script_insert.size(), file);
        std::fclose(file);

        Database db(dir("test.db").c_str());
        DatabaseInitializer initializer(&db);
        auto commands = initializer.readCommands(dir("test_1.sql"));
        auto commands = initializer.readCommands(dir(test_file));

        REQUIRE(commands.size() == 2);
    }


@@ 197,38 199,41 @@ TEST_CASE("Database initialization scripts")
    SECTION("read empty script files")
    {
        ScopedDir dir(USER_PATH("scripts"));
        std::string test_file("read_empyty_1.sql");

        auto file = std::fopen(dir("test_1.sql").c_str(), "w");
        auto file = std::fopen(dir(test_file).c_str(), "w");
        std::fclose(file);

        Database db(dir("test.db").c_str());
        DatabaseInitializer initializer(&db);
        auto commands = initializer.readCommands(dir("test_1.sql"));
        auto commands = initializer.readCommands(dir(test_file));

        REQUIRE(commands.size() == 0);
    }

    SECTION("read script file with comment")
    {
        ScopedDir dir(USER_PATH("scripts"));
        ScopedDir dir(USER_PATH("read_script_file_with_comment"));
        std::string test_file("test_01.sql");

        auto file = std::fopen(dir("test_1.sql").c_str(), "w");
        std::fprintf(file, "%s\n", script_comment);
        auto file = std::fopen(dir(test_file).c_str(), "w");
        std::fwrite(script_comment.data(), sizeof(char), script_comment.size(), file);
        std::fclose(file);

        Database db(dir("test.db").c_str());
        DatabaseInitializer initializer(&db);
        auto commands = initializer.readCommands(dir("test_1.sql"));
        auto commands = initializer.readCommands(dir(test_file));

        REQUIRE(commands.size() == 2);
    }

    SECTION("execute valid script")
    {
        ScopedDir dir(USER_PATH("scripts"));
        ScopedDir dir(USER_PATH("execute_valid_script"));
        std::string test_file("test_01.sql");

        auto file = std::fopen(dir("test_1.sql").c_str(), "w");
        std::fprintf(file, "%s\n", script_create);
        auto file = std::fopen(dir(test_file).c_str(), "w");
        std::fwrite(script_create.data(), sizeof(char), script_create.size(), file);
        std::fclose(file);

        Database db(dir("test.db").c_str());


@@ 240,10 245,11 @@ TEST_CASE("Database initialization scripts")

    SECTION("execute invalid script")
    {
        ScopedDir dir(USER_PATH("scripts"));
        ScopedDir dir(USER_PATH("execute_invalid_script"));
        std::string test_file("test_1.sql");

        auto file = std::fopen(dir("test_1.sql").c_str(), "w");
        std::fprintf(file, "%s\n", script_invalid);
        auto file = std::fopen(dir(test_file).c_str(), "w");
        std::fwrite(script_invalid.data(), sizeof(char), script_invalid.size(), file);
        std::fclose(file);

        Database db(dir("test.db").c_str());

M module-gui/test/test-catch-text/test-gui-Font.cpp => module-gui/test/test-catch-text/test-gui-Font.cpp +3 -1
@@ 1,13 1,15 @@
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include <catch2/catch.hpp>
#include <FontManager.hpp>
#include <Font.hpp>
#include <Style.hpp>
#include <vfs.hpp>

TEST_CASE("Testo Font")
{
    vfs.Init();
    using namespace gui;
    auto &fm = FontManager::getInstance();
    fm.init("assets");