@@ -51,24 +51,36 @@ TEST(TestLangCodeExpander, ConvertToISO6392B)
5151 std::string refstr;
5252 std::string varstr;
5353
54+ // ISO 639-2 with identical B and T forms
5455 refstr = " eng" ;
5556 EXPECT_TRUE (g_LangCodeExpander.ConvertToISO6392B (" en" , varstr));
5657 EXPECT_EQ (refstr, varstr);
5758
5859 EXPECT_TRUE (g_LangCodeExpander.ConvertToISO6392B (" eng" , varstr));
5960 EXPECT_EQ (refstr, varstr);
6061
62+ // ISO 639-2/B
63+ refstr = " fre" ;
64+ EXPECT_TRUE (g_LangCodeExpander.ConvertToISO6392B (" fre" , varstr));
65+ EXPECT_EQ (refstr, varstr);
66+
67+ // ISO 639-2/T
68+ refstr = " cze" ;
69+ EXPECT_TRUE (g_LangCodeExpander.ConvertToISO6392B (" ces" , varstr));
70+ EXPECT_EQ (refstr, varstr);
71+
6172 // win_id != iso639_2b
62- refstr = " fra " ;
73+ refstr = " fre " ;
6374 EXPECT_TRUE (g_LangCodeExpander.ConvertToISO6392B (" fra" , varstr, true ));
6475 EXPECT_EQ (refstr, varstr);
6576
77+ // ! \todo analyze, v.suspicious. What old situation required matching languages with regions?
6678 // Region code
6779 refstr = " bol" ;
6880 EXPECT_TRUE (g_LangCodeExpander.ConvertToISO6392B (" bol" , varstr));
6981 EXPECT_EQ (refstr, varstr);
7082
71- // non existent
83+ // non- existent or non-convertible
7284 refstr = " invalid" ;
7385 varstr = " invalid" ;
7486 EXPECT_FALSE (g_LangCodeExpander.ConvertToISO6392B (" ac" , varstr));
@@ -77,6 +89,9 @@ TEST(TestLangCodeExpander, ConvertToISO6392B)
7789 EXPECT_FALSE (g_LangCodeExpander.ConvertToISO6392B (" aaa" , varstr));
7890 EXPECT_EQ (refstr, varstr);
7991
92+ EXPECT_FALSE (g_LangCodeExpander.ConvertToISO6392B (" en-US" , varstr));
93+ EXPECT_EQ (refstr, varstr);
94+
8095 // Full english name, case insensitive
8196 refstr = " eng" ;
8297 EXPECT_TRUE (g_LangCodeExpander.ConvertToISO6392B (" English" , varstr, true ));
@@ -85,11 +100,6 @@ TEST(TestLangCodeExpander, ConvertToISO6392B)
85100 refstr = " eng" ;
86101 EXPECT_TRUE (g_LangCodeExpander.ConvertToISO6392B (" english" , varstr, true ));
87102 EXPECT_EQ (refstr, varstr);
88-
89- // Existing bug
90- // refstr = "ger";
91- // EXPECT_TRUE(g_LangCodeExpander.ConvertToISO6392B("deu", varstr));
92- // EXPECT_EQ(refstr, varstr);
93103}
94104
95105TEST (TestLangCodeExpander, ConvertToISO6391)
@@ -166,13 +176,7 @@ TEST(TestLangCodeExpander, ConvertToISO6392T)
166176 EXPECT_TRUE (g_LangCodeExpander.ConvertToISO6392T (" deu" , varstr, true ));
167177 EXPECT_EQ (refstr, varstr);
168178
169- // Should return deu instead of failing. Side effect of failure in Convert but maybe happens for historical reasons and something
170- // relies on that.
171- // For some reason, the function allows the language code to match with the region 'deu',
172- // but since it's not a valid ISO639-2/B code, it cannot be translated to its ISO-639-2/T code
173- refstr = " invalid" ;
174- varstr = " invalid" ;
175- EXPECT_FALSE (g_LangCodeExpander.ConvertToISO6392T (" deu" , varstr));
179+ EXPECT_TRUE (g_LangCodeExpander.ConvertToISO6392T (" deu" , varstr));
176180 EXPECT_EQ (refstr, varstr);
177181}
178182
0 commit comments