| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| <script src="resources/utilities.js"></script> |
| </head> |
| <body> |
| <script> |
| description("IDNA2003 handling in domain name labels."); |
| |
| debug("The PASS/FAIL results of this test are set to the behavior in IDNA2003."); |
| |
| cases = [ |
| // For IDNA Compatibility test material see |
| // http://www.unicode.org/reports/tr46/ |
| // 1) Deviant character tests (deviant from IDNA2008) |
| // U+00DF normalizes to "ss" during IDNA2003's mapping phase |
| ["fa\u00DF.de","fass.de"], |
| // The ς U+03C2 GREEK SMALL LETTER FINAL SIGMA |
| ["\u03B2\u03CC\u03BB\u03BF\u03C2.com","xn--nxasmq6b.com"], |
| // The ZWJ U+200D ZERO WIDTH JOINER |
| ["\u0DC1\u0DCA\u200D\u0DBB\u0DD3.com","xn--10cl1a0b.com"], |
| // The ZWNJ U+200C ZERO WIDTH NON-JOINER |
| ["\u0646\u0627\u0645\u0647\u200C\u0627\u06CC.com","xn--mgba3gch31f.com"], |
| // 2) Normalization tests |
| ["www.loo\u0138out.net","www.xn--looout-5bb.net"], |
| ["\u15EF\u15EF\u15EF.lookout.net","xn--1qeaa.lookout.net"], |
| ["www.lookout.\u0441\u043E\u043C","www.lookout.xn--l1adi"], |
| ["www.lookout.net\uFF1A80","www.lookout.net:80"], |
| ["www\u2025lookout.net","www..lookout.net"], |
| ["www.lookout\u2027net","www.xn--lookoutnet-406e"], |
| // using Latin letter kra ‘ĸ’ in domain |
| ["www.loo\u0138out.net","www.xn--looout-5bb.net"], |
| // \u2A74 decomposes into ::= |
| ["www.lookout.net\u2A7480","www.lookout.net::%3D80"], |
| // 3) Prohibited code points |
| // Using prohibited high-ASCII \u00A0 |
| ["www\u00A0.lookout.net","www%20.lookout.net"], |
| // using prohibited non-ASCII space chars 1680 (Ogham space mark) |
| ["\u1680lookout.net","%E1%9A%80lookout.net"], |
| // Using prohibited lower ASCII control character \u001F |
| ["\u001Flookout.net","%1Flookout.net"], |
| // Using prohibited U+06DD ARABIC END OF AYAH |
| ["look\u06DDout.net","look%DB%9Dout.net"], |
| // Using prohibited U+180E MONGOLIAN VOWEL SEPARATOR |
| ["look\u180Eout.net","look%E1%A0%8Eout.net"], |
| // Using prohibited U+2060 WORD JOINER |
| ["look\u2060out.net","look%E2%81%A0out.net"], |
| // Using prohibited U+FEFF ZERO WIDTH NO-BREAK SPACE |
| ["look\uFEFFout.net","look%EF%BB%BFout.net"], |
| // Using prohibited Non-character code points 1FFFE [NONCHARACTER CODE POINTS] |
| ["look\uD83F\uDFFEout.net","look%F0%9F%BF%BEout.net"], |
| // Using prohibited U+DEAD half surrogate code point |
| // FIXME: ["look\uDEADout.net","look%ED%BA%ADout.net"], |
| // Using prohibited Inappropriate for plain text U+FFFA; INTERLINEAR ANNOTATION SEPARATOR |
| ["look\uFFFAout.net","look%EF%BF%BAout.net"], |
| // Using prohibited Inappropriate for canonical representation 2FF0-2FFB; [IDEOGRAPHIC DESCRIPTION CHARACTERS] |
| ["look\u2FF0out.net","look%E2%BF%B0out.net"], |
| // Using prohibited Change display properties or are deprecated 0341; COMBINING ACUTE TONE MARK |
| ["look\u0341out.net","look%CD%81out.net"], |
| // Using prohibited Change display properties or are deprecated 202E; RIGHT-TO-LEFT OVERRIDE |
| ["look\u202Eout.net","look%E2%80%AEout.net"], |
| // Using prohibited Change display properties or are deprecated 206B; ACTIVATE SYMMETRIC SWAPPING |
| ["look\u206Bout.net","look%E2%81%ABout.net"], |
| // Using prohibited Tagging characters E0001; LANGUAGE TAG |
| ["look\uDB40\uDC01out.net","look%F3%A0%80%81out.net"], |
| // Using prohibited Tagging characters E0020-E007F; [TAGGING CHARACTERS] |
| ["look\uDB40\uDC20out.net","look%F3%A0%80%A0out.net"], |
| // Using prohibited Characters with bidirectional property 05BE |
| ["look\u05BEout.net","look%D6%BEout.net"] |
| ]; |
| |
| for (var i = 0; i < cases.length; ++i) { |
| test_vector = cases[i][0]; |
| expected_result = cases[i][1]; |
| shouldBe("canonicalize('http://" + test_vector + "/')", |
| "'http://" + expected_result + "/'"); |
| } |
| </script> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |