| // 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.toLocaleLowerCase supports language-sensitive mappings defined in SpecialCasings (Azeri) |
| 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.20 |
| ---*/ |
| |
| // SpecialCasing.txt, conditional, language-sensitive mappings (Azeri). |
| |
| // LATIN CAPITAL LETTER I WITH DOT ABOVE (U+0130) changed to LATIN SMALL LETTER I when lowercasing. |
| assert.sameValue( |
| "\u0130".toLocaleLowerCase("az"), |
| "i", |
| "LATIN CAPITAL LETTER I WITH DOT ABOVE" |
| ); |
| |
| |
| // COMBINING DOT ABOVE (U+0307) removed after LATIN CAPITAL LETTER I when lowercasing. |
| // - COMBINING DOT BELOW (U+0323), combining class 220 (Below) |
| // - PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE (U+101FD = D800 DDFD), combining class 220 (Below) |
| assert.sameValue( |
| "I\u0307".toLocaleLowerCase("az"), |
| "i", |
| "LATIN CAPITAL LETTER I followed by COMBINING DOT ABOVE" |
| ); |
| assert.sameValue( |
| "I\u0323\u0307".toLocaleLowerCase("az"), |
| "i\u0323", |
| "LATIN CAPITAL LETTER I followed by COMBINING DOT BELOW, COMBINING DOT ABOVE" |
| ); |
| assert.sameValue( |
| "I\uD800\uDDFD\u0307".toLocaleLowerCase("az"), |
| "i\uD800\uDDFD", |
| "LATIN CAPITAL LETTER I followed by PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE, COMBINING DOT ABOVE" |
| ); |
| |
| |
| // COMBINING DOT ABOVE (U+0307) not removed when character is preceded by a character of combining class 0. |
| assert.sameValue( |
| "IA\u0307".toLocaleLowerCase("az"), |
| "\u0131a\u0307", |
| "LATIN CAPITAL LETTER I followed by LATIN CAPITAL LETTER A, COMBINING DOT ABOVE" |
| ); |
| |
| |
| // COMBINING DOT ABOVE (U+0307) not removed when character is preceded by a character of combining class 230. |
| // - COMBINING GRAVE ACCENT (U+0300), combining class 230 (Above) |
| // - MUSICAL SYMBOL COMBINING DOIT (U+1D185, D834 DD85), combining class 230 (Above) |
| assert.sameValue( |
| "I\u0300\u0307".toLocaleLowerCase("az"), |
| "\u0131\u0300\u0307", |
| "LATIN CAPITAL LETTER I followed by COMBINING GRAVE ACCENT, COMBINING DOT ABOVE" |
| ); |
| assert.sameValue( |
| "I\uD834\uDD85\u0307".toLocaleLowerCase("az"), |
| "\u0131\uD834\uDD85\u0307", |
| "LATIN CAPITAL LETTER I followed by MUSICAL SYMBOL COMBINING DOIT, COMBINING DOT ABOVE" |
| ); |
| |
| |
| // LATIN CAPITAL LETTER I changed to LATIN SMALL LETTER DOTLESS I (U+0131) when lowercasing. |
| assert.sameValue( |
| "I".toLocaleLowerCase("az"), |
| "\u0131", |
| "LATIN CAPITAL LETTER I" |
| ); |
| |
| |
| // No changes when lowercasing LATIN SMALL LETTER I and LATIN SMALL LETTER DOTLESS I (U+0131). |
| assert.sameValue( |
| "i".toLocaleLowerCase("az"), |
| "i", |
| "LATIN SMALL LETTER I" |
| ); |
| assert.sameValue( |
| "\u0131".toLocaleLowerCase("az"), |
| "\u0131", |
| "LATIN SMALL LETTER DOTLESS I" |
| ); |