summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/intl402/String/prototype/toLocaleUpperCase/special_casing_Lithuanian.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/intl402/String/prototype/toLocaleUpperCase/special_casing_Lithuanian.js')
-rw-r--r--js/src/tests/test262/intl402/String/prototype/toLocaleUpperCase/special_casing_Lithuanian.js115
1 files changed, 115 insertions, 0 deletions
diff --git a/js/src/tests/test262/intl402/String/prototype/toLocaleUpperCase/special_casing_Lithuanian.js b/js/src/tests/test262/intl402/String/prototype/toLocaleUpperCase/special_casing_Lithuanian.js
new file mode 100644
index 0000000000..2dfefd9851
--- /dev/null
+++ b/js/src/tests/test262/intl402/String/prototype/toLocaleUpperCase/special_casing_Lithuanian.js
@@ -0,0 +1,115 @@
+// Copyright (C) 2015 André Bargull. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+description: >
+ Check if String.prototype.toLocaleUpperCase supports language-sensitive mappings defined in SpecialCasings (Lithuanian)
+info: |
+ The result must be derived according to the case mappings in the Unicode character database (this explicitly
+ includes not only the UnicodeData.txt file, but also the SpecialCasings.txt file that accompanies it).
+es5id: 15.5.4.16
+es6id: 21.1.3.21
+---*/
+
+// SpecialCasing.txt, conditional, language-sensitive mappings (Lithuanian).
+
+// COMBINING DOT ABOVE (U+0307) not removed when uppercasing capital I and J.
+assert.sameValue(
+ "I\u0307".toLocaleUpperCase("lt"),
+ "I\u0307",
+ "COMBINING DOT ABOVE preceded by LATIN CAPITAL LETTER I"
+);
+assert.sameValue(
+ "J\u0307".toLocaleUpperCase("lt"),
+ "J\u0307",
+ "COMBINING DOT ABOVE preceded by LATIN CAPITAL LETTER J"
+);
+
+
+// Code points with Soft_Dotted property (Unicode 5.1, PropList.txt)
+var softDotted = [
+ "\u0069", "\u006A", // LATIN SMALL LETTER I..LATIN SMALL LETTER J
+ "\u012F", // LATIN SMALL LETTER I WITH OGONEK
+ "\u0249", // LATIN SMALL LETTER J WITH STROKE
+ "\u0268", // LATIN SMALL LETTER I WITH STROKE
+ "\u029D", // LATIN SMALL LETTER J WITH CROSSED-TAIL
+ "\u02B2", // MODIFIER LETTER SMALL J
+ "\u03F3", // GREEK LETTER YOT
+ "\u0456", // CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ "\u0458", // CYRILLIC SMALL LETTER JE
+ "\u1D62", // LATIN SUBSCRIPT SMALL LETTER I
+ "\u1D96", // LATIN SMALL LETTER I WITH RETROFLEX HOOK
+ "\u1DA4", // MODIFIER LETTER SMALL I WITH STROKE
+ "\u1DA8", // MODIFIER LETTER SMALL J WITH CROSSED-TAIL
+ "\u1E2D", // LATIN SMALL LETTER I WITH TILDE BELOW
+ "\u1ECB", // LATIN SMALL LETTER I WITH DOT BELOW
+ "\u2071", // SUPERSCRIPT LATIN SMALL LETTER I
+ "\u2148", "\u2149", // DOUBLE-STRUCK ITALIC SMALL I..DOUBLE-STRUCK ITALIC SMALL J
+ "\u2C7C", // LATIN SUBSCRIPT SMALL LETTER J
+ "\uD835\uDC22", "\uD835\uDC23", // MATHEMATICAL BOLD SMALL I..MATHEMATICAL BOLD SMALL J
+ "\uD835\uDC56", "\uD835\uDC57", // MATHEMATICAL ITALIC SMALL I..MATHEMATICAL ITALIC SMALL J
+ "\uD835\uDC8A", "\uD835\uDC8B", // MATHEMATICAL BOLD ITALIC SMALL I..MATHEMATICAL BOLD ITALIC SMALL J
+ "\uD835\uDCBE", "\uD835\uDCBF", // MATHEMATICAL SCRIPT SMALL I..MATHEMATICAL SCRIPT SMALL J
+ "\uD835\uDCF2", "\uD835\uDCF3", // MATHEMATICAL BOLD SCRIPT SMALL I..MATHEMATICAL BOLD SCRIPT SMALL J
+ "\uD835\uDD26", "\uD835\uDD27", // MATHEMATICAL FRAKTUR SMALL I..MATHEMATICAL FRAKTUR SMALL J
+ "\uD835\uDD5A", "\uD835\uDD5B", // MATHEMATICAL DOUBLE-STRUCK SMALL I..MATHEMATICAL DOUBLE-STRUCK SMALL J
+ "\uD835\uDD8E", "\uD835\uDD8F", // MATHEMATICAL BOLD FRAKTUR SMALL I..MATHEMATICAL BOLD FRAKTUR SMALL J
+ "\uD835\uDDC2", "\uD835\uDDC3", // MATHEMATICAL SANS-SERIF SMALL I..MATHEMATICAL SANS-SERIF SMALL J
+ "\uD835\uDDF6", "\uD835\uDDF7", // MATHEMATICAL SANS-SERIF BOLD SMALL I..MATHEMATICAL SANS-SERIF BOLD SMALL J
+ "\uD835\uDE2A", "\uD835\uDE2B", // MATHEMATICAL SANS-SERIF ITALIC SMALL I..MATHEMATICAL SANS-SERIF ITALIC SMALL J
+ "\uD835\uDE5E", "\uD835\uDE5F", // MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
+ "\uD835\uDE92", "\uD835\uDE93", // MATHEMATICAL MONOSPACE SMALL I..MATHEMATICAL MONOSPACE SMALL J
+];
+assert.sameValue(softDotted.length, 46, "Total code points with Soft_Dotted property");
+
+function charInfo(ch) {
+ function hexString(n) {
+ var s = n.toString(16).toUpperCase();
+ return "0000".slice(s.length) + s;
+ }
+
+ if (ch.length === 1) {
+ return "U+" + hexString(ch.charCodeAt(0));
+ }
+ var high = ch.charCodeAt(0);
+ var low = ch.charCodeAt(1);
+ var codePoint = ((high << 10) + low) + (0x10000 - (0xD800 << 10) - 0xDC00);
+ return "U+" + hexString(codePoint) + " = " + hexString(high) + " " + hexString(low);
+}
+
+
+// COMBINING DOT ABOVE (U+0307) removed when preceded by Soft_Dotted.
+// Character directly preceded by Soft_Dotted.
+for (var i = 0; i < softDotted.length; ++i) {
+ assert.sameValue(
+ (softDotted[i] + "\u0307").toLocaleUpperCase("lt"),
+ softDotted[i].toLocaleUpperCase("und"),
+ "COMBINING DOT ABOVE preceded by Soft_Dotted (" + charInfo(softDotted[i]) + ")"
+ );
+}
+
+
+// COMBINING DOT ABOVE (U+0307) removed if preceded by Soft_Dotted.
+// Character not directly preceded by Soft_Dotted.
+// - COMBINING DOT BELOW (U+0323), combining class 220 (Below)
+for (var i = 0; i < softDotted.length; ++i) {
+ assert.sameValue(
+ (softDotted[i] + "\u0323\u0307").toLocaleUpperCase("lt"),
+ softDotted[i].toLocaleUpperCase("und") + "\u0323",
+ "COMBINING DOT ABOVE preceded by Soft_Dotted (" + charInfo(softDotted[i]) + "), COMBINING DOT BELOW"
+ );
+}
+
+
+// COMBINING DOT ABOVE removed if preceded by Soft_Dotted.
+// Character not directly preceded by Soft_Dotted.
+// - PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE (U+101FD = D800 DDFD), combining class 220 (Below)
+for (var i = 0; i < softDotted.length; ++i) {
+ assert.sameValue(
+ (softDotted[i] + "\uD800\uDDFD\u0307").toLocaleUpperCase("lt"),
+ softDotted[i].toLocaleUpperCase("und") + "\uD800\uDDFD",
+ "COMBINING DOT ABOVE preceded by Soft_Dotted (" + charInfo(softDotted[i]) + "), PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE"
+ );
+}
+
+reportCompare(0, 0);