summaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-01-02 21:33:57 +0300
committerAndrei Karas <akaras@inbox.ru>2016-01-02 21:39:06 +0300
commitadcfcee89317a5c2742f2825bce4e9fb34739581 (patch)
treecf539e6e4e7bbc1a61bf29bb6a9372fb43d15cbd /src/utils
parent2a9ac5ea06d22e459762295546e88d76b835f552 (diff)
downloadmv-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')
-rw-r--r--src/utils/translation/podict.h2
-rw-r--r--src/utils/translation/poparser_unittest.cc79
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;
+ }
+}