mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-31 03:34:08 +01:00 
			
		
		
		
	sourceRevisionAtLastExport: 33f2fb0e53d135f0ee17cfccd9d993eb2a6f47de targetRevisionAtLastExport: 31340cbd9add103f586d501b0c3354b7b182abc0
		
			
				
	
	
		
			147 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Copyright 2017 the V8 project authors. All rights reserved.
 | |
| // Use of this source code is governed by a BSD-style license that can be
 | |
| // found in the LICENSE file.
 | |
| 
 | |
| // Flags: --regexp-mode-modifiers
 | |
| 
 | |
| aa(/(a)(?i)\1/);
 | |
| aa(/([az])(?i)\1/);
 | |
| 
 | |
| function aa(re) {
 | |
|   assertTrue(re.test("aa"));
 | |
|   assertTrue(re.test("aA"));
 | |
|   assertFalse(re.test("Aa"));
 | |
|   assertFalse(re.test("AA"));
 | |
| }
 | |
| 
 | |
| aai(/(a)(?-i)\1/i);
 | |
| aai(/([az])(?-i)\1/i);
 | |
| 
 | |
| function aai(re) {
 | |
|   assertTrue(re.test("aa"));
 | |
|   assertFalse(re.test("aA"));
 | |
|   assertFalse(re.test("Aa"));
 | |
|   assertTrue(re.test("AA"));
 | |
| }
 | |
| 
 | |
| abcd(/a(b(?i)c)d/);
 | |
| abcd(/[aw]([bx](?i)[cy])[dz]/);
 | |
| 
 | |
| function abcd(re) {
 | |
|   assertTrue(re.test("abcd"));
 | |
|   assertFalse(re.test("abcD"));
 | |
|   assertTrue(re.test("abCd"));
 | |
|   assertFalse(re.test("abCD"));
 | |
|   assertFalse(re.test("aBcd"));
 | |
|   assertFalse(re.test("aBcD"));
 | |
|   assertFalse(re.test("aBCd"));
 | |
|   assertFalse(re.test("aBCD"));
 | |
|   assertFalse(re.test("Abcd"));
 | |
|   assertFalse(re.test("AbcD"));
 | |
|   assertFalse(re.test("AbCd"));
 | |
|   assertFalse(re.test("AbCD"));
 | |
|   assertFalse(re.test("ABcd"));
 | |
|   assertFalse(re.test("ABcD"));
 | |
|   assertFalse(re.test("ABCd"));
 | |
|   assertFalse(re.test("ABCD"));
 | |
| }
 | |
| 
 | |
| abcdei(/a(b(?-i)c)d/i);
 | |
| abcdei(/[aw]([bx](?-i)[cy])[dz]/i);
 | |
| 
 | |
| function abcdei(re) {
 | |
|   assertTrue(re.test("abcd"));
 | |
|   assertTrue(re.test("abcD"));
 | |
|   assertFalse(re.test("abCd"));
 | |
|   assertFalse(re.test("abCD"));
 | |
|   assertTrue(re.test("aBcd"));
 | |
|   assertTrue(re.test("aBcD"));
 | |
|   assertFalse(re.test("aBCd"));
 | |
|   assertFalse(re.test("aBCD"));
 | |
|   assertTrue(re.test("Abcd"));
 | |
|   assertTrue(re.test("AbcD"));
 | |
|   assertFalse(re.test("AbCd"));
 | |
|   assertFalse(re.test("AbCD"));
 | |
|   assertTrue(re.test("ABcd"));
 | |
|   assertTrue(re.test("ABcD"));
 | |
|   assertFalse(re.test("ABCd"));
 | |
|   assertFalse(re.test("ABCD"));
 | |
| }
 | |
| 
 | |
| abc(/a(?i:b)c/);
 | |
| abc(/[ax](?i:[by])[cz]/);
 | |
| 
 | |
| function abc(re) {
 | |
|   assertTrue(re.test("abc"));
 | |
|   assertFalse(re.test("abC"));
 | |
|   assertTrue(re.test("aBc"));
 | |
|   assertFalse(re.test("aBC"));
 | |
|   assertFalse(re.test("Abc"));
 | |
|   assertFalse(re.test("AbC"));
 | |
|   assertFalse(re.test("ABc"));
 | |
|   assertFalse(re.test("ABC"));
 | |
| }
 | |
| 
 | |
| abci(/a(?-i:b)c/i);
 | |
| abci(/[ax](?-i:[by])[cz]/i);
 | |
| 
 | |
| function abci(re) {
 | |
|   assertTrue(re.test("abc"));
 | |
|   assertTrue(re.test("abC"));
 | |
|   assertFalse(re.test("aBc"));
 | |
|   assertFalse(re.test("aBC"));
 | |
|   assertTrue(re.test("Abc"));
 | |
|   assertTrue(re.test("AbC"));
 | |
|   assertFalse(re.test("ABc"));
 | |
|   assertFalse(re.test("ABC"));
 | |
| }
 | |
| 
 | |
| assertThrows(() => new RegExp("foo(?i:"));
 | |
| assertThrows(() => new RegExp("foo(?--i)"));
 | |
| assertThrows(() => new RegExp("foo(?i-i)"));
 | |
| 
 | |
| assertThrows(() => new RegExp("foo(?m:"));
 | |
| assertThrows(() => new RegExp("foo(?--m)"));
 | |
| assertThrows(() => new RegExp("foo(?m-m)"));
 | |
| 
 | |
| var re = /^\s(?m)^.$\s(?-m)$/;
 | |
| assertTrue(re.test("\n.\n"));
 | |
| assertFalse(re.test(" .\n"));
 | |
| assertFalse(re.test("\n. "));
 | |
| assertFalse(re.test(" . "));
 | |
| assertFalse(re.test("_\n.\n"));
 | |
| assertFalse(re.test("\n.\n_"));
 | |
| assertFalse(re.test("_\n.\n_"));
 | |
| 
 | |
| assertEquals(["abcd", "d"], /a.*?(.)(?i)\b/.exec('abcd\u017F cd'));
 | |
| assertEquals(["abcd", "d"], /a.*?(.)(?i)\b/.exec('abcd\u212A cd'));
 | |
| 
 | |
| assertEquals(["a\u017F ", " "], /a.*?(?i)\B(.)/.exec('a\u017F '));
 | |
| assertEquals(["a\u212A ", " "], /a.*?(?i)\B(.)/.exec('a\u212A '));
 | |
| 
 | |
| // Nested flags.
 | |
| var res = [
 | |
|   /^a(?i:b(?-i:c(?i:d)e)f)g$/,
 | |
|   /^a(?i:b(?-i)c(?i)d(?-i)e(?i)f)g$/,
 | |
|   /^(?-i:a(?i:b(?-i:c(?i:d)e)f)g)$/i,
 | |
|   /^(?-i:a(?i:b(?-i)c(?i)d(?-i)e(?i)f)g)$/i,
 | |
| ];
 | |
| 
 | |
| for (var idx = 0; idx < res.length; idx++) {
 | |
|   var re = res[idx];
 | |
|   for (var i = 0; i < 128; i++) {
 | |
|     var s = (i & 1) ? "A" : "a";
 | |
|     s += (i & 2) ? "B" : "b";
 | |
|     s += (i & 4) ? "C" : "c";
 | |
|     s += (i & 8) ? "D" : "d";
 | |
|     s += (i & 16) ? "E" : "e";
 | |
|     s += (i & 32) ? "F" : "f";
 | |
|     s += (i & 64) ? "G" : "g";
 | |
|     if ((i & (1 | 4 | 16 | 64)) != 0) {
 | |
|       assertFalse(re.test(s), s);
 | |
|     } else {
 | |
|       assertTrue(re.test(s), s);
 | |
|     }
 | |
|   }
 | |
| }
 |