mirror of
				https://github.com/tc39/test262.git
				synced 2025-11-03 21:24:30 +01: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(',')
 | 
						|
);
 |