mirror of
https://github.com/tc39/test262.git
synced 2025-05-16 12:50:37 +02:00
Proposal: https://github.com/tc39/proposal-regexp-unicode-property-escapes These tests have been generated by the script at https://github.com/mathiasbynens/unicode-property-escapes-tests. They check all the properties and values that should be supported by implementations against the symbols they’re supposed to match. False positives are detected as well. Ref. #950. Ref. https://github.com/tc39/proposal-regexp-unicode-property-escapes/issues/4.
33 lines
915 B
JavaScript
33 lines
915 B
JavaScript
function buildString({ loneCodePoints, ranges }) {
|
|
const CHUNK_SIZE = 10000;
|
|
let result = String.fromCodePoint(...loneCodePoints);
|
|
for (const [start, end] of ranges) {
|
|
const codePoints = [];
|
|
for (let length = 0, codePoint = start; codePoint <= end; codePoint++) {
|
|
codePoints[length++] = codePoint;
|
|
if (length === CHUNK_SIZE) {
|
|
result += String.fromCodePoint(...codePoints);
|
|
codePoints.length = length = 0;
|
|
}
|
|
}
|
|
result += String.fromCodePoint(...codePoints);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
function testPropertyEscapes(regex, string, expression) {
|
|
if (!regex.test(string)) {
|
|
for (const symbol of string) {
|
|
const hex = symbol
|
|
.codePointAt(0)
|
|
.toString(16)
|
|
.toUpperCase()
|
|
.padStart(6, "0");
|
|
assert(
|
|
regex.test(symbol),
|
|
`\`${ expression }\` should match U+${ hex } (\`${ symbol }\`)`
|
|
);
|
|
}
|
|
}
|
|
}
|