OLD | NEW |
| (Empty) |
1 // Copyright (c) 2014, the Dart project authors. All rights reserved. | |
2 // Copyright 2013 the V8 project authors. All rights reserved. | |
3 // Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | |
4 // | |
5 // Redistribution and use in source and binary forms, with or without | |
6 // modification, are permitted provided that the following conditions | |
7 // are met: | |
8 // 1. Redistributions of source code must retain the above copyright | |
9 // notice, this list of conditions and the following disclaimer. | |
10 // 2. Redistributions in binary form must reproduce the above copyright | |
11 // notice, this list of conditions and the following disclaimer in the | |
12 // documentation and/or other materials provided with the distribution. | |
13 // | |
14 // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN
Y | |
15 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
16 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
17 // DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN
Y | |
18 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
19 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
20 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O
N | |
21 // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
22 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
23 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
24 | |
25 import 'v8_regexp_utils.dart'; | |
26 import 'package:expect/expect.dart'; | |
27 | |
28 void main() { | |
29 description("This test checks Unicode in negative RegExp character classes."); | |
30 | |
31 dynamic testPassed(str) {} | |
32 dynamic testFailed(str) => Expect.fail(str); | |
33 | |
34 dynamic test(pattern, str, expected_length) { | |
35 var result = str.replaceAll( | |
36 new RegExp(pattern, caseSensitive: false, multiLine: true), ''); | |
37 | |
38 if (result.length == expected_length) | |
39 testPassed('"' + pattern + '", ' + '"' + str + '".'); | |
40 else | |
41 testFailed( | |
42 '"' + pattern + '", ' + '"' + str + '". Was "' + result + '".'); | |
43 } | |
44 | |
45 test("\\s", " \t\f\v\r\n", 0); // ASCII whitespace. | |
46 test("\\S", "Проверка", 0); // Cyrillic letters are non-whitespace... | |
47 test("\\s", "Проверка", 8); // ...and they aren't whitespace. | |
48 test("[\\s]", "Проверка", 8); | |
49 test("[\\S]", "Проверка", 0); | |
50 test("[^\\s]", "Проверка", 0); | |
51 test("[^\\S]", "Проверка", 8); | |
52 test("[\\s\\S]*", "\\u2002Проверка\\r\\n\\u00a0", 0); | |
53 test("\\S\\S", "уф", 0); | |
54 test("\\S{2}", "уф", 0); | |
55 | |
56 test("\\w", "Проверка", | |
57 8); // Alas, only ASCII characters count as word ones in JS. | |
58 test("\\W", "Проверка", 0); | |
59 test("[\\w]", "Проверка", 8); | |
60 test("[\\W]", "Проверка", 0); | |
61 test("[^\\w]", "Проверка", 0); | |
62 test("[^\\W]", "Проверка", 8); | |
63 test("\\W\\W", "уф", 0); | |
64 test("\\W{2}", "уф", 0); | |
65 | |
66 test("\\d", "Проверка", 8); // Digit and non-digit. | |
67 test("\\D", "Проверка", 0); | |
68 test("[\\d]", "Проверка", 8); | |
69 test("[\\D]", "Проверка", 0); | |
70 test("[^\\d]", "Проверка", 0); | |
71 test("[^\\D]", "Проверка", 8); | |
72 test("\\D\\D", "уф", 0); | |
73 test("\\D{2}", "уф", 0); | |
74 | |
75 test("[\\S\\d]", "Проверка123", 0); | |
76 test("[\\d\\S]", "Проверка123", 0); | |
77 test("[^\\S\\d]", "Проверка123", 11); | |
78 test("[^\\d\\S]", "Проверка123", 11); | |
79 | |
80 test("[ \\S]", " Проверка ", 0); | |
81 test("[\\S ]", " Проверка ", 0); | |
82 test("[ф \\S]", " Проверка ", 0); | |
83 test("[\\Sф ]", " Проверка ", 0); | |
84 | |
85 test("[^р\\S]", " Проверка ", 8); | |
86 test("[^\\Sр]", " Проверка ", 8); | |
87 test("[^р\\s]", " Проверка ", 4); | |
88 test("[^\\sр]", " Проверка ", 4); | |
89 | |
90 test("[ф \\s\\S]", "Проверка \\r\\n", 0); | |
91 test("[\\S\\sф ]", "Проверка \\r\\n", 0); | |
92 | |
93 test("[^z]", "Проверка \\r\\n", 0); | |
94 test("[^ф]", "Проверка \\r\\n", 0); | |
95 } | |
OLD | NEW |