tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

unicode_restricted_character_class_escape.js (2442B)


      1 // Copyright (C) 2015 André Bargull. All rights reserved.
      2 // This code is governed by the BSD license found in the LICENSE file.
      3 
      4 /*---
      5 description: B.1.4 is not applied for Unicode RegExp - ClassEscape in range expression
      6 info: |
      7    The compatibility extensions defined in B.1.4 Regular Expressions Patterns
      8    are not applied for Unicode RegExp.
      9    Tested extension: "ClassAtomNoDashInRange :: \ ClassEscape but only if ClassEscape evaluates to a CharSet with exactly one character"
     10 es6id: 21.2.2.15.1
     11 ---*/
     12 
     13 // Leading CharacterClassEscape.
     14 assert.throws(SyntaxError, function() {
     15  RegExp("[\\d-a]", "u");
     16 }, 'RegExp("[\\d-a]", "u"): ');
     17 assert.throws(SyntaxError, function() {
     18  RegExp("[\\D-a]", "u");
     19 }, 'RegExp("[\\D-a]", "u"): ');
     20 assert.throws(SyntaxError, function() {
     21  RegExp("[\\s-a]", "u");
     22 }, 'RegExp("[\\s-a]", "u"): ');
     23 assert.throws(SyntaxError, function() {
     24  RegExp("[\\S-a]", "u");
     25 }, 'RegExp("[\\S-a]", "u"): ');
     26 assert.throws(SyntaxError, function() {
     27  RegExp("[\\w-a]", "u");
     28 }, 'RegExp("[\\w-a]", "u"): ');
     29 assert.throws(SyntaxError, function() {
     30  RegExp("[\\W-a]", "u");
     31 }, 'RegExp("[\\W-a]", "u"): ');
     32 
     33 
     34 // Trailing CharacterClassEscape.
     35 assert.throws(SyntaxError, function() {
     36  RegExp("[a-\\d]", "u");
     37 }, 'RegExp("[a-\\d]", "u"): ');
     38 assert.throws(SyntaxError, function() {
     39  RegExp("[a-\\D]", "u");
     40 }, 'RegExp("[a-\\D]", "u"): ');
     41 assert.throws(SyntaxError, function() {
     42  RegExp("[a-\\s]", "u");
     43 }, 'RegExp("[a-\\s]", "u"): ');
     44 assert.throws(SyntaxError, function() {
     45  RegExp("[a-\\S]", "u");
     46 }, 'RegExp("[a-\\S]", "u"): ');
     47 assert.throws(SyntaxError, function() {
     48  RegExp("[a-\\w]", "u");
     49 }, 'RegExp("[a-\\w]", "u"): ');
     50 assert.throws(SyntaxError, function() {
     51  RegExp("[a-\\W]", "u");
     52 }, 'RegExp("[a-\\W]", "u"): ');
     53 
     54 
     55 // Leading and trailing CharacterClassEscape.
     56 assert.throws(SyntaxError, function() {
     57  RegExp("[\\d-\\d]", "u");
     58 }, 'RegExp("[\\d-\\d]", "u"): ');
     59 assert.throws(SyntaxError, function() {
     60  RegExp("[\\D-\\D]", "u");
     61 }, 'RegExp("[\\D-\\D]", "u"): ');
     62 assert.throws(SyntaxError, function() {
     63  RegExp("[\\s-\\s]", "u");
     64 }, 'RegExp("[\\s-\\s]", "u"): ');
     65 assert.throws(SyntaxError, function() {
     66  RegExp("[\\S-\\S]", "u");
     67 }, 'RegExp("[\\S-\\S]", "u"): ');
     68 assert.throws(SyntaxError, function() {
     69  RegExp("[\\w-\\w]", "u");
     70 }, 'RegExp("[\\w-\\w]", "u"): ');
     71 assert.throws(SyntaxError, function() {
     72  RegExp("[\\W-\\W]", "u");
     73 }, 'RegExp("[\\W-\\W]", "u"): ');
     74 
     75 reportCompare(0, 0);