summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/shell.js
diff options
context:
space:
mode:
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.js60
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');
+ }
+}