Index: test/intl/general/case-mapping.js |
diff --git a/test/intl/general/case-mapping.js b/test/intl/general/case-mapping.js |
index 8914ea8ff326a766990971758101405da9b34e6f..feb0ff54f6f61f0c7311ccdf621ab94b9d277eeb 100644 |
--- a/test/intl/general/case-mapping.js |
+++ b/test/intl/general/case-mapping.js |
@@ -75,9 +75,26 @@ assertEquals("abcijkl", |
assertEquals("abci\u0307jkl", ("aBcI" + "\u0307jkl").toLocaleLowerCase("en")); |
assertEquals("abci\u0307jkl", |
("aB" + "cI" + "\u0307j" + "kl").toLocaleLowerCase("en")); |
+assertEquals("abci\u0307jkl", |
+ ("aB" + "cI" + "\u0307j" + "kl").toLocaleLowerCase("fil")); |
assertEquals("abci\u0307jkl", ("aBcI" + "\u0307jkl").toLowerCase()); |
assertEquals("abci\u0307jkl", |
("aB" + "cI" + "\u0307j" + "kl").toLowerCase()); |
+assertEquals("[object arraybuffer]", |
+ (new String(new ArrayBuffer())).toLocaleLowerCase("fil")); |
+assertEquals("[OBJECT ARRAYBUFFER]", |
+ (new String(new ArrayBuffer())).toLocaleUpperCase("fil")); |
+ |
+assertEquals("abcde", ("a" + "b" + "cde").toLowerCase()); |
+assertEquals("ABCDE", ("a" + "b" + "cde").toUpperCase()); |
+assertEquals("abcde", ("a" + "b" + "cde").toLocaleLowerCase()); |
+assertEquals("ABCDE", ("a" + "b" + "cde").toLocaleUpperCase()); |
+assertEquals("abcde", ("a" + "b" + "cde").toLocaleLowerCase("en")); |
+assertEquals("ABCDE", ("a" + "b" + "cde").toLocaleUpperCase("en")); |
+assertEquals("abcde", ("a" + "b" + "cde").toLocaleLowerCase("fil")); |
+assertEquals("ABCDE", ("a" + "b" + "cde").toLocaleUpperCase("fil")); |
+assertEquals("abcde", ("a" + "b" + "cde").toLocaleLowerCase("longlang")); |
+assertEquals("ABCDE", ("a" + "b" + "cde").toLocaleUpperCase("longlang")); |
// "tr" and "az" should behave identically. |
assertEquals("aBcI\u0307".toLocaleLowerCase("tr"), |
@@ -103,9 +120,25 @@ assertEquals("άόύώ".toLocaleUpperCase([]), |
// English/root locale keeps U+0307 (combining dot above). |
assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase("en")); |
+assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase("en-GB")); |
assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase(["en", "tr"])); |
assertEquals("abci\u0307", "aBcI\u0307".toLowerCase()); |
+// Anything other than 'tr' and 'az' behave like root for U+0307. |
+assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase("fil")); |
+assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase("zh-Hant-TW")); |
+assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase("i-klingon")); |
+ |
+// Up to 8 chars are allowed for the primary language tag in BCP 47. |
+assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase("longlang")); |
+assertEquals("ABCI\u0307", "aBcI\u0307".toLocaleUpperCase("longlang")); |
+assertEquals("abci\u0307", "aBcI\u0307".toLocaleLowerCase(["longlang", "tr"])); |
+assertEquals("ABCI\u0307", "aBcI\u0307".toLocaleUpperCase(["longlang", "tr"])); |
+assertThrows(() => "abc".toLocaleLowerCase("longlang2"), RangeError); |
+assertThrows(() => "abc".toLocaleUpperCase("longlang2"), RangeError); |
+assertThrows(() => "abc".toLocaleLowerCase(["longlang2", "en"]), RangeError); |
+assertThrows(() => "abc".toLocaleUpperCase(["longlang2", "en"]), RangeError); |
+ |
// Greek uppercasing: not covered by intl402/String/*, yet. Tonos (U+0301) and |
// other diacritic marks are dropped. See |
// http://bugs.icu-project.org/trac/ticket/5456#comment:19 for more examples. |