// Copyright (C) 2017 Ecma International. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- description: | Collection of functions used to assert the correctness of RegExp objects. ---*/ 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 }\`)` ); } } }