| // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| /// @assertion 15.10.2.12: The production CharacterClassEscape :: w evaluates by |
| /// returning the set of characters containing the sixty-three characters: a b c |
| /// d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P |
| /// Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 _ |
| /// @description Checks that \w indeed matches only the specified characters |
| /// (tested vs all characters from the basic plane) |
| /// @3rdparty sputnik-v1:S15.10.2.12_A3_T1.js-S15.10.2.12_A3_T5.js |
| /// @author rodionov |
| |
| import "../../../../Utils/expect.dart"; |
| |
| |
| main() { |
| RegExp re = new RegExp("\\w"); |
| for (int alpha = 0x0000; alpha <= 0xFFFF; alpha++) { |
| // Skip the surrogates which are not valid char codes and will throw an |
| // exception in String.fromCharCodes. |
| if (alpha == 0xd800) alpha = 0xe000; |
| |
| String ch = new String.fromCharCodes([alpha]); |
| if((alpha >= 0x0030 && alpha <= 0x0039) // the 10 digits |
| || (alpha >= 0x0041 && alpha <= 0x005A) // the uppercase english letters |
| || (alpha >= 0x0061 && alpha <= 0x007A) // the lowercase english letters |
| || (alpha == 0x005F)) {// the underscore |
| Expect.isNotNull(re.firstMatch(ch), "\\w !~ '$ch'"); |
| } else { |
| Expect.isNull(re.firstMatch(ch), "\\w ~ '$ch'"); |
| } |
| } |
| } |