diff options
Diffstat (limited to 'js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/shell.js')
-rw-r--r-- | js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/shell.js | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/shell.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/shell.js new file mode 100644 index 0000000000..3c80817b09 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/shell.js @@ -0,0 +1,60 @@ +// GENERATED, DO NOT EDIT +// file: regExpUtils.js +// 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. +defines: [buildString, testPropertyEscapes, matchValidator] +---*/ + +function buildString({ loneCodePoints, ranges }) { + const CHUNK_SIZE = 10000; + let result = Reflect.apply(String.fromCodePoint, null, loneCodePoints); + for (let i = 0; i < ranges.length; i++) { + const range = ranges[i]; + const start = range[0]; + const end = range[1]; + const codePoints = []; + for (let length = 0, codePoint = start; codePoint <= end; codePoint++) { + codePoints[length++] = codePoint; + if (length === CHUNK_SIZE) { + result += Reflect.apply(String.fromCodePoint, null, codePoints); + codePoints.length = length = 0; + } + } + result += Reflect.apply(String.fromCodePoint, null, 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'); + } +} |