1/* 2 * Copyright 2014-2021 Haiku, Inc. 3 * Distributed under the terms of the MIT License. 4 */ 5 6 7#include "LanguageTest.h" 8 9#include "Language.h" 10 11#include <cppunit/TestCaller.h> 12#include <cppunit/TestSuite.h> 13 14 15LanguageTest::LanguageTest() 16{ 17} 18 19 20LanguageTest::~LanguageTest() 21{ 22} 23 24 25void 26LanguageTest::TestLanguageParseJapanese() 27{ 28 // GIVEN 29 30 // WHEN 31 BLanguage language("jp"); 32 33 // THEN 34 CPPUNIT_ASSERT_EQUAL(BString("jp"), language.ID()); 35 CPPUNIT_ASSERT_EQUAL(BString("jp"), language.Code()); 36 CPPUNIT_ASSERT_EQUAL(BString(""), language.ScriptCode()); 37 CPPUNIT_ASSERT_EQUAL(BString(""), language.CountryCode()); 38} 39 40 41void 42LanguageTest::TestLanguageParseFrenchWithCountry() 43{ 44 // GIVEN 45 46 // WHEN 47 BLanguage language("fr_FR"); 48 49 // THEN 50 CPPUNIT_ASSERT_EQUAL(BString("fr_FR"), language.ID()); 51 CPPUNIT_ASSERT_EQUAL(BString("fr"), language.Code()); 52 CPPUNIT_ASSERT_EQUAL(BString(""), language.ScriptCode()); 53 CPPUNIT_ASSERT_EQUAL(BString("FR"), language.CountryCode()); 54} 55 56 57void 58LanguageTest::TestLanguageParseSerbianScriptAndCountry() 59{ 60 // GIVEN 61 62 // WHEN 63 BLanguage language("sr_Latn_BA"); 64 65 // THEN 66 CPPUNIT_ASSERT_EQUAL(BString("sr_Latn_BA"), language.ID()); 67 CPPUNIT_ASSERT_EQUAL(BString("sr"), language.Code()); 68 CPPUNIT_ASSERT_EQUAL(BString("BA"), language.CountryCode()); 69 CPPUNIT_ASSERT_EQUAL(BString("Latn"), language.ScriptCode()); 70} 71 72 73void 74LanguageTest::TestLanguageParseSerbianScriptAndCountryHyphens() 75{ 76 // GIVEN 77 78 // WHEN 79 BLanguage language("sr-Latn-BA"); 80 81 // THEN 82 CPPUNIT_ASSERT_EQUAL(BString("sr_Latn_BA"), language.ID()); 83 CPPUNIT_ASSERT_EQUAL(BString("sr"), language.Code()); 84 CPPUNIT_ASSERT_EQUAL(BString("BA"), language.CountryCode()); 85 CPPUNIT_ASSERT_EQUAL(BString("Latn"), language.ScriptCode()); 86} 87 88 89void 90LanguageTest::TestLanguageNameFrenchInEnglish() 91{ 92 // GIVEN 93 BLanguage languageFrench("fr_FR"); 94 BLanguage languageEnglish("en_US"); 95 BString name; 96 97 // WHEN 98 languageFrench.GetName(name, &languageEnglish); 99 // get the name of French in English 100 101 // THEN 102 CPPUNIT_ASSERT_EQUAL(BString("French (France)"), name); 103} 104 105 106void 107LanguageTest::TestLanguageNameFrenchInFrench() 108{ 109 // GIVEN 110 BLanguage languageFrench("fr_FR"); 111 BString name; 112 113 // WHEN 114 languageFrench.GetName(name, &languageFrench); 115 // get the name of French in French 116 117 // THEN 118 CPPUNIT_ASSERT_EQUAL(BString("fran��ais (France)"), name); 119} 120 121 122void 123LanguageTest::TestLanguagePropertiesFrench() 124{ 125 // GIVEN 126 BLanguage language("fr_FR"); 127 128 // WHEN 129 130 // THEN 131 CPPUNIT_ASSERT_EQUAL(BString("fr"), language.Code()); 132 CPPUNIT_ASSERT(language.Direction() == B_LEFT_TO_RIGHT); 133} 134 135 136/*static*/ void 137LanguageTest::AddTests(BTestSuite& parent) 138{ 139 CppUnit::TestSuite& suite = *new CppUnit::TestSuite("LanguageTest"); 140 141 suite.addTest(new CppUnit::TestCaller<LanguageTest>( 142 "LanguageTest::TestLanguageParseJapanese", 143 &LanguageTest::TestLanguageParseJapanese)); 144 suite.addTest(new CppUnit::TestCaller<LanguageTest>( 145 "LanguageTest::TestLanguageParseFrenchWithCountry", 146 &LanguageTest::TestLanguageParseFrenchWithCountry)); 147 suite.addTest(new CppUnit::TestCaller<LanguageTest>( 148 "LanguageTest::TestLanguageParseSerbianScriptAndCountry", 149 &LanguageTest::TestLanguageParseSerbianScriptAndCountry)); 150 suite.addTest(new CppUnit::TestCaller<LanguageTest>( 151 "LanguageTest::TestLanguageParseSerbianScriptAndCountryHyphens", 152 &LanguageTest::TestLanguageParseSerbianScriptAndCountryHyphens)); 153 154 suite.addTest(new CppUnit::TestCaller<LanguageTest>( 155 "LanguageTest::TestLanguageNameFrenchInEnglish", 156 &LanguageTest::TestLanguageNameFrenchInEnglish)); 157 suite.addTest(new CppUnit::TestCaller<LanguageTest>( 158 "LanguageTest::TestLanguageNameFrenchInFrench", 159 &LanguageTest::TestLanguageNameFrenchInFrench)); 160 suite.addTest(new CppUnit::TestCaller<LanguageTest>( 161 "LanguageTest::TestLanguagePropertiesFrench", 162 &LanguageTest::TestLanguagePropertiesFrench)); 163 164 parent.addTest("LanguageTest", &suite); 165} 166