| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- function a(re,p,str) {
- if (!re.test(str)) console.log("FAILED -- regex: " + re.toString() + " should match codepoint: " + p.toString(16))
- }
- function b(re,p,str) {
- if (re.test(str)) console.log("FAILED -- regex: " + re.toString() + " should not match codepoint: " + p.toString(16))
- }
- //
- // Tests adapted from issue #517
- //
- a(/\u0345/iu,0x0345,'\u0345')
- a(/\u0345/iu,0x03b9,'\u0399')
- a(/\u0345/iu,0x03b9,'\u03b9')
- a(/\u0345/iu,0x1fbe,'\u1fbe')
- a(/\u0399/iu,0x0345,'\u0345')
- a(/\u0399/iu,0x03b9,'\u0399')
- a(/\u0399/iu,0x03b9,'\u03b9')
- a(/\u0399/iu,0x1fbe,'\u1fbe')
- a(/\u03b9/iu,0x0345,'\u0345')
- a(/\u03b9/iu,0x03b9,'\u0399')
- a(/\u03b9/iu,0x03b9,'\u03b9')
- a(/\u03b9/iu,0x1fbe,'\u1fbe')
- a(/\u1fbe/iu,0x0345,'\u0345')
- a(/\u1fbe/iu,0x03b9,'\u0399')
- a(/\u1fbe/iu,0x03b9,'\u03b9')
- a(/\u1fbe/iu,0x1fbe,'\u1fbe')
- a(/\u01f1/iu,0x01f3,'\u01f3')
- a(/\u0345/iu,0x03b9,'\u03b9')
- a(/\u037f/iu,0x03f3,'\u03f3')
- a(/\u0528/iu,0x0529,'\u0529')
- a(/\u052a/iu,0x052b,'\u052b')
- a(/\u052c/iu,0x052d,'\u052d')
- a(/\u052e/iu,0x052f,'\u052f')
- a(/\ua698/iu,0xa699,'\ua699')
- a(/\ua69a/iu,0xa69b,'\ua69b')
- a(/\ua796/iu,0xa797,'\ua797')
- a(/\ua798/iu,0xa799,'\ua799')
- a(/\ua79a/iu,0xa79b,'\ua79b')
- a(/\ua79c/iu,0xa79d,'\ua79d')
- a(/\ua79e/iu,0xa79f,'\ua79f')
- a(/\ua7ab/iu,0x025c,'\u025c')
- a(/\ua7ac/iu,0x0261,'\u0261')
- a(/\ua7ad/iu,0x026c,'\u026c')
- a(/\ua7b0/iu,0x029e,'\u029e')
- a(/\ua7b1/iu,0x0287,'\u0287')
- a(/\u0345/i,0x0345,'\u0345')
- a(/\u0345/i,0x03b9,'\u0399')
- a(/\u0345/i,0x03b9,'\u03b9')
- a(/\u0345/i,0x1fbe,'\u1fbe')
- a(/\u0399/i,0x0345,'\u0345')
- a(/\u0399/i,0x03b9,'\u0399')
- a(/\u0399/i,0x03b9,'\u03b9')
- a(/\u0399/i,0x1fbe,'\u1fbe')
- a(/\u03b9/i,0x0345,'\u0345')
- a(/\u03b9/i,0x03b9,'\u0399')
- a(/\u03b9/i,0x03b9,'\u03b9')
- a(/\u03b9/i,0x1fbe,'\u1fbe')
- a(/\u1fbe/i,0x0345,'\u0345')
- a(/\u1fbe/i,0x03b9,'\u0399')
- a(/\u1fbe/i,0x03b9,'\u03b9')
- a(/\u1fbe/i,0x1fbe,'\u1fbe')
- a(/\u01f1/i,0x01f3,'\u01f3')
- a(/\u037f/i,0x03f3,'\u03f3')
- a(/\u0528/i,0x0529,'\u0529')
- a(/\u052a/i,0x052b,'\u052b')
- a(/\u052c/i,0x052d,'\u052d')
- a(/\u052e/i,0x052f,'\u052f')
- a(/\ua698/i,0xa699,'\ua699')
- a(/\ua69a/i,0xa69b,'\ua69b')
- a(/\ua796/i,0xa797,'\ua797')
- a(/\ua798/i,0xa799,'\ua799')
- a(/\ua79a/i,0xa79b,'\ua79b')
- a(/\ua79c/i,0xa79d,'\ua79d')
- a(/\ua79e/i,0xa79f,'\ua79f')
- a(/\ua7ab/i,0x025c,'\u025c')
- a(/\ua7ac/i,0x0261,'\u0261')
- a(/\ua7ad/i,0x026c,'\u026c')
- a(/\ua7b0/i,0x029e,'\u029e')
- a(/\ua7b1/i,0x0287,'\u0287')
- //
- // Detect regressions in the CaseInsensitive table
- //
- // 01BA != 01BB under /i.
- b(/\u01ba/iu,0x01bb,"\u01bb")
- b(/\u01bb/iu,0x01ba,"\u01ba")
- b(/\u01ba/i,0x01bb,"\u01bb")
- b(/\u01bb/i,0x01ba,"\u01ba")
- // 01F0 doesn't match anything
- b(/\u01f0/iu,0x01f1,"\u01f1")
- b(/\u01f1/iu,0x01f0,"\u01f0")
- b(/\u01f0/i,0x01f1,"\u01f1")
- b(/\u01f1/i,0x01f0,"\u01f0")
- // 01F4-5 match (G with ACUTE)
- a(/\u01f4/iu,0x01f5,"\u01f5")
- a(/\u01f5/iu,0x01f4,"\u01f4")
- a(/\u01f4/i,0x01f5,"\u01f5")
- a(/\u01f5/i,0x01f4,"\u01f4")
- // Latin ligature triples DZ WITH CARON,LJ,NJ (01C4-01CC) DZ (01F1-3)
- a(/\u01c4/iu,0x01c4,'\u01c4')
- a(/\u01c4/iu,0x01c5,'\u01c5')
- a(/\u01c4/iu,0x01c6,'\u01c6')
- a(/\u01c5/iu,0x01c4,'\u01c4')
- a(/\u01c5/iu,0x01c5,'\u01c5')
- a(/\u01c5/iu,0x01c6,'\u01c6')
- a(/\u01c6/iu,0x01c4,'\u01c4')
- a(/\u01c6/iu,0x01c5,'\u01c5')
- a(/\u01c6/iu,0x01c6,'\u01c6')
- a(/\u01c7/iu,0x01c7,'\u01c7')
- a(/\u01c7/iu,0x01c8,'\u01c8')
- a(/\u01c7/iu,0x01c9,'\u01c9')
- a(/\u01c9/iu,0x01c7,'\u01c7')
- a(/\u01c9/iu,0x01c8,'\u01c8')
- a(/\u01c9/iu,0x01c9,'\u01c9')
- a(/\u01c8/iu,0x01c7,'\u01c7')
- a(/\u01c8/iu,0x01c8,'\u01c8')
- a(/\u01c8/iu,0x01c9,'\u01c9')
- a(/\u01ca/iu,0x01ca,'\u01ca')
- a(/\u01ca/iu,0x01cb,'\u01cb')
- a(/\u01ca/iu,0x01cc,'\u01cc')
- a(/\u01cb/iu,0x01ca,'\u01ca')
- a(/\u01cb/iu,0x01cb,'\u01cb')
- a(/\u01cb/iu,0x01cc,'\u01cc')
- a(/\u01cc/iu,0x01ca,'\u01ca')
- a(/\u01cc/iu,0x01cb,'\u01cb')
- a(/\u01cc/iu,0x01cc,'\u01cc')
- a(/\u01f1/iu,0x01f1,'\u01f1')
- a(/\u01f1/iu,0x01f2,'\u01f2')
- a(/\u01f1/iu,0x01f3,'\u01f3')
- a(/\u01f2/iu,0x01f2,'\u01f2')
- a(/\u01f2/iu,0x01f1,'\u01f1')
- a(/\u01f2/iu,0x01f3,'\u01f3')
- a(/\u01f3/iu,0x01f1,'\u01f1')
- a(/\u01f3/iu,0x01f2,'\u01f2')
- a(/\u01f3/iu,0x01f3,'\u01f3')
- a(/\u01c4/i,0x01c4,'\u01c4')
- a(/\u01c4/i,0x01c5,'\u01c5')
- a(/\u01c4/i,0x01c6,'\u01c6')
- a(/\u01c5/i,0x01c4,'\u01c4')
- a(/\u01c5/i,0x01c5,'\u01c5')
- a(/\u01c5/i,0x01c6,'\u01c6')
- a(/\u01c6/i,0x01c4,'\u01c4')
- a(/\u01c6/i,0x01c5,'\u01c5')
- a(/\u01c6/i,0x01c6,'\u01c6')
- a(/\u01c7/i,0x01c7,'\u01c7')
- a(/\u01c7/i,0x01c8,'\u01c8')
- a(/\u01c7/i,0x01c9,'\u01c9')
- a(/\u01c9/i,0x01c7,'\u01c7')
- a(/\u01c9/i,0x01c8,'\u01c8')
- a(/\u01c9/i,0x01c9,'\u01c9')
- a(/\u01c8/i,0x01c7,'\u01c7')
- a(/\u01c8/i,0x01c8,'\u01c8')
- a(/\u01c8/i,0x01c9,'\u01c9')
- a(/\u01ca/i,0x01ca,'\u01ca')
- a(/\u01ca/i,0x01cb,'\u01cb')
- a(/\u01ca/i,0x01cc,'\u01cc')
- a(/\u01cb/i,0x01ca,'\u01ca')
- a(/\u01cb/i,0x01cb,'\u01cb')
- a(/\u01cb/i,0x01cc,'\u01cc')
- a(/\u01cc/i,0x01ca,'\u01ca')
- a(/\u01cc/i,0x01cb,'\u01cb')
- a(/\u01cc/i,0x01cc,'\u01cc')
- a(/\u01f1/i,0x01f1,'\u01f1')
- a(/\u01f1/i,0x01f2,'\u01f2')
- a(/\u01f1/i,0x01f3,'\u01f3')
- a(/\u01f2/i,0x01f2,'\u01f2')
- a(/\u01f2/i,0x01f1,'\u01f1')
- a(/\u01f2/i,0x01f3,'\u01f3')
- a(/\u01f3/i,0x01f1,'\u01f1')
- a(/\u01f3/i,0x01f2,'\u01f2')
- a(/\u01f3/i,0x01f3,'\u01f3')
- // 037F and 03F3 - GREEK LETTER YOT
- a(/\u037f/iu,0x037f,'\u037f')
- a(/\u037f/iu,0x03f3,'\u03f3')
- a(/\u03f3/iu,0x037f,'\u037f')
- a(/\u03f3/iu,0x03f3,'\u03f3')
- a(/\u037f/i,0x037f,'\u037f')
- a(/\u037f/i,0x03f3,'\u03f3')
- a(/\u03f3/i,0x037f,'\u037f')
- a(/\u03f3/i,0x03f3,'\u03f3')
- // New Cyrillic case-mapped pairs
- a(/\u0528/iu,0x0529,'\u0529')
- a(/\u0529/iu,0x0528,'\u0528')
- a(/\u052a/iu,0x052b,'\u052b')
- a(/\u052b/iu,0x052a,'\u052a')
- a(/\u052c/iu,0x052d,'\u052d')
- a(/\u052d/iu,0x052c,'\u052c')
- a(/\u052e/iu,0x052f,'\u052f')
- a(/\u052f/iu,0x052e,'\u052e')
- a(/\ua698/iu,0xa699,'\ua699')
- a(/\ua699/iu,0xa698,'\ua698')
- a(/\ua69a/iu,0xa69b,'\ua69b')
- a(/\ua69b/iu,0xa69a,'\ua69a')
- a(/\u0528/i,0x0529,'\u0529')
- a(/\u0529/i,0x0528,'\u0528')
- a(/\u052a/i,0x052b,'\u052b')
- a(/\u052b/i,0x052a,'\u052a')
- a(/\u052c/i,0x052d,'\u052d')
- a(/\u052d/i,0x052c,'\u052c')
- a(/\u052e/i,0x052f,'\u052f')
- a(/\u052f/i,0x052e,'\u052e')
- a(/\ua698/i,0xa699,'\ua699')
- a(/\ua699/i,0xa698,'\ua698')
- a(/\ua69a/i,0xa69b,'\ua69b')
- a(/\ua69b/i,0xa69a,'\ua69a')
- // New Cherokee uppercase-lowercase mappings and case-mapping pairs.
- a(/\u13a0/iu,0xab70,'\uab70')
- a(/\uab70/iu,0x13a0,'\u13a0')
- a(/\u13a1/iu,0xab71,'\uab71')
- a(/\uab71/iu,0x13a1,'\u13a1')
- // ...
- a(/\u13ee/iu,0xabbe,'\uabbe')
- a(/\uabbe/iu,0x13ee,'\u13ee')
- a(/\u13ef/iu,0xabbf,'\uabbf')
- a(/\uabbf/iu,0x13ef,'\u13ef')
- a(/\u13f0/iu,0x13f8,'\u13f8')
- a(/\u13f8/iu,0x13f0,'\u13f0')
- a(/\u13f1/iu,0x13f9,'\u13f9')
- a(/\u13f9/iu,0x13f1,'\u13f1')
- a(/\u13f2/iu,0x13fa,'\u13fa')
- a(/\u13fa/iu,0x13f2,'\u13f2')
- a(/\u13f3/iu,0x13fb,'\u13fb')
- a(/\u13fb/iu,0x13f3,'\u13f3')
- a(/\u13f4/iu,0x13fc,'\u13fc')
- a(/\u13fc/iu,0x13f4,'\u13f4')
- a(/\u13f5/iu,0x13fd,'\u13fd')
- a(/\u13fd/iu,0x13f5,'\u13f5')
- // NOTE: Cherokee does not case-fold without /u
- b(/\u13a0/i,0xab70,'\uab70')
- b(/\uab70/i,0x13a0,'\u13a0')
- b(/\u13a1/i,0xab71,'\uab71')
- b(/\uab71/i,0x13a1,'\u13a1')
- // ...
- b(/\u13ee/i,0xabbe,'\uabbe')
- b(/\uabbe/i,0x13ee,'\u13ee')
- b(/\u13ef/i,0xabbf,'\uabbf')
- b(/\uabbf/i,0x13ef,'\u13ef')
- b(/\u13f0/i,0x13f8,'\u13f8')
- b(/\u13f8/i,0x13f0,'\u13f0')
- b(/\u13f1/i,0x13f9,'\u13f9')
- b(/\u13f9/i,0x13f1,'\u13f1')
- b(/\u13f2/i,0x13fa,'\u13fa')
- b(/\u13fa/i,0x13f2,'\u13f2')
- b(/\u13f3/i,0x13fb,'\u13fb')
- b(/\u13fb/i,0x13f3,'\u13f3')
- b(/\u13f4/i,0x13fc,'\u13fc')
- b(/\u13fc/i,0x13f4,'\u13f4')
- b(/\u13f5/i,0x13fd,'\u13fd')
- b(/\u13fd/i,0x13f5,'\u13f5')
- // Latin extensions added in Unicode 7.0
- a(/\ua796/iu,0xa797,'\ua797')
- a(/\ua797/iu,0xa796,'\ua796')
- a(/\ua798/iu,0xa799,'\ua799')
- a(/\ua799/iu,0xa798,'\ua798')
- a(/\ua79a/iu,0xa79b,'\ua79b')
- a(/\ua79b/iu,0xa79a,'\ua79a')
- a(/\ua79c/iu,0xa79d,'\ua79d')
- a(/\ua79d/iu,0xa79c,'\ua79c')
- a(/\ua79e/iu,0xa79f,'\ua79f')
- a(/\ua79f/iu,0xa79e,'\ua79e')
- a(/\ua796/i,0xa797,'\ua797')
- a(/\ua797/i,0xa796,'\ua796')
- a(/\ua798/i,0xa799,'\ua799')
- a(/\ua799/i,0xa798,'\ua798')
- a(/\ua79a/i,0xa79b,'\ua79b')
- a(/\ua79b/i,0xa79a,'\ua79a')
- a(/\ua79c/i,0xa79d,'\ua79d')
- a(/\ua79d/i,0xa79c,'\ua79c')
- a(/\ua79e/i,0xa79f,'\ua79f')
- a(/\ua79f/i,0xa79e,'\ua79e')
- console.log("PASS")
|