src.dualinventive.com/dinet/sec-multi-proxy/libdipp/tests/translation.cpp

135 lines
3.4 KiB
C++

#include <di/Translation.h>
#include <iostream>
#include <fstream>
#include <gtest/gtest.h>
using namespace Di;
using namespace std;
TEST(Translation, isDefaultLangage) {
Translation t(".");
EXPECT_TRUE(t.isDefaultLanguage("default"));
}
TEST(Translation, setDefaultLanguage) {
Translation t(".");
t.setDefaultLanguage("nl");
EXPECT_TRUE(t.isDefaultLanguage("nl"));
}
TEST(Translation, loadInvalidFile) {
Translation t(".");
ofstream testFile;
testFile.open("default.json", ofstream::out);
testFile << "invalid" << endl;
testFile.close();
EXPECT_EQ("", t.getDefaultTranslation("save"));
unlink("default.json");
}
TEST(Translation, getDefaultTranslation) {
Translation t(".");
ofstream testFile;
testFile.open("default.json", ofstream::out);
testFile << "{\"save\": \"opslaan\", \"cancel\":\"annuleren\"}" << endl;
testFile.close();
EXPECT_EQ("opslaan", t.getDefaultTranslation("save"));
EXPECT_EQ("annuleren", t.getDefaultTranslation("cancel"));
unlink("default.json");
}
TEST(Translation, reloadLanguage) {
Translation t(".");
ofstream testFile;
testFile.open("nl.json", ofstream::out);
testFile << "{\"save\": \"opslaan\", \"cancel\":\"annuleren\"}" << endl;
testFile.close();
EXPECT_EQ("opslaan", t.getTranslation("save", "nl"));
EXPECT_EQ("annuleren", t.getTranslation("cancel", "nl"));
testFile.open("nl.json", ofstream::out);
testFile << "{\"save\": \"save\", \"cancel\":\"cancel\"}" << endl;
testFile.close();
t.reloadLanguage("nl");
EXPECT_EQ("save", t.getTranslation("save", "nl"));
EXPECT_EQ("cancel", t.getTranslation("cancel", "nl"));
unlink("nl.json");
}
TEST(Translation, getDefaultTranslationButNotFound) {
Translation t(".");
ofstream testFile;
testFile.open("default.json", ofstream::out);
testFile << "{\"save\": \"opslaan\", \"cancel\":\"annuleren\"}" << endl;
testFile.close();
EXPECT_EQ("", t.getDefaultTranslation("next"));
unlink("default.json");
}
TEST(Translation, getTranslationButFallbackOnDefaultLanguage) {
Translation t(".");
ofstream testFile;
testFile.open("default.json", ofstream::out);
testFile << "{\"save\": \"opslaan\", \"cancel\":\"annuleren\"}" << endl;
testFile.close();
ofstream testFile2;
testFile2.open("en.json", ofstream::out);
testFile2 << "{\"save\": \"save\"}" << endl;
testFile2.close();
ofstream testFile3;
testFile3.open("de.json", ofstream::out);
testFile3 << "{}" << endl;
testFile3.close();
EXPECT_EQ("save", t.getTranslation("save", "en"));
EXPECT_EQ("annuleren", t.getTranslation("cancel", "en"));
EXPECT_EQ("opslaan", t.getTranslation("save", "de"));
EXPECT_EQ("opslaan", t.getTranslation("save", "fr"));
unlink("default.json");
unlink("en.json");
unlink("de.json");
}
TEST(Translation, getTranslationFallbackOnDefaultLanguageButNotFound) {
Translation t(".");
ofstream testFile;
testFile.open("en.json", ofstream::out);
testFile << "{\"save\": \"save\"}" << endl;
testFile.close();
EXPECT_EQ("save", t.getTranslation("save", "en"));
EXPECT_EQ("", t.getTranslation("cancel", "en"));
unlink("en.json");
}
TEST(Translation, formattedTranslation) {
Translation t(".");
ofstream testFile;
testFile.open("en.json", ofstream::out);
testFile << "{\"message\": \"A %1$s jumped from a %2$d meter high fence.\"}" << endl;
testFile.close();
EXPECT_EQ("A cat jumped from a 10 meter high fence.", t.getTranslation("message", "en", "cat", 10));
EXPECT_EQ("A horse jumped from a 3 meter high fence.", t.getTranslation("message", "en", "horse", 3));
unlink("en.json");
}