mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 03:56:57 +00:00
4eda30c5c2
Change-Id: I5bacd28d806661b9190d4b097955263a56f19a4d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/128110 Auto-Submit: Bob Nystrom <rnystrom@google.com> Reviewed-by: Lasse R.H. Nielsen <lrn@google.com> Commit-Queue: Bob Nystrom <rnystrom@google.com>
202 lines
7.9 KiB
Dart
202 lines
7.9 KiB
Dart
// Copyright (c) 2019, the Dart project authors. All rights reserved.
|
|
// Copyright 2016 the V8 project authors. All rights reserved.
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions are
|
|
// met:
|
|
//
|
|
// * Redistributions of source code must retain the above copyright
|
|
// notice, this list of conditions and the following disclaimer.
|
|
// * Redistributions in binary form must reproduce the above
|
|
// copyright notice, this list of conditions and the following
|
|
// disclaimer in the documentation and/or other materials provided
|
|
// with the distribution.
|
|
// * Neither the name of Google Inc. nor the names of its
|
|
// contributors may be used to endorse or promote products derived
|
|
// from this software without specific prior written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
import 'package:expect/expect.dart';
|
|
|
|
import 'v8_regexp_utils.dart';
|
|
|
|
void main() {
|
|
void t(RegExp re, String s) {
|
|
assertTrue(re.hasMatch(s));
|
|
}
|
|
|
|
void f(RegExp re, String s) {
|
|
assertFalse(re.hasMatch(s));
|
|
}
|
|
|
|
assertThrows(() => RegExp("\\p{Hiragana}", unicode: true));
|
|
assertThrows(() => RegExp("\\p{Bidi_Class}", unicode: true));
|
|
assertThrows(() => RegExp("\\p{Bidi_C=False}", unicode: true));
|
|
assertThrows(() => RegExp("\\P{Bidi_Control=Y}", unicode: true));
|
|
assertThrows(() => RegExp("\\p{AHex=Yes}", unicode: true));
|
|
|
|
assertThrows(() => RegExp("\\p{Composition_Exclusion}", unicode: true));
|
|
assertThrows(() => RegExp("\\p{CE}", unicode: true));
|
|
assertThrows(() => RegExp("\\p{Full_Composition_Exclusion}", unicode: true));
|
|
assertThrows(() => RegExp("\\p{Comp_Ex}", unicode: true));
|
|
assertThrows(() => RegExp("\\p{Grapheme_Link}", unicode: true));
|
|
assertThrows(() => RegExp("\\p{Gr_Link}", unicode: true));
|
|
assertThrows(() => RegExp("\\p{Hyphen}", unicode: true));
|
|
assertThrows(() => RegExp("\\p{NFD_Inert}", unicode: true));
|
|
assertThrows(() => RegExp("\\p{NFDK_Inert}", unicode: true));
|
|
assertThrows(() => RegExp("\\p{NFC_Inert}", unicode: true));
|
|
assertThrows(() => RegExp("\\p{NFKC_Inert}", unicode: true));
|
|
assertThrows(() => RegExp("\\p{Segment_Starter}", unicode: true));
|
|
|
|
t(RegExp(r"\p{Alphabetic}", unicode: true), "æ");
|
|
f(RegExp(r"\p{Alpha}", unicode: true), "1");
|
|
|
|
t(RegExp(r"\p{ASCII_Hex_Digit}", unicode: true), "f");
|
|
f(RegExp(r"\p{AHex}", unicode: true), "g");
|
|
|
|
t(RegExp(r"\p{Bidi_Control}", unicode: true), "\u200e");
|
|
f(RegExp(r"\p{Bidi_C}", unicode: true), "g");
|
|
|
|
t(RegExp(r"\p{Bidi_Mirrored}", unicode: true), "(");
|
|
f(RegExp(r"\p{Bidi_M}", unicode: true), "-");
|
|
|
|
t(RegExp(r"\p{Case_Ignorable}", unicode: true), "\u02b0");
|
|
f(RegExp(r"\p{CI}", unicode: true), "a");
|
|
|
|
t(RegExp(r"\p{Changes_When_Casefolded}", unicode: true), "B");
|
|
f(RegExp(r"\p{CWCF}", unicode: true), "1");
|
|
|
|
t(RegExp(r"\p{Changes_When_Casemapped}", unicode: true), "b");
|
|
f(RegExp(r"\p{CWCM}", unicode: true), "1");
|
|
|
|
t(RegExp(r"\p{Changes_When_Lowercased}", unicode: true), "B");
|
|
f(RegExp(r"\p{CWL}", unicode: true), "1");
|
|
|
|
t(RegExp(r"\p{Changes_When_Titlecased}", unicode: true), "b");
|
|
f(RegExp(r"\p{CWT}", unicode: true), "1");
|
|
|
|
t(RegExp(r"\p{Changes_When_Uppercased}", unicode: true), "b");
|
|
f(RegExp(r"\p{CWU}", unicode: true), "1");
|
|
|
|
t(RegExp(r"\p{Dash}", unicode: true), "-");
|
|
f(RegExp(r"\p{Dash}", unicode: true), "1");
|
|
|
|
t(RegExp(r"\p{Default_Ignorable_Code_Point}", unicode: true), "\u00ad");
|
|
f(RegExp(r"\p{DI}", unicode: true), "1");
|
|
|
|
t(RegExp(r"\p{Deprecated}", unicode: true), "\u17a3");
|
|
f(RegExp(r"\p{Dep}", unicode: true), "1");
|
|
|
|
t(RegExp(r"\p{Diacritic}", unicode: true), "\u0301");
|
|
f(RegExp(r"\p{Dia}", unicode: true), "1");
|
|
|
|
t(RegExp(r"\p{Emoji}", unicode: true), "\u2603");
|
|
f(RegExp(r"\p{Emoji}", unicode: true), "x");
|
|
|
|
t(RegExp(r"\p{Emoji_Component}", unicode: true), "\u{1F1E6}");
|
|
f(RegExp(r"\p{Emoji_Component}", unicode: true), "x");
|
|
|
|
t(RegExp(r"\p{Emoji_Modifier_Base}", unicode: true), "\u{1F6CC}");
|
|
f(RegExp(r"\p{Emoji_Modifier_Base}", unicode: true), "x");
|
|
|
|
t(RegExp(r"\p{Emoji_Modifier}", unicode: true), "\u{1F3FE}");
|
|
f(RegExp(r"\p{Emoji_Modifier}", unicode: true), "x");
|
|
|
|
t(RegExp(r"\p{Emoji_Presentation}", unicode: true), "\u{1F308}");
|
|
f(RegExp(r"\p{Emoji_Presentation}", unicode: true), "x");
|
|
|
|
t(RegExp(r"\p{Extender}", unicode: true), "\u3005");
|
|
f(RegExp(r"\p{Ext}", unicode: true), "x");
|
|
|
|
t(RegExp(r"\p{Grapheme_Base}", unicode: true), " ");
|
|
f(RegExp(r"\p{Gr_Base}", unicode: true), "\u0010");
|
|
|
|
t(RegExp(r"\p{Grapheme_Extend}", unicode: true), "\u0300");
|
|
f(RegExp(r"\p{Gr_Ext}", unicode: true), "x");
|
|
|
|
t(RegExp(r"\p{Hex_Digit}", unicode: true), "a");
|
|
f(RegExp(r"\p{Hex}", unicode: true), "g");
|
|
|
|
t(RegExp(r"\p{ID_Continue}", unicode: true), "1");
|
|
f(RegExp(r"\p{IDC}", unicode: true), ".");
|
|
|
|
t(RegExp(r"\p{ID_Start}", unicode: true), "a");
|
|
f(RegExp(r"\p{IDS}", unicode: true), "1");
|
|
|
|
t(RegExp(r"\p{Ideographic}", unicode: true), "漢");
|
|
f(RegExp(r"\p{Ideo}", unicode: true), "H");
|
|
|
|
t(RegExp(r"\p{IDS_Binary_Operator}", unicode: true), "\u2FF0");
|
|
f(RegExp(r"\p{IDSB}", unicode: true), "a");
|
|
|
|
t(RegExp(r"\p{IDS_Trinary_Operator}", unicode: true), "\u2FF2");
|
|
f(RegExp(r"\p{IDST}", unicode: true), "a");
|
|
|
|
t(RegExp(r"\p{Join_Control}", unicode: true), "\u200c");
|
|
f(RegExp(r"\p{Join_C}", unicode: true), "a");
|
|
|
|
t(RegExp(r"\p{Logical_Order_Exception}", unicode: true), "\u0e40");
|
|
f(RegExp(r"\p{LOE}", unicode: true), "a");
|
|
|
|
t(RegExp(r"\p{Lowercase}", unicode: true), "a");
|
|
f(RegExp(r"\p{Lower}", unicode: true), "A");
|
|
|
|
t(RegExp(r"\p{Math}", unicode: true), "=");
|
|
f(RegExp(r"\p{Math}", unicode: true), "A");
|
|
|
|
t(RegExp(r"\p{Noncharacter_Code_Point}", unicode: true), "\uFDD0");
|
|
f(RegExp(r"\p{NChar}", unicode: true), "A");
|
|
|
|
t(RegExp(r"\p{Pattern_Syntax}", unicode: true), "\u0021");
|
|
f(RegExp(r"\p{NChar}", unicode: true), "A");
|
|
|
|
t(RegExp(r"\p{Pattern_White_Space}", unicode: true), "\u0009");
|
|
f(RegExp(r"\p{Pat_Syn}", unicode: true), "A");
|
|
|
|
t(RegExp(r"\p{Quotation_Mark}", unicode: true), "'");
|
|
f(RegExp(r"\p{QMark}", unicode: true), "A");
|
|
|
|
t(RegExp(r"\p{Radical}", unicode: true), "\u2FAD");
|
|
f(RegExp(r"\p{Radical}", unicode: true), "A");
|
|
|
|
t(RegExp(r"\p{Regional_Indicator}", unicode: true), "\u{1F1E6}");
|
|
f(RegExp(r"\p{Regional_Indicator}", unicode: true), "A");
|
|
|
|
t(RegExp(r"\p{Sentence_Terminal}", unicode: true), "!");
|
|
f(RegExp(r"\p{STerm}", unicode: true), "A");
|
|
|
|
t(RegExp(r"\p{Soft_Dotted}", unicode: true), "i");
|
|
f(RegExp(r"\p{SD}", unicode: true), "A");
|
|
|
|
t(RegExp(r"\p{Terminal_Punctuation}", unicode: true), ".");
|
|
f(RegExp(r"\p{Term}", unicode: true), "A");
|
|
|
|
t(RegExp(r"\p{Unified_Ideograph}", unicode: true), "\u4e00");
|
|
f(RegExp(r"\p{UIdeo}", unicode: true), "A");
|
|
|
|
t(RegExp(r"\p{Uppercase}", unicode: true), "A");
|
|
f(RegExp(r"\p{Upper}", unicode: true), "a");
|
|
|
|
t(RegExp(r"\p{Variation_Selector}", unicode: true), "\uFE00");
|
|
f(RegExp(r"\p{VS}", unicode: true), "A");
|
|
|
|
t(RegExp(r"\p{White_Space}", unicode: true), " ");
|
|
f(RegExp(r"\p{WSpace}", unicode: true), "A");
|
|
|
|
t(RegExp(r"\p{XID_Continue}", unicode: true), "1");
|
|
f(RegExp(r"\p{XIDC}", unicode: true), " ");
|
|
|
|
t(RegExp(r"\p{XID_Start}", unicode: true), "A");
|
|
f(RegExp(r"\p{XIDS}", unicode: true), " ");
|
|
}
|