aboutsummaryrefslogtreecommitdiff
path: root/integration/snippets/latin1-chars-in-regexp.js
blob: 34a6c4a2ac47763199af5ea96a9bb15bcc7b0462 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// original code:
// var re_btou = new RegExp(
//   [
//     "[\xC0-\xDF][\x80-\xBF]",
//     "[\xE0-\xEF][\x80-\xBF]{2}",
//     "[\xF0-\xF7][\x80-\xBF]{3}",
//   ].join("|"),
//   "g"
// );

var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
var re_btou = new RegExp(
  [
    "[\xC0-\xDF][\x80-\xBF]",
    "[\xE0-\xEF][\x80-\xBF]{2}",
    "[\xF0-\xF7][\x80-\xBF]{3}",
  ].join("|"),
  "g"
);

const real = [
  "[\xC0-\xDF][\x80-\xBF]",
  "[\xE0-\xEF][\x80-\xBF]{2}",
  "[\xF0-\xF7][\x80-\xBF]{3}",
]
  .flatMap((a) => a.split(""))
  .map((a) => a.codePointAt(0));

const expected = [
  91, 192, 45, 223, 93, 91, 128, 45, 191, 93, 91, 224, 45, 239, 93, 91, 128, 45,
  191, 93, 123, 50, 125, 91, 240, 45, 247, 93, 91, 128, 45, 191, 93, 123, 51,
  125,
];

export function test() {
  if (!real.every((point, i) => point === expected[i])) {
    throw new Error(
      `test failed.\n\nExpected:\n ${expected.join(
        " "
      )}\Received:\n ${real.join(" ")}`
    );
  }

  testDone(import.meta.url);
}