blob: 204b77fb231750b5c6bb72dafe07a79360ea1e5e [file] [log] [blame]
Ben Murdoch61f157c2016-09-16 13:49:30 +01001// Copyright 2016 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Flags: --harmony-regexp-property
6
7function t(re, s) { assertTrue(re.test(s)); }
8function f(re, s) { assertFalse(re.test(s)); }
9
10t(/\p{ASCII}+/u, "abc123");
11f(/\p{ASCII}+/u, "ⓐⓑⓒ①②③");
12f(/\p{ASCII}+/u, "🄰🄱🄲①②③");
13f(/\P{ASCII}+/u, "abcd123");
14t(/\P{ASCII}+/u, "ⓐⓑⓒ①②③");
15t(/\P{ASCII}+/u, "🄰🄱🄲①②③");
16
17f(/[^\p{ASCII}]+/u, "abc123");
18f(/[\p{ASCII}]+/u, "ⓐⓑⓒ①②③");
19f(/[\p{ASCII}]+/u, "🄰🄱🄲①②③");
20t(/[^\P{ASCII}]+/u, "abcd123");
21t(/[\P{ASCII}]+/u, "ⓐⓑⓒ①②③");
22f(/[^\P{ASCII}]+/u, "🄰🄱🄲①②③");
23
24t(/\p{Any}+/u, "🄰🄱🄲①②③");
25
26assertEquals(["\ud800"], /\p{Any}/u.exec("\ud800\ud801"));
27assertEquals(["\udc00"], /\p{Any}/u.exec("\udc00\udc01"));
28assertEquals(["\ud800\udc01"], /\p{Any}/u.exec("\ud800\udc01"));
29assertEquals(["\udc01"], /\p{Any}/u.exec("\udc01"));
30
31f(/\P{Any}+/u, "123");
32f(/[\P{Any}]+/u, "123");
33t(/[\P{Any}\d]+/u, "123");
34t(/[^\P{Any}]+/u, "123");
35
36t(/\p{Assigned}+/u, "123");
37t(/\p{Assigned}+/u, "🄰🄱🄲");
38f(/\p{Assigned}+/u, "\ufdd0");
39f(/\p{Assigned}+/u, "\u{fffff}");
40
41f(/\P{Assigned}+/u, "123");
42f(/\P{Assigned}+/u, "🄰🄱🄲");
43t(/\P{Assigned}+/u, "\ufdd0");
44t(/\P{Assigned}+/u, "\u{fffff}");
45f(/\P{Assigned}/u, "");
46
47t(/[^\P{Assigned}]+/u, "123");
48f(/[\P{Assigned}]+/u, "🄰🄱🄲");
49f(/[^\P{Assigned}]+/u, "\ufdd0");
50t(/[\P{Assigned}]+/u, "\u{fffff}");
51f(/[\P{Assigned}]/u, "");