mirror of
https://github.com/tc39/test262.git
synced 2025-08-19 08:58:27 +02:00
93 lines
2.4 KiB
JavaScript
93 lines
2.4 KiB
JavaScript
// Copyright (C) 2018 Leo Balter. All rights reserved.
|
|
// Copyright (C) 2024 Aurèle Barrière. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
esid: prod-CharacterClassEscape
|
|
description: >
|
|
Check negative cases of whitespace class escape \s.
|
|
info: |
|
|
This is a generated test. Please check out
|
|
https://github.com/tc39/test262/tree/main/tools/regexp-generator/
|
|
for any changes.
|
|
|
|
CharacterClassEscape[UnicodeMode] ::
|
|
d
|
|
D
|
|
s
|
|
S
|
|
w
|
|
W
|
|
[+UnicodeMode] p{ UnicodePropertyValueExpression }
|
|
[+UnicodeMode] P{ UnicodePropertyValueExpression }
|
|
|
|
22.2.2.9 Runtime Semantics: CompileToCharSet
|
|
|
|
CharacterClassEscape :: d
|
|
1. Return the ten-element CharSet containing the characters 0, 1, 2, 3, 4,
|
|
5, 6, 7, 8, and 9.
|
|
CharacterClassEscape :: D
|
|
1. Let S be the CharSet returned by CharacterClassEscape :: d.
|
|
2. Return CharacterComplement(rer, S).
|
|
CharacterClassEscape :: s
|
|
1. Return the CharSet containing all characters corresponding to a code
|
|
point on the right-hand side of the WhiteSpace or LineTerminator
|
|
productions.
|
|
CharacterClassEscape :: S
|
|
1. Let S be the CharSet returned by CharacterClassEscape :: s.
|
|
2. Return CharacterComplement(rer, S).
|
|
CharacterClassEscape :: w
|
|
1. Return MaybeSimpleCaseFolding(rer, WordCharacters(rer)).
|
|
CharacterClassEscape :: W
|
|
1. Let S be the CharSet returned by CharacterClassEscape :: w.
|
|
2. Return CharacterComplement(rer, S).
|
|
features: [String.fromCodePoint]
|
|
includes: [regExpUtils.js]
|
|
flags: [generated]
|
|
---*/
|
|
|
|
const str = buildString(
|
|
{
|
|
loneCodePoints: [],
|
|
ranges: [
|
|
[0x00DC00, 0x00DFFF],
|
|
[0x000000, 0x000008],
|
|
[0x00000E, 0x00001F],
|
|
[0x000021, 0x00009F],
|
|
[0x0000A1, 0x00167F],
|
|
[0x001681, 0x001FFF],
|
|
[0x00200B, 0x002027],
|
|
[0x00202A, 0x00202E],
|
|
[0x002030, 0x00205E],
|
|
[0x002060, 0x002FFF],
|
|
[0x003001, 0x00DBFF],
|
|
[0x00E000, 0x00FEFE],
|
|
[0x00FF00, 0x10FFFF]
|
|
]
|
|
}
|
|
);
|
|
|
|
const standard = /\s/;
|
|
const unicode = /\s/u;
|
|
const vflag = /\s/v;
|
|
const regexes = [standard,unicode,vflag];
|
|
|
|
const errors = [];
|
|
|
|
for (const regex of regexes) {
|
|
if (regex.test(str)) {
|
|
// Error, let's find out where
|
|
for (const char of str) {
|
|
if (regex.test(char)) {
|
|
errors.push('0x' + char.codePointAt(0).toString(16));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
assert.sameValue(
|
|
errors.length,
|
|
0,
|
|
'Expected no match, but matched: ' + errors.join(',')
|
|
);
|