summaryrefslogtreecommitdiff
path: root/libs/androidfw/tests/ConfigLocale_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/androidfw/tests/ConfigLocale_test.cpp')
-rw-r--r--libs/androidfw/tests/ConfigLocale_test.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/libs/androidfw/tests/ConfigLocale_test.cpp b/libs/androidfw/tests/ConfigLocale_test.cpp
index 2bf9b12b6ce5..6e998159e554 100644
--- a/libs/androidfw/tests/ConfigLocale_test.cpp
+++ b/libs/androidfw/tests/ConfigLocale_test.cpp
@@ -279,6 +279,23 @@ TEST(ConfigLocaleTest, getBcp47Locale_script) {
EXPECT_EQ(0, strcmp("en", out));
}
+TEST(ConfigLocaleTest, getBcp47Locale_canonicalize) {
+ ResTable_config config;
+ char out[RESTABLE_MAX_LOCALE_LEN];
+
+ fillIn("tl", NULL, NULL, NULL, &config);
+ config.getBcp47Locale(out);
+ EXPECT_EQ(0, strcmp("tl", out));
+ config.getBcp47Locale(out, true /* canonicalize */);
+ EXPECT_EQ(0, strcmp("fil", out));
+
+ fillIn("tl", "PH", NULL, NULL, &config);
+ config.getBcp47Locale(out);
+ EXPECT_EQ(0, strcmp("tl-PH", out));
+ config.getBcp47Locale(out, true /* canonicalize */);
+ EXPECT_EQ(0, strcmp("fil-PH", out));
+}
+
TEST(ConfigLocaleTest, match) {
ResTable_config supported, requested;
@@ -292,6 +309,11 @@ TEST(ConfigLocaleTest, match) {
// Different languages don't match.
EXPECT_FALSE(supported.match(requested));
+ fillIn("tl", "PH", NULL, NULL, &supported);
+ fillIn("fil", "PH", NULL, NULL, &requested);
+ // Equivalent languages match.
+ EXPECT_TRUE(supported.match(requested));
+
fillIn("qaa", "FR", NULL, NULL, &supported);
fillIn("qaa", "CA", NULL, NULL, &requested);
// If we can't infer the scripts, different regions don't match.
@@ -406,6 +428,12 @@ TEST(ConfigLocaleTest, isLocaleBetterThan_basics) {
EXPECT_FALSE(config2.isLocaleBetterThan(config1, &request));
fillIn("de", "DE", NULL, NULL, &request);
+ fillIn("de", "DE", NULL, NULL, &config1);
+ fillIn("de", "DE", NULL, "1901", &config2);
+ EXPECT_TRUE(config1.isLocaleBetterThan(config2, &request));
+ EXPECT_FALSE(config2.isLocaleBetterThan(config1, &request));
+
+ fillIn("de", "DE", NULL, NULL, &request);
fillIn("de", "DE", NULL, "1901", &config1);
fillIn("de", "DE", NULL, "1996", &config2);
EXPECT_FALSE(config1.isLocaleBetterThan(config2, &request));
@@ -422,6 +450,24 @@ TEST(ConfigLocaleTest, isLocaleBetterThan_basics) {
fillIn("de", "DE", NULL, NULL, &config2);
EXPECT_FALSE(config1.isLocaleBetterThan(config2, &request));
EXPECT_FALSE(config2.isLocaleBetterThan(config1, &request));
+
+ fillIn("fil", "PH", NULL, NULL, &request);
+ fillIn("tl", "PH", NULL, NULL, &config1);
+ fillIn("fil", "US", NULL, NULL, &config2);
+ EXPECT_TRUE(config1.isLocaleBetterThan(config2, &request));
+ EXPECT_FALSE(config2.isLocaleBetterThan(config1, &request));
+
+ fillIn("fil", "PH", NULL, "fonipa", &request);
+ fillIn("tl", "PH", NULL, "fonipa", &config1);
+ fillIn("fil", "PH", NULL, NULL, &config2);
+ EXPECT_TRUE(config1.isLocaleBetterThan(config2, &request));
+ EXPECT_FALSE(config2.isLocaleBetterThan(config1, &request));
+
+ fillIn("fil", "PH", NULL, NULL, &request);
+ fillIn("fil", "PH", NULL, NULL, &config1);
+ fillIn("tl", "PH", NULL, NULL, &config2);
+ EXPECT_TRUE(config1.isLocaleBetterThan(config2, &request));
+ EXPECT_FALSE(config2.isLocaleBetterThan(config1, &request));
}
TEST(ConfigLocaleTest, isLocaleBetterThan_regionComparison) {