diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-01-02 21:33:57 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-01-02 21:39:06 +0300 |
commit | adcfcee89317a5c2742f2825bce4e9fb34739581 (patch) | |
tree | cf539e6e4e7bbc1a61bf29bb6a9372fb43d15cbd /src/utils/translation | |
parent | 2a9ac5ea06d22e459762295546e88d76b835f552 (diff) | |
download | mv-adcfcee89317a5c2742f2825bce4e9fb34739581.tar.gz mv-adcfcee89317a5c2742f2825bce4e9fb34739581.tar.bz2 mv-adcfcee89317a5c2742f2825bce4e9fb34739581.tar.xz mv-adcfcee89317a5c2742f2825bce4e9fb34739581.zip |
Add unit tests for po parser.
Diffstat (limited to 'src/utils/translation')
-rw-r--r-- | src/utils/translation/podict.h | 2 | ||||
-rw-r--r-- | src/utils/translation/poparser_unittest.cc | 79 |
2 files changed, 81 insertions, 0 deletions
diff --git a/src/utils/translation/podict.h b/src/utils/translation/podict.h index dfb0f39ab..4153835bd 100644 --- a/src/utils/translation/podict.h +++ b/src/utils/translation/podict.h @@ -41,7 +41,9 @@ class PoDict final const char *getChar(const char *const str); +#ifndef UNITTESTS protected: +#endif friend class PoParser; PoMap *getMap() diff --git a/src/utils/translation/poparser_unittest.cc b/src/utils/translation/poparser_unittest.cc new file mode 100644 index 000000000..11ad6d575 --- /dev/null +++ b/src/utils/translation/poparser_unittest.cc @@ -0,0 +1,79 @@ +/* + * The ManaPlus Client + * Copyright (C) 2016 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 "catch.hpp" +#include "client.h" +#include "logger.h" + +#include "utils/translation/podict.h" +#include "utils/translation/poparser.h" + +#include "resources/resourcemanager.h" + +#include "utils/physfstools.h" + +#include "debug.h" + +TEST_CASE("PoParser tests", "PoParser") +{ + client = new Client; + PHYSFS_init("manaplus"); + dirSeparator = "/"; + logger = new Logger(); + ResourceManager::init(); + resourceManager->addToSearchPath("data", Append_false); + resourceManager->addToSearchPath("../data", Append_false); + + 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()->size() == 0); + + 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() == 1787); + 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; + } +} |