diff options
author | Andrei Karas <akaras@inbox.ru> | 2017-08-29 17:25:20 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2017-08-29 22:20:02 +0300 |
commit | 6c65b90a95bde4e5cee673f86efc135b92fce624 (patch) | |
tree | 576f56ec204af0ae142ec4c2fbfc09b2954d9c82 /src/unittests/utils/translation/poparser.cc | |
parent | 507dd572fc1cfb338b5d27d9afd5a469816ecc83 (diff) | |
download | manaverse-6c65b90a95bde4e5cee673f86efc135b92fce624.tar.gz manaverse-6c65b90a95bde4e5cee673f86efc135b92fce624.tar.bz2 manaverse-6c65b90a95bde4e5cee673f86efc135b92fce624.tar.xz manaverse-6c65b90a95bde4e5cee673f86efc135b92fce624.zip |
Remove _unittest from unit tests file names.
Diffstat (limited to 'src/unittests/utils/translation/poparser.cc')
-rw-r--r-- | src/unittests/utils/translation/poparser.cc | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/src/unittests/utils/translation/poparser.cc b/src/unittests/utils/translation/poparser.cc new file mode 100644 index 000000000..f724e66fb --- /dev/null +++ b/src/unittests/utils/translation/poparser.cc @@ -0,0 +1,158 @@ +/* + * The ManaPlus Client + * Copyright (C) 2016-2017 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "unittests/unittests.h" + +#include "client.h" +#include "configuration.h" +#include "configmanager.h" +#include "dirs.h" +#include "graphicsmanager.h" + +#include "being/actorsprite.h" + +#include "fs/virtfs/fs.h" + +#include "gui/gui.h" +#include "gui/theme.h" + +#include "utils/delete2.h" +#include "utils/env.h" + +#include "utils/translation/podict.h" +#include "utils/translation/poparser.h" + +#include "render/sdlgraphics.h" + +#include "resources/sdlimagehelper.h" + +#include "resources/resourcemanager/resourcemanager.h" + +#include "debug.h" + +TEST_CASE("PoParser leak test1", "") +{ + logger = new Logger(); + REQUIRE(gui == nullptr); + ResourceManager::cleanOrphans(true); + ResourceManager::deleteInstance(); + delete2(logger); +} + +TEST_CASE("PoParser tests", "PoParser") +{ + setEnv("SDL_VIDEODRIVER", "dummy"); + + client = new Client; + logger = new Logger(); + VirtFs::mountDirSilent("data", Append_false); + VirtFs::mountDirSilent("../data", Append_false); + + mainGraphics = new SDLGraphics; + imageHelper = new SDLImageHelper(); +#ifdef USE_SDL2 + SDLImageHelper::setRenderer(graphicsManager.createRenderer( + graphicsManager.createWindow(640, 480, 0, + SDL_WINDOW_SHOWN | SDL_SWSURFACE), SDL_RENDERER_SOFTWARE)); +#else // USE_SDL2 + + graphicsManager.createWindow(640, 480, 0, SDL_ANYFORMAT | SDL_SWSURFACE); +#endif // USE_SDL2 + + theme = new Theme; + Theme::selectSkin(); + + Dirs::initRootDir(); + Dirs::initHomeDir(); + + ConfigManager::initConfiguration(); + getConfigDefaults2(config.getDefaultValues()); + branding.setDefaultValues(getBrandingDefaults()); + + ActorSprite::load(); + gui = new Gui(); + gui->postInit(mainGraphics); + + SECTION("PoParser empty") + { + PoParser *parser = new PoParser; + PoDict *dict = parser->load("ru", + "unknownfilename.po", + nullptr); + + REQUIRE(dict != nullptr); + REQUIRE(dict->getMap() != nullptr); + REQUIRE(dict->getMap()->empty()); + + delete parser; + delete dict; + } + + SECTION("PoParser normal") + { + PoParser *parser = new PoParser; + PoDict *dict = parser->load("ru", + "test/test1", + nullptr); + + REQUIRE(dict != nullptr); + REQUIRE(dict->getMap() != nullptr); + REQUIRE(dict->getMap()->size() == 1786); + REQUIRE(dict->getStr("Unknown skill message.") == + "Неизвестная ошибка скилов."); + REQUIRE(dict->getStr("Full strip failed because of coating.") == + "Full strip failed because of coating."); + REQUIRE(dict->getStr("You picked up %d [@@%d|%s@@].") == + "Вы подняли %d [@@%d|%s@@]."); + + delete parser; + delete dict; + } + + SECTION("PoParser fuzzy") + { + PoParser *parser = new PoParser; + PoDict *dict = parser->load("ru", + "test/test1", + nullptr); + + REQUIRE(dict != nullptr); + REQUIRE(dict->getMap() != nullptr); + REQUIRE(dict->getMap()->size() == 1786); + REQUIRE(dict->getStr("Atk +100%.") == "Atk +100%."); + + delete parser; + delete dict; + } + delete2(client); + VirtFs::unmountDirSilent("data"); + VirtFs::unmountDirSilent("../data"); + delete2(logger); +// VirtFs::deinit(); +} + +TEST_CASE("PoParser leak test2", "") +{ + logger = new Logger(); + REQUIRE(gui == nullptr); + ResourceManager::cleanOrphans(true); + ResourceManager::deleteInstance(); + delete2(logger); +} |