#include #include #include #include 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"); }