123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- // Copyright (C) 2017 Mathias Bynens. 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 }\`)`
- );
- }
- }
- }
- // Returns a function that will validate RegExp match result
- //
- // Example:
- //
- // var validate = matchValidator(['b'], 1, 'abc');
- // validate(/b/.exec('abc'));
- //
- function matchValidator(expectedEntries, expectedIndex, expectedInput) {
- return function(match) {
- assert.compareArray(match, expectedEntries, 'Match entries');
- assert.sameValue(match.index, expectedIndex, 'Match index');
- assert.sameValue(match.input, expectedInput, 'Match input');
- }
- }
|