135 lines
3.4 KiB
C++
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");
|
|
}
|
|
|