Commit 1eecdf34 authored by Mathias Bynens's avatar Mathias Bynens Committed by Commit Bot

Update RegExp sequence property support

This patch aligns --harmony-regexp-sequence with the latest version of
the corresponding TC39 and Unicode proposals.

The list of supported properties has been changed:

- https://github.com/tc39/proposal-regexp-unicode-sequence-properties#proposed-solution
- https://unicode.org/reports/tr18/#Full_Properties

Furthermore, the Unicode data now uses Unicode v13.0.0 instead of v12.0.0.

Bug: v8:7467
Change-Id: I1ac386d87af68d68e84e919cb5ffc1313443844a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2497163Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
Commit-Queue: Mathias Bynens <mathias@chromium.org>
Cr-Commit-Position: refs/heads/master@{#70752}
parent 165467c4
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -14,9 +14,11 @@ namespace internal {
class UnicodePropertySequences : public AllStatic {
public:
static const uc32 kEmojiFlagSequences[];
static const uc32 kEmojiTagSequences[];
static const uc32 kEmojiZWJSequences[];
static const uc32 kBasicEmojis[];
static const uc32 kRGIEmojiModifierSequences[];
static const uc32 kRGIEmojiTagSequences[];
static const uc32 kRGIEmojiZWJSequences[];
static const uc32 kRGIEmojis[];
};
} // namespace internal
......
......@@ -1462,12 +1462,17 @@ RegExpTree* RegExpParser::GetPropertySequence(const ZoneVector<char>& name_1) {
const char* name = name_1.data();
const uc32* sequence_list = nullptr;
JSRegExp::Flags flags = JSRegExp::kUnicode;
if (NameEquals(name, "Emoji_Flag_Sequence")) {
sequence_list = UnicodePropertySequences::kEmojiFlagSequences;
} else if (NameEquals(name, "Emoji_Tag_Sequence")) {
sequence_list = UnicodePropertySequences::kEmojiTagSequences;
} else if (NameEquals(name, "Emoji_ZWJ_Sequence")) {
sequence_list = UnicodePropertySequences::kEmojiZWJSequences;
// https://github.com/tc39/proposal-regexp-unicode-sequence-properties#proposed-solution
if (NameEquals(name, "Basic_Emoji")) {
sequence_list = UnicodePropertySequences::kBasicEmojis;
} else if (NameEquals(name, "RGI_Emoji_Modifier_Sequence")) {
sequence_list = UnicodePropertySequences::kRGIEmojiModifierSequences;
} else if (NameEquals(name, "RGI_Emoji_Tag_Sequence")) {
sequence_list = UnicodePropertySequences::kRGIEmojiTagSequences;
} else if (NameEquals(name, "RGI_Emoji_ZWJ_Sequence")) {
sequence_list = UnicodePropertySequences::kRGIEmojiZWJSequences;
} else if (NameEquals(name, "RGI_Emoji")) {
sequence_list = UnicodePropertySequences::kRGIEmojis;
}
if (sequence_list != nullptr) {
// TODO(yangguo): this creates huge regexp code. Alternative to this is
......@@ -1484,40 +1489,6 @@ RegExpTree* RegExpParser::GetPropertySequence(const ZoneVector<char>& name_1) {
}
return builder.ToRegExp();
}
if (NameEquals(name, "Emoji_Keycap_Sequence")) {
// https://unicode.org/reports/tr51/#def_emoji_keycap_sequence
// emoji_keycap_sequence := [0-9#*] \x{FE0F 20E3}
RegExpBuilder builder(zone(), flags);
ZoneList<CharacterRange>* prefix_ranges =
zone()->New<ZoneList<CharacterRange>>(2, zone());
prefix_ranges->Add(CharacterRange::Range('0', '9'), zone());
prefix_ranges->Add(CharacterRange::Singleton('#'), zone());
prefix_ranges->Add(CharacterRange::Singleton('*'), zone());
builder.AddCharacterClass(
zone()->New<RegExpCharacterClass>(zone(), prefix_ranges, flags));
builder.AddCharacter(0xFE0F);
builder.AddCharacter(0x20E3);
return builder.ToRegExp();
} else if (NameEquals(name, "Emoji_Modifier_Sequence")) {
// https://unicode.org/reports/tr51/#def_emoji_modifier_sequence
// emoji_modifier_sequence := emoji_modifier_base emoji_modifier
RegExpBuilder builder(zone(), flags);
ZoneList<CharacterRange>* modifier_base_ranges =
zone()->New<ZoneList<CharacterRange>>(2, zone());
LookupPropertyValueName(UCHAR_EMOJI_MODIFIER_BASE, "Y", false,
modifier_base_ranges, zone());
builder.AddCharacterClass(
zone()->New<RegExpCharacterClass>(zone(), modifier_base_ranges, flags));
ZoneList<CharacterRange>* modifier_ranges =
zone()->New<ZoneList<CharacterRange>>(2, zone());
LookupPropertyValueName(UCHAR_EMOJI_MODIFIER, "Y", false, modifier_ranges,
zone());
builder.AddCharacterClass(
zone()->New<RegExpCharacterClass>(zone(), modifier_ranges, flags));
return builder.ToRegExp();
}
return nullptr;
}
......
// Copyright 2020 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-regexp-sequence
// These tests have been generated by the script at
// https://gist.github.com/mathiasbynens/3b42c99a227521dabfe68d9e63f00f42.
// Do not modify this file directly!
const re = /\p{Basic_Emoji}/u;
assertTrue(re.test('\u231A'));
assertTrue(re.test('\u231B'));
assertTrue(re.test('\u23E9'));
assertTrue(re.test('\u23EA'));
assertTrue(re.test('\u23EB'));
assertTrue(re.test('\u23EC'));
assertTrue(re.test('\u23F0'));
assertTrue(re.test('\u23F3'));
assertTrue(re.test('\u25FD'));
assertTrue(re.test('\u25FE'));
assertTrue(re.test('\u2614'));
assertTrue(re.test('\u2615'));
assertTrue(re.test('\u2648'));
assertTrue(re.test('\u2649'));
assertTrue(re.test('\u264A'));
assertTrue(re.test('\u264B'));
assertTrue(re.test('\u264C'));
assertTrue(re.test('\u264D'));
assertTrue(re.test('\u264E'));
assertTrue(re.test('\u264F'));
assertTrue(re.test('\u2650'));
assertTrue(re.test('\u2651'));
assertTrue(re.test('\u2652'));
assertTrue(re.test('\u2653'));
assertTrue(re.test('\u267F'));
assertTrue(re.test('\u2693'));
assertTrue(re.test('\u26A1'));
assertTrue(re.test('\u26AA'));
assertTrue(re.test('\u26AB'));
assertTrue(re.test('\u26BD'));
assertTrue(re.test('\u26BE'));
assertTrue(re.test('\u26C4'));
assertTrue(re.test('\u26C5'));
assertTrue(re.test('\u26CE'));
assertTrue(re.test('\u26D4'));
assertTrue(re.test('\u26EA'));
assertTrue(re.test('\u26F2'));
assertTrue(re.test('\u26F3'));
assertTrue(re.test('\u26F5'));
assertTrue(re.test('\u26FA'));
assertTrue(re.test('\u26FD'));
assertTrue(re.test('\u2705'));
assertTrue(re.test('\u270A'));
assertTrue(re.test('\u270B'));
assertTrue(re.test('\u2728'));
assertTrue(re.test('\u274C'));
assertTrue(re.test('\u274E'));
assertTrue(re.test('\u2753'));
assertTrue(re.test('\u2754'));
assertTrue(re.test('\u2755'));
assertTrue(re.test('\u2757'));
assertTrue(re.test('\u2795'));
assertTrue(re.test('\u2796'));
assertTrue(re.test('\u2797'));
assertTrue(re.test('\u27B0'));
assertTrue(re.test('\u27BF'));
assertTrue(re.test('\u2B1B'));
assertTrue(re.test('\u2B1C'));
assertTrue(re.test('\u2B50'));
assertTrue(re.test('\u2B55'));
assertTrue(re.test('\u{1F004}'));
assertTrue(re.test('\u{1F0CF}'));
assertTrue(re.test('\u{1F18E}'));
assertTrue(re.test('\u{1F191}'));
assertTrue(re.test('\u{1F192}'));
assertTrue(re.test('\u{1F193}'));
assertTrue(re.test('\u{1F194}'));
assertTrue(re.test('\u{1F195}'));
assertTrue(re.test('\u{1F196}'));
assertTrue(re.test('\u{1F197}'));
assertTrue(re.test('\u{1F198}'));
assertTrue(re.test('\u{1F199}'));
assertTrue(re.test('\u{1F19A}'));
assertTrue(re.test('\u{1F201}'));
assertTrue(re.test('\u{1F21A}'));
assertTrue(re.test('\u{1F22F}'));
assertTrue(re.test('\u{1F232}'));
assertTrue(re.test('\u{1F233}'));
assertTrue(re.test('\u{1F234}'));
assertTrue(re.test('\u{1F235}'));
assertTrue(re.test('\u{1F236}'));
assertTrue(re.test('\u{1F238}'));
assertTrue(re.test('\u{1F239}'));
assertTrue(re.test('\u{1F23A}'));
assertTrue(re.test('\u{1F250}'));
assertTrue(re.test('\u{1F251}'));
assertTrue(re.test('\u{1F300}'));
assertTrue(re.test('\u{1F301}'));
assertTrue(re.test('\u{1F302}'));
assertTrue(re.test('\u{1F303}'));
assertTrue(re.test('\u{1F304}'));
assertTrue(re.test('\u{1F305}'));
assertTrue(re.test('\u{1F306}'));
assertTrue(re.test('\u{1F307}'));
assertTrue(re.test('\u{1F308}'));
assertTrue(re.test('\u{1F309}'));
assertTrue(re.test('\u{1F30A}'));
assertTrue(re.test('\u{1F30B}'));
assertTrue(re.test('\u{1F30C}'));
assertTrue(re.test('\u{1F30D}'));
assertTrue(re.test('\u{1F30E}'));
assertTrue(re.test('\u{1F30F}'));
assertTrue(re.test('\u{1F310}'));
assertTrue(re.test('\u{1F311}'));
assertTrue(re.test('\u{1F312}'));
assertTrue(re.test('\u{1F313}'));
assertTrue(re.test('\u{1F314}'));
assertTrue(re.test('\u{1F315}'));
assertTrue(re.test('\u{1F316}'));
assertTrue(re.test('\u{1F317}'));
assertTrue(re.test('\u{1F318}'));
assertTrue(re.test('\u{1F319}'));
assertTrue(re.test('\u{1F31A}'));
assertTrue(re.test('\u{1F31B}'));
assertTrue(re.test('\u{1F31C}'));
assertTrue(re.test('\u{1F31D}'));
assertTrue(re.test('\u{1F31E}'));
assertTrue(re.test('\u{1F31F}'));
assertTrue(re.test('\u{1F320}'));
assertTrue(re.test('\u{1F32D}'));
assertTrue(re.test('\u{1F32E}'));
assertTrue(re.test('\u{1F32F}'));
assertTrue(re.test('\u{1F330}'));
assertTrue(re.test('\u{1F331}'));
assertTrue(re.test('\u{1F332}'));
assertTrue(re.test('\u{1F333}'));
assertTrue(re.test('\u{1F334}'));
assertTrue(re.test('\u{1F335}'));
assertTrue(re.test('\u{1F337}'));
assertTrue(re.test('\u{1F338}'));
assertTrue(re.test('\u{1F339}'));
assertTrue(re.test('\u{1F33A}'));
assertTrue(re.test('\u{1F33B}'));
assertTrue(re.test('\u{1F33C}'));
assertTrue(re.test('\u{1F33D}'));
assertTrue(re.test('\u{1F33E}'));
assertTrue(re.test('\u{1F33F}'));
assertTrue(re.test('\u{1F340}'));
assertTrue(re.test('\u{1F341}'));
assertTrue(re.test('\u{1F342}'));
assertTrue(re.test('\u{1F343}'));
assertTrue(re.test('\u{1F344}'));
assertTrue(re.test('\u{1F345}'));
assertTrue(re.test('\u{1F346}'));
assertTrue(re.test('\u{1F347}'));
assertTrue(re.test('\u{1F348}'));
assertTrue(re.test('\u{1F349}'));
assertTrue(re.test('\u{1F34A}'));
assertTrue(re.test('\u{1F34B}'));
assertTrue(re.test('\u{1F34C}'));
assertTrue(re.test('\u{1F34D}'));
assertTrue(re.test('\u{1F34E}'));
assertTrue(re.test('\u{1F34F}'));
assertTrue(re.test('\u{1F350}'));
assertTrue(re.test('\u{1F351}'));
assertTrue(re.test('\u{1F352}'));
assertTrue(re.test('\u{1F353}'));
assertTrue(re.test('\u{1F354}'));
assertTrue(re.test('\u{1F355}'));
assertTrue(re.test('\u{1F356}'));
assertTrue(re.test('\u{1F357}'));
assertTrue(re.test('\u{1F358}'));
assertTrue(re.test('\u{1F359}'));
assertTrue(re.test('\u{1F35A}'));
assertTrue(re.test('\u{1F35B}'));
assertTrue(re.test('\u{1F35C}'));
assertTrue(re.test('\u{1F35D}'));
assertTrue(re.test('\u{1F35E}'));
assertTrue(re.test('\u{1F35F}'));
assertTrue(re.test('\u{1F360}'));
assertTrue(re.test('\u{1F361}'));
assertTrue(re.test('\u{1F362}'));
assertTrue(re.test('\u{1F363}'));
assertTrue(re.test('\u{1F364}'));
assertTrue(re.test('\u{1F365}'));
assertTrue(re.test('\u{1F366}'));
assertTrue(re.test('\u{1F367}'));
assertTrue(re.test('\u{1F368}'));
assertTrue(re.test('\u{1F369}'));
assertTrue(re.test('\u{1F36A}'));
assertTrue(re.test('\u{1F36B}'));
assertTrue(re.test('\u{1F36C}'));
assertTrue(re.test('\u{1F36D}'));
assertTrue(re.test('\u{1F36E}'));
assertTrue(re.test('\u{1F36F}'));
assertTrue(re.test('\u{1F370}'));
assertTrue(re.test('\u{1F371}'));
assertTrue(re.test('\u{1F372}'));
assertTrue(re.test('\u{1F373}'));
assertTrue(re.test('\u{1F374}'));
assertTrue(re.test('\u{1F375}'));
assertTrue(re.test('\u{1F376}'));
assertTrue(re.test('\u{1F377}'));
assertTrue(re.test('\u{1F378}'));
assertTrue(re.test('\u{1F379}'));
assertTrue(re.test('\u{1F37A}'));
assertTrue(re.test('\u{1F37B}'));
assertTrue(re.test('\u{1F37C}'));
assertTrue(re.test('\u{1F37E}'));
assertTrue(re.test('\u{1F37F}'));
assertTrue(re.test('\u{1F380}'));
assertTrue(re.test('\u{1F381}'));
assertTrue(re.test('\u{1F382}'));
assertTrue(re.test('\u{1F383}'));
assertTrue(re.test('\u{1F384}'));
assertTrue(re.test('\u{1F385}'));
assertTrue(re.test('\u{1F386}'));
assertTrue(re.test('\u{1F387}'));
assertTrue(re.test('\u{1F388}'));
assertTrue(re.test('\u{1F389}'));
assertTrue(re.test('\u{1F38A}'));
assertTrue(re.test('\u{1F38B}'));
assertTrue(re.test('\u{1F38C}'));
assertTrue(re.test('\u{1F38D}'));
assertTrue(re.test('\u{1F38E}'));
assertTrue(re.test('\u{1F38F}'));
assertTrue(re.test('\u{1F390}'));
assertTrue(re.test('\u{1F391}'));
assertTrue(re.test('\u{1F392}'));
assertTrue(re.test('\u{1F393}'));
assertTrue(re.test('\u{1F3A0}'));
assertTrue(re.test('\u{1F3A1}'));
assertTrue(re.test('\u{1F3A2}'));
assertTrue(re.test('\u{1F3A3}'));
assertTrue(re.test('\u{1F3A4}'));
assertTrue(re.test('\u{1F3A5}'));
assertTrue(re.test('\u{1F3A6}'));
assertTrue(re.test('\u{1F3A7}'));
assertTrue(re.test('\u{1F3A8}'));
assertTrue(re.test('\u{1F3A9}'));
assertTrue(re.test('\u{1F3AA}'));
assertTrue(re.test('\u{1F3AB}'));
assertTrue(re.test('\u{1F3AC}'));
assertTrue(re.test('\u{1F3AD}'));
assertTrue(re.test('\u{1F3AE}'));
assertTrue(re.test('\u{1F3AF}'));
assertTrue(re.test('\u{1F3B0}'));
assertTrue(re.test('\u{1F3B1}'));
assertTrue(re.test('\u{1F3B2}'));
assertTrue(re.test('\u{1F3B3}'));
assertTrue(re.test('\u{1F3B4}'));
assertTrue(re.test('\u{1F3B5}'));
assertTrue(re.test('\u{1F3B6}'));
assertTrue(re.test('\u{1F3B7}'));
assertTrue(re.test('\u{1F3B8}'));
assertTrue(re.test('\u{1F3B9}'));
assertTrue(re.test('\u{1F3BA}'));
assertTrue(re.test('\u{1F3BB}'));
assertTrue(re.test('\u{1F3BC}'));
assertTrue(re.test('\u{1F3BD}'));
assertTrue(re.test('\u{1F3BE}'));
assertTrue(re.test('\u{1F3BF}'));
assertTrue(re.test('\u{1F3C0}'));
assertTrue(re.test('\u{1F3C1}'));
assertTrue(re.test('\u{1F3C2}'));
assertTrue(re.test('\u{1F3C3}'));
assertTrue(re.test('\u{1F3C4}'));
assertTrue(re.test('\u{1F3C5}'));
assertTrue(re.test('\u{1F3C6}'));
assertTrue(re.test('\u{1F3C7}'));
assertTrue(re.test('\u{1F3C8}'));
assertTrue(re.test('\u{1F3C9}'));
assertTrue(re.test('\u{1F3CA}'));
assertTrue(re.test('\u{1F3CF}'));
assertTrue(re.test('\u{1F3D0}'));
assertTrue(re.test('\u{1F3D1}'));
assertTrue(re.test('\u{1F3D2}'));
assertTrue(re.test('\u{1F3D3}'));
assertTrue(re.test('\u{1F3E0}'));
assertTrue(re.test('\u{1F3E1}'));
assertTrue(re.test('\u{1F3E2}'));
assertTrue(re.test('\u{1F3E3}'));
assertTrue(re.test('\u{1F3E4}'));
assertTrue(re.test('\u{1F3E5}'));
assertTrue(re.test('\u{1F3E6}'));
assertTrue(re.test('\u{1F3E7}'));
assertTrue(re.test('\u{1F3E8}'));
assertTrue(re.test('\u{1F3E9}'));
assertTrue(re.test('\u{1F3EA}'));
assertTrue(re.test('\u{1F3EB}'));
assertTrue(re.test('\u{1F3EC}'));
assertTrue(re.test('\u{1F3ED}'));
assertTrue(re.test('\u{1F3EE}'));
assertTrue(re.test('\u{1F3EF}'));
assertTrue(re.test('\u{1F3F0}'));
assertTrue(re.test('\u{1F3F4}'));
assertTrue(re.test('\u{1F3F8}'));
assertTrue(re.test('\u{1F3F9}'));
assertTrue(re.test('\u{1F3FA}'));
assertTrue(re.test('\u{1F3FB}'));
assertTrue(re.test('\u{1F3FC}'));
assertTrue(re.test('\u{1F3FD}'));
assertTrue(re.test('\u{1F3FE}'));
assertTrue(re.test('\u{1F3FF}'));
assertTrue(re.test('\u{1F400}'));
assertTrue(re.test('\u{1F401}'));
assertTrue(re.test('\u{1F402}'));
assertTrue(re.test('\u{1F403}'));
assertTrue(re.test('\u{1F404}'));
assertTrue(re.test('\u{1F405}'));
assertTrue(re.test('\u{1F406}'));
assertTrue(re.test('\u{1F407}'));
assertTrue(re.test('\u{1F408}'));
assertTrue(re.test('\u{1F409}'));
assertTrue(re.test('\u{1F40A}'));
assertTrue(re.test('\u{1F40B}'));
assertTrue(re.test('\u{1F40C}'));
assertTrue(re.test('\u{1F40D}'));
assertTrue(re.test('\u{1F40E}'));
assertTrue(re.test('\u{1F40F}'));
assertTrue(re.test('\u{1F410}'));
assertTrue(re.test('\u{1F411}'));
assertTrue(re.test('\u{1F412}'));
assertTrue(re.test('\u{1F413}'));
assertTrue(re.test('\u{1F414}'));
assertTrue(re.test('\u{1F415}'));
assertTrue(re.test('\u{1F416}'));
assertTrue(re.test('\u{1F417}'));
assertTrue(re.test('\u{1F418}'));
assertTrue(re.test('\u{1F419}'));
assertTrue(re.test('\u{1F41A}'));
assertTrue(re.test('\u{1F41B}'));
assertTrue(re.test('\u{1F41C}'));
assertTrue(re.test('\u{1F41D}'));
assertTrue(re.test('\u{1F41E}'));
assertTrue(re.test('\u{1F41F}'));
assertTrue(re.test('\u{1F420}'));
assertTrue(re.test('\u{1F421}'));
assertTrue(re.test('\u{1F422}'));
assertTrue(re.test('\u{1F423}'));
assertTrue(re.test('\u{1F424}'));
assertTrue(re.test('\u{1F425}'));
assertTrue(re.test('\u{1F426}'));
assertTrue(re.test('\u{1F427}'));
assertTrue(re.test('\u{1F428}'));
assertTrue(re.test('\u{1F429}'));
assertTrue(re.test('\u{1F42A}'));
assertTrue(re.test('\u{1F42B}'));
assertTrue(re.test('\u{1F42C}'));
assertTrue(re.test('\u{1F42D}'));
assertTrue(re.test('\u{1F42E}'));
assertTrue(re.test('\u{1F42F}'));
assertTrue(re.test('\u{1F430}'));
assertTrue(re.test('\u{1F431}'));
assertTrue(re.test('\u{1F432}'));
assertTrue(re.test('\u{1F433}'));
assertTrue(re.test('\u{1F434}'));
assertTrue(re.test('\u{1F435}'));
assertTrue(re.test('\u{1F436}'));
assertTrue(re.test('\u{1F437}'));
assertTrue(re.test('\u{1F438}'));
assertTrue(re.test('\u{1F439}'));
assertTrue(re.test('\u{1F43A}'));
assertTrue(re.test('\u{1F43B}'));
assertTrue(re.test('\u{1F43C}'));
assertTrue(re.test('\u{1F43D}'));
assertTrue(re.test('\u{1F43E}'));
assertTrue(re.test('\u{1F440}'));
assertTrue(re.test('\u{1F442}'));
assertTrue(re.test('\u{1F443}'));
assertTrue(re.test('\u{1F444}'));
assertTrue(re.test('\u{1F445}'));
assertTrue(re.test('\u{1F446}'));
assertTrue(re.test('\u{1F447}'));
assertTrue(re.test('\u{1F448}'));
assertTrue(re.test('\u{1F449}'));
assertTrue(re.test('\u{1F44A}'));
assertTrue(re.test('\u{1F44B}'));
assertTrue(re.test('\u{1F44C}'));
assertTrue(re.test('\u{1F44D}'));
assertTrue(re.test('\u{1F44E}'));
assertTrue(re.test('\u{1F44F}'));
assertTrue(re.test('\u{1F450}'));
assertTrue(re.test('\u{1F451}'));
assertTrue(re.test('\u{1F452}'));
assertTrue(re.test('\u{1F453}'));
assertTrue(re.test('\u{1F454}'));
assertTrue(re.test('\u{1F455}'));
assertTrue(re.test('\u{1F456}'));
assertTrue(re.test('\u{1F457}'));
assertTrue(re.test('\u{1F458}'));
assertTrue(re.test('\u{1F459}'));
assertTrue(re.test('\u{1F45A}'));
assertTrue(re.test('\u{1F45B}'));
assertTrue(re.test('\u{1F45C}'));
assertTrue(re.test('\u{1F45D}'));
assertTrue(re.test('\u{1F45E}'));
assertTrue(re.test('\u{1F45F}'));
assertTrue(re.test('\u{1F460}'));
assertTrue(re.test('\u{1F461}'));
assertTrue(re.test('\u{1F462}'));
assertTrue(re.test('\u{1F463}'));
assertTrue(re.test('\u{1F464}'));
assertTrue(re.test('\u{1F465}'));
assertTrue(re.test('\u{1F466}'));
assertTrue(re.test('\u{1F467}'));
assertTrue(re.test('\u{1F468}'));
assertTrue(re.test('\u{1F469}'));
assertTrue(re.test('\u{1F46A}'));
assertTrue(re.test('\u{1F46B}'));
assertTrue(re.test('\u{1F46C}'));
assertTrue(re.test('\u{1F46D}'));
assertTrue(re.test('\u{1F46E}'));
assertTrue(re.test('\u{1F46F}'));
assertTrue(re.test('\u{1F470}'));
assertTrue(re.test('\u{1F471}'));
assertTrue(re.test('\u{1F472}'));
assertTrue(re.test('\u{1F473}'));
assertTrue(re.test('\u{1F474}'));
assertTrue(re.test('\u{1F475}'));
assertTrue(re.test('\u{1F476}'));
assertTrue(re.test('\u{1F477}'));
assertTrue(re.test('\u{1F478}'));
assertTrue(re.test('\u{1F479}'));
assertTrue(re.test('\u{1F47A}'));
assertTrue(re.test('\u{1F47B}'));
assertTrue(re.test('\u{1F47C}'));
assertTrue(re.test('\u{1F47D}'));
assertTrue(re.test('\u{1F47E}'));
assertTrue(re.test('\u{1F47F}'));
assertTrue(re.test('\u{1F480}'));
assertTrue(re.test('\u{1F481}'));
assertTrue(re.test('\u{1F482}'));
assertTrue(re.test('\u{1F483}'));
assertTrue(re.test('\u{1F484}'));
assertTrue(re.test('\u{1F485}'));
assertTrue(re.test('\u{1F486}'));
assertTrue(re.test('\u{1F487}'));
assertTrue(re.test('\u{1F488}'));
assertTrue(re.test('\u{1F489}'));
assertTrue(re.test('\u{1F48A}'));
assertTrue(re.test('\u{1F48B}'));
assertTrue(re.test('\u{1F48C}'));
assertTrue(re.test('\u{1F48D}'));
assertTrue(re.test('\u{1F48E}'));
assertTrue(re.test('\u{1F48F}'));
assertTrue(re.test('\u{1F490}'));
assertTrue(re.test('\u{1F491}'));
assertTrue(re.test('\u{1F492}'));
assertTrue(re.test('\u{1F493}'));
assertTrue(re.test('\u{1F494}'));
assertTrue(re.test('\u{1F495}'));
assertTrue(re.test('\u{1F496}'));
assertTrue(re.test('\u{1F497}'));
assertTrue(re.test('\u{1F498}'));
assertTrue(re.test('\u{1F499}'));
assertTrue(re.test('\u{1F49A}'));
assertTrue(re.test('\u{1F49B}'));
assertTrue(re.test('\u{1F49C}'));
assertTrue(re.test('\u{1F49D}'));
assertTrue(re.test('\u{1F49E}'));
assertTrue(re.test('\u{1F49F}'));
assertTrue(re.test('\u{1F4A0}'));
assertTrue(re.test('\u{1F4A1}'));
assertTrue(re.test('\u{1F4A2}'));
assertTrue(re.test('\u{1F4A3}'));
assertTrue(re.test('\u{1F4A4}'));
assertTrue(re.test('\u{1F4A5}'));
assertTrue(re.test('\u{1F4A6}'));
assertTrue(re.test('\u{1F4A7}'));
assertTrue(re.test('\u{1F4A8}'));
assertTrue(re.test('\u{1F4A9}'));
assertTrue(re.test('\u{1F4AA}'));
assertTrue(re.test('\u{1F4AB}'));
assertTrue(re.test('\u{1F4AC}'));
assertTrue(re.test('\u{1F4AD}'));
assertTrue(re.test('\u{1F4AE}'));
assertTrue(re.test('\u{1F4AF}'));
assertTrue(re.test('\u{1F4B0}'));
assertTrue(re.test('\u{1F4B1}'));
assertTrue(re.test('\u{1F4B2}'));
assertTrue(re.test('\u{1F4B3}'));
assertTrue(re.test('\u{1F4B4}'));
assertTrue(re.test('\u{1F4B5}'));
assertTrue(re.test('\u{1F4B6}'));
assertTrue(re.test('\u{1F4B7}'));
assertTrue(re.test('\u{1F4B8}'));
assertTrue(re.test('\u{1F4B9}'));
assertTrue(re.test('\u{1F4BA}'));
assertTrue(re.test('\u{1F4BB}'));
assertTrue(re.test('\u{1F4BC}'));
assertTrue(re.test('\u{1F4BD}'));
assertTrue(re.test('\u{1F4BE}'));
assertTrue(re.test('\u{1F4BF}'));
assertTrue(re.test('\u{1F4C0}'));
assertTrue(re.test('\u{1F4C1}'));
assertTrue(re.test('\u{1F4C2}'));
assertTrue(re.test('\u{1F4C3}'));
assertTrue(re.test('\u{1F4C4}'));
assertTrue(re.test('\u{1F4C5}'));
assertTrue(re.test('\u{1F4C6}'));
assertTrue(re.test('\u{1F4C7}'));
assertTrue(re.test('\u{1F4C8}'));
assertTrue(re.test('\u{1F4C9}'));
assertTrue(re.test('\u{1F4CA}'));
assertTrue(re.test('\u{1F4CB}'));
assertTrue(re.test('\u{1F4CC}'));
assertTrue(re.test('\u{1F4CD}'));
assertTrue(re.test('\u{1F4CE}'));
assertTrue(re.test('\u{1F4CF}'));
assertTrue(re.test('\u{1F4D0}'));
assertTrue(re.test('\u{1F4D1}'));
assertTrue(re.test('\u{1F4D2}'));
assertTrue(re.test('\u{1F4D3}'));
assertTrue(re.test('\u{1F4D4}'));
assertTrue(re.test('\u{1F4D5}'));
assertTrue(re.test('\u{1F4D6}'));
assertTrue(re.test('\u{1F4D7}'));
assertTrue(re.test('\u{1F4D8}'));
assertTrue(re.test('\u{1F4D9}'));
assertTrue(re.test('\u{1F4DA}'));
assertTrue(re.test('\u{1F4DB}'));
assertTrue(re.test('\u{1F4DC}'));
assertTrue(re.test('\u{1F4DD}'));
assertTrue(re.test('\u{1F4DE}'));
assertTrue(re.test('\u{1F4DF}'));
assertTrue(re.test('\u{1F4E0}'));
assertTrue(re.test('\u{1F4E1}'));
assertTrue(re.test('\u{1F4E2}'));
assertTrue(re.test('\u{1F4E3}'));
assertTrue(re.test('\u{1F4E4}'));
assertTrue(re.test('\u{1F4E5}'));
assertTrue(re.test('\u{1F4E6}'));
assertTrue(re.test('\u{1F4E7}'));
assertTrue(re.test('\u{1F4E8}'));
assertTrue(re.test('\u{1F4E9}'));
assertTrue(re.test('\u{1F4EA}'));
assertTrue(re.test('\u{1F4EB}'));
assertTrue(re.test('\u{1F4EC}'));
assertTrue(re.test('\u{1F4ED}'));
assertTrue(re.test('\u{1F4EE}'));
assertTrue(re.test('\u{1F4EF}'));
assertTrue(re.test('\u{1F4F0}'));
assertTrue(re.test('\u{1F4F1}'));
assertTrue(re.test('\u{1F4F2}'));
assertTrue(re.test('\u{1F4F3}'));
assertTrue(re.test('\u{1F4F4}'));
assertTrue(re.test('\u{1F4F5}'));
assertTrue(re.test('\u{1F4F6}'));
assertTrue(re.test('\u{1F4F7}'));
assertTrue(re.test('\u{1F4F8}'));
assertTrue(re.test('\u{1F4F9}'));
assertTrue(re.test('\u{1F4FA}'));
assertTrue(re.test('\u{1F4FB}'));
assertTrue(re.test('\u{1F4FC}'));
assertTrue(re.test('\u{1F4FF}'));
assertTrue(re.test('\u{1F500}'));
assertTrue(re.test('\u{1F501}'));
assertTrue(re.test('\u{1F502}'));
assertTrue(re.test('\u{1F503}'));
assertTrue(re.test('\u{1F504}'));
assertTrue(re.test('\u{1F505}'));
assertTrue(re.test('\u{1F506}'));
assertTrue(re.test('\u{1F507}'));
assertTrue(re.test('\u{1F508}'));
assertTrue(re.test('\u{1F509}'));
assertTrue(re.test('\u{1F50A}'));
assertTrue(re.test('\u{1F50B}'));
assertTrue(re.test('\u{1F50C}'));
assertTrue(re.test('\u{1F50D}'));
assertTrue(re.test('\u{1F50E}'));
assertTrue(re.test('\u{1F50F}'));
assertTrue(re.test('\u{1F510}'));
assertTrue(re.test('\u{1F511}'));
assertTrue(re.test('\u{1F512}'));
assertTrue(re.test('\u{1F513}'));
assertTrue(re.test('\u{1F514}'));
assertTrue(re.test('\u{1F515}'));
assertTrue(re.test('\u{1F516}'));
assertTrue(re.test('\u{1F517}'));
assertTrue(re.test('\u{1F518}'));
assertTrue(re.test('\u{1F519}'));
assertTrue(re.test('\u{1F51A}'));
assertTrue(re.test('\u{1F51B}'));
assertTrue(re.test('\u{1F51C}'));
assertTrue(re.test('\u{1F51D}'));
assertTrue(re.test('\u{1F51E}'));
assertTrue(re.test('\u{1F51F}'));
assertTrue(re.test('\u{1F520}'));
assertTrue(re.test('\u{1F521}'));
assertTrue(re.test('\u{1F522}'));
assertTrue(re.test('\u{1F523}'));
assertTrue(re.test('\u{1F524}'));
assertTrue(re.test('\u{1F525}'));
assertTrue(re.test('\u{1F526}'));
assertTrue(re.test('\u{1F527}'));
assertTrue(re.test('\u{1F528}'));
assertTrue(re.test('\u{1F529}'));
assertTrue(re.test('\u{1F52A}'));
assertTrue(re.test('\u{1F52B}'));
assertTrue(re.test('\u{1F52C}'));
assertTrue(re.test('\u{1F52D}'));
assertTrue(re.test('\u{1F52E}'));
assertTrue(re.test('\u{1F52F}'));
assertTrue(re.test('\u{1F530}'));
assertTrue(re.test('\u{1F531}'));
assertTrue(re.test('\u{1F532}'));
assertTrue(re.test('\u{1F533}'));
assertTrue(re.test('\u{1F534}'));
assertTrue(re.test('\u{1F535}'));
assertTrue(re.test('\u{1F536}'));
assertTrue(re.test('\u{1F537}'));
assertTrue(re.test('\u{1F538}'));
assertTrue(re.test('\u{1F539}'));
assertTrue(re.test('\u{1F53A}'));
assertTrue(re.test('\u{1F53B}'));
assertTrue(re.test('\u{1F53C}'));
assertTrue(re.test('\u{1F53D}'));
assertTrue(re.test('\u{1F54B}'));
assertTrue(re.test('\u{1F54C}'));
assertTrue(re.test('\u{1F54D}'));
assertTrue(re.test('\u{1F54E}'));
assertTrue(re.test('\u{1F550}'));
assertTrue(re.test('\u{1F551}'));
assertTrue(re.test('\u{1F552}'));
assertTrue(re.test('\u{1F553}'));
assertTrue(re.test('\u{1F554}'));
assertTrue(re.test('\u{1F555}'));
assertTrue(re.test('\u{1F556}'));
assertTrue(re.test('\u{1F557}'));
assertTrue(re.test('\u{1F558}'));
assertTrue(re.test('\u{1F559}'));
assertTrue(re.test('\u{1F55A}'));
assertTrue(re.test('\u{1F55B}'));
assertTrue(re.test('\u{1F55C}'));
assertTrue(re.test('\u{1F55D}'));
assertTrue(re.test('\u{1F55E}'));
assertTrue(re.test('\u{1F55F}'));
assertTrue(re.test('\u{1F560}'));
assertTrue(re.test('\u{1F561}'));
assertTrue(re.test('\u{1F562}'));
assertTrue(re.test('\u{1F563}'));
assertTrue(re.test('\u{1F564}'));
assertTrue(re.test('\u{1F565}'));
assertTrue(re.test('\u{1F566}'));
assertTrue(re.test('\u{1F567}'));
assertTrue(re.test('\u{1F57A}'));
assertTrue(re.test('\u{1F595}'));
assertTrue(re.test('\u{1F596}'));
assertTrue(re.test('\u{1F5A4}'));
assertTrue(re.test('\u{1F5FB}'));
assertTrue(re.test('\u{1F5FC}'));
assertTrue(re.test('\u{1F5FD}'));
assertTrue(re.test('\u{1F5FE}'));
assertTrue(re.test('\u{1F5FF}'));
assertTrue(re.test('\u{1F600}'));
assertTrue(re.test('\u{1F601}'));
assertTrue(re.test('\u{1F602}'));
assertTrue(re.test('\u{1F603}'));
assertTrue(re.test('\u{1F604}'));
assertTrue(re.test('\u{1F605}'));
assertTrue(re.test('\u{1F606}'));
assertTrue(re.test('\u{1F607}'));
assertTrue(re.test('\u{1F608}'));
assertTrue(re.test('\u{1F609}'));
assertTrue(re.test('\u{1F60A}'));
assertTrue(re.test('\u{1F60B}'));
assertTrue(re.test('\u{1F60C}'));
assertTrue(re.test('\u{1F60D}'));
assertTrue(re.test('\u{1F60E}'));
assertTrue(re.test('\u{1F60F}'));
assertTrue(re.test('\u{1F610}'));
assertTrue(re.test('\u{1F611}'));
assertTrue(re.test('\u{1F612}'));
assertTrue(re.test('\u{1F613}'));
assertTrue(re.test('\u{1F614}'));
assertTrue(re.test('\u{1F615}'));
assertTrue(re.test('\u{1F616}'));
assertTrue(re.test('\u{1F617}'));
assertTrue(re.test('\u{1F618}'));
assertTrue(re.test('\u{1F619}'));
assertTrue(re.test('\u{1F61A}'));
assertTrue(re.test('\u{1F61B}'));
assertTrue(re.test('\u{1F61C}'));
assertTrue(re.test('\u{1F61D}'));
assertTrue(re.test('\u{1F61E}'));
assertTrue(re.test('\u{1F61F}'));
assertTrue(re.test('\u{1F620}'));
assertTrue(re.test('\u{1F621}'));
assertTrue(re.test('\u{1F622}'));
assertTrue(re.test('\u{1F623}'));
assertTrue(re.test('\u{1F624}'));
assertTrue(re.test('\u{1F625}'));
assertTrue(re.test('\u{1F626}'));
assertTrue(re.test('\u{1F627}'));
assertTrue(re.test('\u{1F628}'));
assertTrue(re.test('\u{1F629}'));
assertTrue(re.test('\u{1F62A}'));
assertTrue(re.test('\u{1F62B}'));
assertTrue(re.test('\u{1F62C}'));
assertTrue(re.test('\u{1F62D}'));
assertTrue(re.test('\u{1F62E}'));
assertTrue(re.test('\u{1F62F}'));
assertTrue(re.test('\u{1F630}'));
assertTrue(re.test('\u{1F631}'));
assertTrue(re.test('\u{1F632}'));
assertTrue(re.test('\u{1F633}'));
assertTrue(re.test('\u{1F634}'));
assertTrue(re.test('\u{1F635}'));
assertTrue(re.test('\u{1F636}'));
assertTrue(re.test('\u{1F637}'));
assertTrue(re.test('\u{1F638}'));
assertTrue(re.test('\u{1F639}'));
assertTrue(re.test('\u{1F63A}'));
assertTrue(re.test('\u{1F63B}'));
assertTrue(re.test('\u{1F63C}'));
assertTrue(re.test('\u{1F63D}'));
assertTrue(re.test('\u{1F63E}'));
assertTrue(re.test('\u{1F63F}'));
assertTrue(re.test('\u{1F640}'));
assertTrue(re.test('\u{1F641}'));
assertTrue(re.test('\u{1F642}'));
assertTrue(re.test('\u{1F643}'));
assertTrue(re.test('\u{1F644}'));
assertTrue(re.test('\u{1F645}'));
assertTrue(re.test('\u{1F646}'));
assertTrue(re.test('\u{1F647}'));
assertTrue(re.test('\u{1F648}'));
assertTrue(re.test('\u{1F649}'));
assertTrue(re.test('\u{1F64A}'));
assertTrue(re.test('\u{1F64B}'));
assertTrue(re.test('\u{1F64C}'));
assertTrue(re.test('\u{1F64D}'));
assertTrue(re.test('\u{1F64E}'));
assertTrue(re.test('\u{1F64F}'));
assertTrue(re.test('\u{1F680}'));
assertTrue(re.test('\u{1F681}'));
assertTrue(re.test('\u{1F682}'));
assertTrue(re.test('\u{1F683}'));
assertTrue(re.test('\u{1F684}'));
assertTrue(re.test('\u{1F685}'));
assertTrue(re.test('\u{1F686}'));
assertTrue(re.test('\u{1F687}'));
assertTrue(re.test('\u{1F688}'));
assertTrue(re.test('\u{1F689}'));
assertTrue(re.test('\u{1F68A}'));
assertTrue(re.test('\u{1F68B}'));
assertTrue(re.test('\u{1F68C}'));
assertTrue(re.test('\u{1F68D}'));
assertTrue(re.test('\u{1F68E}'));
assertTrue(re.test('\u{1F68F}'));
assertTrue(re.test('\u{1F690}'));
assertTrue(re.test('\u{1F691}'));
assertTrue(re.test('\u{1F692}'));
assertTrue(re.test('\u{1F693}'));
assertTrue(re.test('\u{1F694}'));
assertTrue(re.test('\u{1F695}'));
assertTrue(re.test('\u{1F696}'));
assertTrue(re.test('\u{1F697}'));
assertTrue(re.test('\u{1F698}'));
assertTrue(re.test('\u{1F699}'));
assertTrue(re.test('\u{1F69A}'));
assertTrue(re.test('\u{1F69B}'));
assertTrue(re.test('\u{1F69C}'));
assertTrue(re.test('\u{1F69D}'));
assertTrue(re.test('\u{1F69E}'));
assertTrue(re.test('\u{1F69F}'));
assertTrue(re.test('\u{1F6A0}'));
assertTrue(re.test('\u{1F6A1}'));
assertTrue(re.test('\u{1F6A2}'));
assertTrue(re.test('\u{1F6A3}'));
assertTrue(re.test('\u{1F6A4}'));
assertTrue(re.test('\u{1F6A5}'));
assertTrue(re.test('\u{1F6A6}'));
assertTrue(re.test('\u{1F6A7}'));
assertTrue(re.test('\u{1F6A8}'));
assertTrue(re.test('\u{1F6A9}'));
assertTrue(re.test('\u{1F6AA}'));
assertTrue(re.test('\u{1F6AB}'));
assertTrue(re.test('\u{1F6AC}'));
assertTrue(re.test('\u{1F6AD}'));
assertTrue(re.test('\u{1F6AE}'));
assertTrue(re.test('\u{1F6AF}'));
assertTrue(re.test('\u{1F6B0}'));
assertTrue(re.test('\u{1F6B1}'));
assertTrue(re.test('\u{1F6B2}'));
assertTrue(re.test('\u{1F6B3}'));
assertTrue(re.test('\u{1F6B4}'));
assertTrue(re.test('\u{1F6B5}'));
assertTrue(re.test('\u{1F6B6}'));
assertTrue(re.test('\u{1F6B7}'));
assertTrue(re.test('\u{1F6B8}'));
assertTrue(re.test('\u{1F6B9}'));
assertTrue(re.test('\u{1F6BA}'));
assertTrue(re.test('\u{1F6BB}'));
assertTrue(re.test('\u{1F6BC}'));
assertTrue(re.test('\u{1F6BD}'));
assertTrue(re.test('\u{1F6BE}'));
assertTrue(re.test('\u{1F6BF}'));
assertTrue(re.test('\u{1F6C0}'));
assertTrue(re.test('\u{1F6C1}'));
assertTrue(re.test('\u{1F6C2}'));
assertTrue(re.test('\u{1F6C3}'));
assertTrue(re.test('\u{1F6C4}'));
assertTrue(re.test('\u{1F6C5}'));
assertTrue(re.test('\u{1F6CC}'));
assertTrue(re.test('\u{1F6D0}'));
assertTrue(re.test('\u{1F6D1}'));
assertTrue(re.test('\u{1F6D2}'));
assertTrue(re.test('\u{1F6D5}'));
assertTrue(re.test('\u{1F6D6}'));
assertTrue(re.test('\u{1F6D7}'));
assertTrue(re.test('\u{1F6EB}'));
assertTrue(re.test('\u{1F6EC}'));
assertTrue(re.test('\u{1F6F4}'));
assertTrue(re.test('\u{1F6F5}'));
assertTrue(re.test('\u{1F6F6}'));
assertTrue(re.test('\u{1F6F7}'));
assertTrue(re.test('\u{1F6F8}'));
assertTrue(re.test('\u{1F6F9}'));
assertTrue(re.test('\u{1F6FA}'));
assertTrue(re.test('\u{1F6FB}'));
assertTrue(re.test('\u{1F6FC}'));
assertTrue(re.test('\u{1F7E0}'));
assertTrue(re.test('\u{1F7E1}'));
assertTrue(re.test('\u{1F7E2}'));
assertTrue(re.test('\u{1F7E3}'));
assertTrue(re.test('\u{1F7E4}'));
assertTrue(re.test('\u{1F7E5}'));
assertTrue(re.test('\u{1F7E6}'));
assertTrue(re.test('\u{1F7E7}'));
assertTrue(re.test('\u{1F7E8}'));
assertTrue(re.test('\u{1F7E9}'));
assertTrue(re.test('\u{1F7EA}'));
assertTrue(re.test('\u{1F7EB}'));
assertTrue(re.test('\u{1F90C}'));
assertTrue(re.test('\u{1F90D}'));
assertTrue(re.test('\u{1F90E}'));
assertTrue(re.test('\u{1F90F}'));
assertTrue(re.test('\u{1F910}'));
assertTrue(re.test('\u{1F911}'));
assertTrue(re.test('\u{1F912}'));
assertTrue(re.test('\u{1F913}'));
assertTrue(re.test('\u{1F914}'));
assertTrue(re.test('\u{1F915}'));
assertTrue(re.test('\u{1F916}'));
assertTrue(re.test('\u{1F917}'));
assertTrue(re.test('\u{1F918}'));
assertTrue(re.test('\u{1F919}'));
assertTrue(re.test('\u{1F91A}'));
assertTrue(re.test('\u{1F91B}'));
assertTrue(re.test('\u{1F91C}'));
assertTrue(re.test('\u{1F91D}'));
assertTrue(re.test('\u{1F91E}'));
assertTrue(re.test('\u{1F91F}'));
assertTrue(re.test('\u{1F920}'));
assertTrue(re.test('\u{1F921}'));
assertTrue(re.test('\u{1F922}'));
assertTrue(re.test('\u{1F923}'));
assertTrue(re.test('\u{1F924}'));
assertTrue(re.test('\u{1F925}'));
assertTrue(re.test('\u{1F926}'));
assertTrue(re.test('\u{1F927}'));
assertTrue(re.test('\u{1F928}'));
assertTrue(re.test('\u{1F929}'));
assertTrue(re.test('\u{1F92A}'));
assertTrue(re.test('\u{1F92B}'));
assertTrue(re.test('\u{1F92C}'));
assertTrue(re.test('\u{1F92D}'));
assertTrue(re.test('\u{1F92E}'));
assertTrue(re.test('\u{1F92F}'));
assertTrue(re.test('\u{1F930}'));
assertTrue(re.test('\u{1F931}'));
assertTrue(re.test('\u{1F932}'));
assertTrue(re.test('\u{1F933}'));
assertTrue(re.test('\u{1F934}'));
assertTrue(re.test('\u{1F935}'));
assertTrue(re.test('\u{1F936}'));
assertTrue(re.test('\u{1F937}'));
assertTrue(re.test('\u{1F938}'));
assertTrue(re.test('\u{1F939}'));
assertTrue(re.test('\u{1F93A}'));
assertTrue(re.test('\u{1F93C}'));
assertTrue(re.test('\u{1F93D}'));
assertTrue(re.test('\u{1F93E}'));
assertTrue(re.test('\u{1F93F}'));
assertTrue(re.test('\u{1F940}'));
assertTrue(re.test('\u{1F941}'));
assertTrue(re.test('\u{1F942}'));
assertTrue(re.test('\u{1F943}'));
assertTrue(re.test('\u{1F944}'));
assertTrue(re.test('\u{1F945}'));
assertTrue(re.test('\u{1F947}'));
assertTrue(re.test('\u{1F948}'));
assertTrue(re.test('\u{1F949}'));
assertTrue(re.test('\u{1F94A}'));
assertTrue(re.test('\u{1F94B}'));
assertTrue(re.test('\u{1F94C}'));
assertTrue(re.test('\u{1F94D}'));
assertTrue(re.test('\u{1F94E}'));
assertTrue(re.test('\u{1F94F}'));
assertTrue(re.test('\u{1F950}'));
assertTrue(re.test('\u{1F951}'));
assertTrue(re.test('\u{1F952}'));
assertTrue(re.test('\u{1F953}'));
assertTrue(re.test('\u{1F954}'));
assertTrue(re.test('\u{1F955}'));
assertTrue(re.test('\u{1F956}'));
assertTrue(re.test('\u{1F957}'));
assertTrue(re.test('\u{1F958}'));
assertTrue(re.test('\u{1F959}'));
assertTrue(re.test('\u{1F95A}'));
assertTrue(re.test('\u{1F95B}'));
assertTrue(re.test('\u{1F95C}'));
assertTrue(re.test('\u{1F95D}'));
assertTrue(re.test('\u{1F95E}'));
assertTrue(re.test('\u{1F95F}'));
assertTrue(re.test('\u{1F960}'));
assertTrue(re.test('\u{1F961}'));
assertTrue(re.test('\u{1F962}'));
assertTrue(re.test('\u{1F963}'));
assertTrue(re.test('\u{1F964}'));
assertTrue(re.test('\u{1F965}'));
assertTrue(re.test('\u{1F966}'));
assertTrue(re.test('\u{1F967}'));
assertTrue(re.test('\u{1F968}'));
assertTrue(re.test('\u{1F969}'));
assertTrue(re.test('\u{1F96A}'));
assertTrue(re.test('\u{1F96B}'));
assertTrue(re.test('\u{1F96C}'));
assertTrue(re.test('\u{1F96D}'));
assertTrue(re.test('\u{1F96E}'));
assertTrue(re.test('\u{1F96F}'));
assertTrue(re.test('\u{1F970}'));
assertTrue(re.test('\u{1F971}'));
assertTrue(re.test('\u{1F972}'));
assertTrue(re.test('\u{1F973}'));
assertTrue(re.test('\u{1F974}'));
assertTrue(re.test('\u{1F975}'));
assertTrue(re.test('\u{1F976}'));
assertTrue(re.test('\u{1F977}'));
assertTrue(re.test('\u{1F978}'));
assertTrue(re.test('\u{1F97A}'));
assertTrue(re.test('\u{1F97B}'));
assertTrue(re.test('\u{1F97C}'));
assertTrue(re.test('\u{1F97D}'));
assertTrue(re.test('\u{1F97E}'));
assertTrue(re.test('\u{1F97F}'));
assertTrue(re.test('\u{1F980}'));
assertTrue(re.test('\u{1F981}'));
assertTrue(re.test('\u{1F982}'));
assertTrue(re.test('\u{1F983}'));
assertTrue(re.test('\u{1F984}'));
assertTrue(re.test('\u{1F985}'));
assertTrue(re.test('\u{1F986}'));
assertTrue(re.test('\u{1F987}'));
assertTrue(re.test('\u{1F988}'));
assertTrue(re.test('\u{1F989}'));
assertTrue(re.test('\u{1F98A}'));
assertTrue(re.test('\u{1F98B}'));
assertTrue(re.test('\u{1F98C}'));
assertTrue(re.test('\u{1F98D}'));
assertTrue(re.test('\u{1F98E}'));
assertTrue(re.test('\u{1F98F}'));
assertTrue(re.test('\u{1F990}'));
assertTrue(re.test('\u{1F991}'));
assertTrue(re.test('\u{1F992}'));
assertTrue(re.test('\u{1F993}'));
assertTrue(re.test('\u{1F994}'));
assertTrue(re.test('\u{1F995}'));
assertTrue(re.test('\u{1F996}'));
assertTrue(re.test('\u{1F997}'));
assertTrue(re.test('\u{1F998}'));
assertTrue(re.test('\u{1F999}'));
assertTrue(re.test('\u{1F99A}'));
assertTrue(re.test('\u{1F99B}'));
assertTrue(re.test('\u{1F99C}'));
assertTrue(re.test('\u{1F99D}'));
assertTrue(re.test('\u{1F99E}'));
assertTrue(re.test('\u{1F99F}'));
assertTrue(re.test('\u{1F9A0}'));
assertTrue(re.test('\u{1F9A1}'));
assertTrue(re.test('\u{1F9A2}'));
assertTrue(re.test('\u{1F9A3}'));
assertTrue(re.test('\u{1F9A4}'));
assertTrue(re.test('\u{1F9A5}'));
assertTrue(re.test('\u{1F9A6}'));
assertTrue(re.test('\u{1F9A7}'));
assertTrue(re.test('\u{1F9A8}'));
assertTrue(re.test('\u{1F9A9}'));
assertTrue(re.test('\u{1F9AA}'));
assertTrue(re.test('\u{1F9AB}'));
assertTrue(re.test('\u{1F9AC}'));
assertTrue(re.test('\u{1F9AD}'));
assertTrue(re.test('\u{1F9AE}'));
assertTrue(re.test('\u{1F9AF}'));
assertTrue(re.test('\u{1F9B0}'));
assertTrue(re.test('\u{1F9B1}'));
assertTrue(re.test('\u{1F9B2}'));
assertTrue(re.test('\u{1F9B3}'));
assertTrue(re.test('\u{1F9B4}'));
assertTrue(re.test('\u{1F9B5}'));
assertTrue(re.test('\u{1F9B6}'));
assertTrue(re.test('\u{1F9B7}'));
assertTrue(re.test('\u{1F9B8}'));
assertTrue(re.test('\u{1F9B9}'));
assertTrue(re.test('\u{1F9BA}'));
assertTrue(re.test('\u{1F9BB}'));
assertTrue(re.test('\u{1F9BC}'));
assertTrue(re.test('\u{1F9BD}'));
assertTrue(re.test('\u{1F9BE}'));
assertTrue(re.test('\u{1F9BF}'));
assertTrue(re.test('\u{1F9C0}'));
assertTrue(re.test('\u{1F9C1}'));
assertTrue(re.test('\u{1F9C2}'));
assertTrue(re.test('\u{1F9C3}'));
assertTrue(re.test('\u{1F9C4}'));
assertTrue(re.test('\u{1F9C5}'));
assertTrue(re.test('\u{1F9C6}'));
assertTrue(re.test('\u{1F9C7}'));
assertTrue(re.test('\u{1F9C8}'));
assertTrue(re.test('\u{1F9C9}'));
assertTrue(re.test('\u{1F9CA}'));
assertTrue(re.test('\u{1F9CB}'));
assertTrue(re.test('\u{1F9CD}'));
assertTrue(re.test('\u{1F9CE}'));
assertTrue(re.test('\u{1F9CF}'));
assertTrue(re.test('\u{1F9D0}'));
assertTrue(re.test('\u{1F9D1}'));
assertTrue(re.test('\u{1F9D2}'));
assertTrue(re.test('\u{1F9D3}'));
assertTrue(re.test('\u{1F9D4}'));
assertTrue(re.test('\u{1F9D5}'));
assertTrue(re.test('\u{1F9D6}'));
assertTrue(re.test('\u{1F9D7}'));
assertTrue(re.test('\u{1F9D8}'));
assertTrue(re.test('\u{1F9D9}'));
assertTrue(re.test('\u{1F9DA}'));
assertTrue(re.test('\u{1F9DB}'));
assertTrue(re.test('\u{1F9DC}'));
assertTrue(re.test('\u{1F9DD}'));
assertTrue(re.test('\u{1F9DE}'));
assertTrue(re.test('\u{1F9DF}'));
assertTrue(re.test('\u{1F9E0}'));
assertTrue(re.test('\u{1F9E1}'));
assertTrue(re.test('\u{1F9E2}'));
assertTrue(re.test('\u{1F9E3}'));
assertTrue(re.test('\u{1F9E4}'));
assertTrue(re.test('\u{1F9E5}'));
assertTrue(re.test('\u{1F9E6}'));
assertTrue(re.test('\u{1F9E7}'));
assertTrue(re.test('\u{1F9E8}'));
assertTrue(re.test('\u{1F9E9}'));
assertTrue(re.test('\u{1F9EA}'));
assertTrue(re.test('\u{1F9EB}'));
assertTrue(re.test('\u{1F9EC}'));
assertTrue(re.test('\u{1F9ED}'));
assertTrue(re.test('\u{1F9EE}'));
assertTrue(re.test('\u{1F9EF}'));
assertTrue(re.test('\u{1F9F0}'));
assertTrue(re.test('\u{1F9F1}'));
assertTrue(re.test('\u{1F9F2}'));
assertTrue(re.test('\u{1F9F3}'));
assertTrue(re.test('\u{1F9F4}'));
assertTrue(re.test('\u{1F9F5}'));
assertTrue(re.test('\u{1F9F6}'));
assertTrue(re.test('\u{1F9F7}'));
assertTrue(re.test('\u{1F9F8}'));
assertTrue(re.test('\u{1F9F9}'));
assertTrue(re.test('\u{1F9FA}'));
assertTrue(re.test('\u{1F9FB}'));
assertTrue(re.test('\u{1F9FC}'));
assertTrue(re.test('\u{1F9FD}'));
assertTrue(re.test('\u{1F9FE}'));
assertTrue(re.test('\u{1F9FF}'));
assertTrue(re.test('\u{1FA70}'));
assertTrue(re.test('\u{1FA71}'));
assertTrue(re.test('\u{1FA72}'));
assertTrue(re.test('\u{1FA73}'));
assertTrue(re.test('\u{1FA74}'));
assertTrue(re.test('\u{1FA78}'));
assertTrue(re.test('\u{1FA79}'));
assertTrue(re.test('\u{1FA7A}'));
assertTrue(re.test('\u{1FA80}'));
assertTrue(re.test('\u{1FA81}'));
assertTrue(re.test('\u{1FA82}'));
assertTrue(re.test('\u{1FA83}'));
assertTrue(re.test('\u{1FA84}'));
assertTrue(re.test('\u{1FA85}'));
assertTrue(re.test('\u{1FA86}'));
assertTrue(re.test('\u{1FA90}'));
assertTrue(re.test('\u{1FA91}'));
assertTrue(re.test('\u{1FA92}'));
assertTrue(re.test('\u{1FA93}'));
assertTrue(re.test('\u{1FA94}'));
assertTrue(re.test('\u{1FA95}'));
assertTrue(re.test('\u{1FA96}'));
assertTrue(re.test('\u{1FA97}'));
assertTrue(re.test('\u{1FA98}'));
assertTrue(re.test('\u{1FA99}'));
assertTrue(re.test('\u{1FA9A}'));
assertTrue(re.test('\u{1FA9B}'));
assertTrue(re.test('\u{1FA9C}'));
assertTrue(re.test('\u{1FA9D}'));
assertTrue(re.test('\u{1FA9E}'));
assertTrue(re.test('\u{1FA9F}'));
assertTrue(re.test('\u{1FAA0}'));
assertTrue(re.test('\u{1FAA1}'));
assertTrue(re.test('\u{1FAA2}'));
assertTrue(re.test('\u{1FAA3}'));
assertTrue(re.test('\u{1FAA4}'));
assertTrue(re.test('\u{1FAA5}'));
assertTrue(re.test('\u{1FAA6}'));
assertTrue(re.test('\u{1FAA7}'));
assertTrue(re.test('\u{1FAA8}'));
assertTrue(re.test('\u{1FAB0}'));
assertTrue(re.test('\u{1FAB1}'));
assertTrue(re.test('\u{1FAB2}'));
assertTrue(re.test('\u{1FAB3}'));
assertTrue(re.test('\u{1FAB4}'));
assertTrue(re.test('\u{1FAB5}'));
assertTrue(re.test('\u{1FAB6}'));
assertTrue(re.test('\u{1FAC0}'));
assertTrue(re.test('\u{1FAC1}'));
assertTrue(re.test('\u{1FAC2}'));
assertTrue(re.test('\u{1FAD0}'));
assertTrue(re.test('\u{1FAD1}'));
assertTrue(re.test('\u{1FAD2}'));
assertTrue(re.test('\u{1FAD3}'));
assertTrue(re.test('\u{1FAD4}'));
assertTrue(re.test('\u{1FAD5}'));
assertTrue(re.test('\u{1FAD6}'));
assertTrue(re.test('\xA9\uFE0F'));
assertTrue(re.test('\xAE\uFE0F'));
assertTrue(re.test('\u203C\uFE0F'));
assertTrue(re.test('\u2049\uFE0F'));
assertTrue(re.test('\u2122\uFE0F'));
assertTrue(re.test('\u2139\uFE0F'));
assertTrue(re.test('\u2194\uFE0F'));
assertTrue(re.test('\u2195\uFE0F'));
assertTrue(re.test('\u2196\uFE0F'));
assertTrue(re.test('\u2197\uFE0F'));
assertTrue(re.test('\u2198\uFE0F'));
assertTrue(re.test('\u2199\uFE0F'));
assertTrue(re.test('\u21A9\uFE0F'));
assertTrue(re.test('\u21AA\uFE0F'));
assertTrue(re.test('\u2328\uFE0F'));
assertTrue(re.test('\u23CF\uFE0F'));
assertTrue(re.test('\u23ED\uFE0F'));
assertTrue(re.test('\u23EE\uFE0F'));
assertTrue(re.test('\u23EF\uFE0F'));
assertTrue(re.test('\u23F1\uFE0F'));
assertTrue(re.test('\u23F2\uFE0F'));
assertTrue(re.test('\u23F8\uFE0F'));
assertTrue(re.test('\u23F9\uFE0F'));
assertTrue(re.test('\u23FA\uFE0F'));
assertTrue(re.test('\u24C2\uFE0F'));
assertTrue(re.test('\u25AA\uFE0F'));
assertTrue(re.test('\u25AB\uFE0F'));
assertTrue(re.test('\u25B6\uFE0F'));
assertTrue(re.test('\u25C0\uFE0F'));
assertTrue(re.test('\u25FB\uFE0F'));
assertTrue(re.test('\u25FC\uFE0F'));
assertTrue(re.test('\u2600\uFE0F'));
assertTrue(re.test('\u2601\uFE0F'));
assertTrue(re.test('\u2602\uFE0F'));
assertTrue(re.test('\u2603\uFE0F'));
assertTrue(re.test('\u2604\uFE0F'));
assertTrue(re.test('\u260E\uFE0F'));
assertTrue(re.test('\u2611\uFE0F'));
assertTrue(re.test('\u2618\uFE0F'));
assertTrue(re.test('\u261D\uFE0F'));
assertTrue(re.test('\u2620\uFE0F'));
assertTrue(re.test('\u2622\uFE0F'));
assertTrue(re.test('\u2623\uFE0F'));
assertTrue(re.test('\u2626\uFE0F'));
assertTrue(re.test('\u262A\uFE0F'));
assertTrue(re.test('\u262E\uFE0F'));
assertTrue(re.test('\u262F\uFE0F'));
assertTrue(re.test('\u2638\uFE0F'));
assertTrue(re.test('\u2639\uFE0F'));
assertTrue(re.test('\u263A\uFE0F'));
assertTrue(re.test('\u2640\uFE0F'));
assertTrue(re.test('\u2642\uFE0F'));
assertTrue(re.test('\u265F\uFE0F'));
assertTrue(re.test('\u2660\uFE0F'));
assertTrue(re.test('\u2663\uFE0F'));
assertTrue(re.test('\u2665\uFE0F'));
assertTrue(re.test('\u2666\uFE0F'));
assertTrue(re.test('\u2668\uFE0F'));
assertTrue(re.test('\u267B\uFE0F'));
assertTrue(re.test('\u267E\uFE0F'));
assertTrue(re.test('\u2692\uFE0F'));
assertTrue(re.test('\u2694\uFE0F'));
assertTrue(re.test('\u2695\uFE0F'));
assertTrue(re.test('\u2696\uFE0F'));
assertTrue(re.test('\u2697\uFE0F'));
assertTrue(re.test('\u2699\uFE0F'));
assertTrue(re.test('\u269B\uFE0F'));
assertTrue(re.test('\u269C\uFE0F'));
assertTrue(re.test('\u26A0\uFE0F'));
assertTrue(re.test('\u26A7\uFE0F'));
assertTrue(re.test('\u26B0\uFE0F'));
assertTrue(re.test('\u26B1\uFE0F'));
assertTrue(re.test('\u26C8\uFE0F'));
assertTrue(re.test('\u26CF\uFE0F'));
assertTrue(re.test('\u26D1\uFE0F'));
assertTrue(re.test('\u26D3\uFE0F'));
assertTrue(re.test('\u26E9\uFE0F'));
assertTrue(re.test('\u26F0\uFE0F'));
assertTrue(re.test('\u26F1\uFE0F'));
assertTrue(re.test('\u26F4\uFE0F'));
assertTrue(re.test('\u26F7\uFE0F'));
assertTrue(re.test('\u26F8\uFE0F'));
assertTrue(re.test('\u26F9\uFE0F'));
assertTrue(re.test('\u2702\uFE0F'));
assertTrue(re.test('\u2708\uFE0F'));
assertTrue(re.test('\u2709\uFE0F'));
assertTrue(re.test('\u270C\uFE0F'));
assertTrue(re.test('\u270D\uFE0F'));
assertTrue(re.test('\u270F\uFE0F'));
assertTrue(re.test('\u2712\uFE0F'));
assertTrue(re.test('\u2714\uFE0F'));
assertTrue(re.test('\u2716\uFE0F'));
assertTrue(re.test('\u271D\uFE0F'));
assertTrue(re.test('\u2721\uFE0F'));
assertTrue(re.test('\u2733\uFE0F'));
assertTrue(re.test('\u2734\uFE0F'));
assertTrue(re.test('\u2744\uFE0F'));
assertTrue(re.test('\u2747\uFE0F'));
assertTrue(re.test('\u2763\uFE0F'));
assertTrue(re.test('\u2764\uFE0F'));
assertTrue(re.test('\u27A1\uFE0F'));
assertTrue(re.test('\u2934\uFE0F'));
assertTrue(re.test('\u2935\uFE0F'));
assertTrue(re.test('\u2B05\uFE0F'));
assertTrue(re.test('\u2B06\uFE0F'));
assertTrue(re.test('\u2B07\uFE0F'));
assertTrue(re.test('\u3030\uFE0F'));
assertTrue(re.test('\u303D\uFE0F'));
assertTrue(re.test('\u3297\uFE0F'));
assertTrue(re.test('\u3299\uFE0F'));
assertTrue(re.test('\u{1F170}\uFE0F'));
assertTrue(re.test('\u{1F171}\uFE0F'));
assertTrue(re.test('\u{1F17E}\uFE0F'));
assertTrue(re.test('\u{1F17F}\uFE0F'));
assertTrue(re.test('\u{1F202}\uFE0F'));
assertTrue(re.test('\u{1F237}\uFE0F'));
assertTrue(re.test('\u{1F321}\uFE0F'));
assertTrue(re.test('\u{1F324}\uFE0F'));
assertTrue(re.test('\u{1F325}\uFE0F'));
assertTrue(re.test('\u{1F326}\uFE0F'));
assertTrue(re.test('\u{1F327}\uFE0F'));
assertTrue(re.test('\u{1F328}\uFE0F'));
assertTrue(re.test('\u{1F329}\uFE0F'));
assertTrue(re.test('\u{1F32A}\uFE0F'));
assertTrue(re.test('\u{1F32B}\uFE0F'));
assertTrue(re.test('\u{1F32C}\uFE0F'));
assertTrue(re.test('\u{1F336}\uFE0F'));
assertTrue(re.test('\u{1F37D}\uFE0F'));
assertTrue(re.test('\u{1F396}\uFE0F'));
assertTrue(re.test('\u{1F397}\uFE0F'));
assertTrue(re.test('\u{1F399}\uFE0F'));
assertTrue(re.test('\u{1F39A}\uFE0F'));
assertTrue(re.test('\u{1F39B}\uFE0F'));
assertTrue(re.test('\u{1F39E}\uFE0F'));
assertTrue(re.test('\u{1F39F}\uFE0F'));
assertTrue(re.test('\u{1F3CB}\uFE0F'));
assertTrue(re.test('\u{1F3CC}\uFE0F'));
assertTrue(re.test('\u{1F3CD}\uFE0F'));
assertTrue(re.test('\u{1F3CE}\uFE0F'));
assertTrue(re.test('\u{1F3D4}\uFE0F'));
assertTrue(re.test('\u{1F3D5}\uFE0F'));
assertTrue(re.test('\u{1F3D6}\uFE0F'));
assertTrue(re.test('\u{1F3D7}\uFE0F'));
assertTrue(re.test('\u{1F3D8}\uFE0F'));
assertTrue(re.test('\u{1F3D9}\uFE0F'));
assertTrue(re.test('\u{1F3DA}\uFE0F'));
assertTrue(re.test('\u{1F3DB}\uFE0F'));
assertTrue(re.test('\u{1F3DC}\uFE0F'));
assertTrue(re.test('\u{1F3DD}\uFE0F'));
assertTrue(re.test('\u{1F3DE}\uFE0F'));
assertTrue(re.test('\u{1F3DF}\uFE0F'));
assertTrue(re.test('\u{1F3F3}\uFE0F'));
assertTrue(re.test('\u{1F3F5}\uFE0F'));
assertTrue(re.test('\u{1F3F7}\uFE0F'));
assertTrue(re.test('\u{1F43F}\uFE0F'));
assertTrue(re.test('\u{1F441}\uFE0F'));
assertTrue(re.test('\u{1F4FD}\uFE0F'));
assertTrue(re.test('\u{1F549}\uFE0F'));
assertTrue(re.test('\u{1F54A}\uFE0F'));
assertTrue(re.test('\u{1F56F}\uFE0F'));
assertTrue(re.test('\u{1F570}\uFE0F'));
assertTrue(re.test('\u{1F573}\uFE0F'));
assertTrue(re.test('\u{1F574}\uFE0F'));
assertTrue(re.test('\u{1F575}\uFE0F'));
assertTrue(re.test('\u{1F576}\uFE0F'));
assertTrue(re.test('\u{1F577}\uFE0F'));
assertTrue(re.test('\u{1F578}\uFE0F'));
assertTrue(re.test('\u{1F579}\uFE0F'));
assertTrue(re.test('\u{1F587}\uFE0F'));
assertTrue(re.test('\u{1F58A}\uFE0F'));
assertTrue(re.test('\u{1F58B}\uFE0F'));
assertTrue(re.test('\u{1F58C}\uFE0F'));
assertTrue(re.test('\u{1F58D}\uFE0F'));
assertTrue(re.test('\u{1F590}\uFE0F'));
assertTrue(re.test('\u{1F5A5}\uFE0F'));
assertTrue(re.test('\u{1F5A8}\uFE0F'));
assertTrue(re.test('\u{1F5B1}\uFE0F'));
assertTrue(re.test('\u{1F5B2}\uFE0F'));
assertTrue(re.test('\u{1F5BC}\uFE0F'));
assertTrue(re.test('\u{1F5C2}\uFE0F'));
assertTrue(re.test('\u{1F5C3}\uFE0F'));
assertTrue(re.test('\u{1F5C4}\uFE0F'));
assertTrue(re.test('\u{1F5D1}\uFE0F'));
assertTrue(re.test('\u{1F5D2}\uFE0F'));
assertTrue(re.test('\u{1F5D3}\uFE0F'));
assertTrue(re.test('\u{1F5DC}\uFE0F'));
assertTrue(re.test('\u{1F5DD}\uFE0F'));
assertTrue(re.test('\u{1F5DE}\uFE0F'));
assertTrue(re.test('\u{1F5E1}\uFE0F'));
assertTrue(re.test('\u{1F5E3}\uFE0F'));
assertTrue(re.test('\u{1F5E8}\uFE0F'));
assertTrue(re.test('\u{1F5EF}\uFE0F'));
assertTrue(re.test('\u{1F5F3}\uFE0F'));
assertTrue(re.test('\u{1F5FA}\uFE0F'));
assertTrue(re.test('\u{1F6CB}\uFE0F'));
assertTrue(re.test('\u{1F6CD}\uFE0F'));
assertTrue(re.test('\u{1F6CE}\uFE0F'));
assertTrue(re.test('\u{1F6CF}\uFE0F'));
assertTrue(re.test('\u{1F6E0}\uFE0F'));
assertTrue(re.test('\u{1F6E1}\uFE0F'));
assertTrue(re.test('\u{1F6E2}\uFE0F'));
assertTrue(re.test('\u{1F6E3}\uFE0F'));
assertTrue(re.test('\u{1F6E4}\uFE0F'));
assertTrue(re.test('\u{1F6E5}\uFE0F'));
assertTrue(re.test('\u{1F6E9}\uFE0F'));
assertTrue(re.test('\u{1F6F0}\uFE0F'));
assertTrue(re.test('\u{1F6F3}\uFE0F'));
// Copyright 2019 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-regexp-sequence
// These tests have been generated by the script at
// https://gist.github.com/mathiasbynens/3b42c99a227521dabfe68d9e63f00f42.
// Do not modify this file directly!
const re = /\p{Emoji_Flag_Sequence}/u;
assertTrue(re.test('\u{1F1E6}\u{1F1E8}'));
assertTrue(re.test('\u{1F1FF}\u{1F1FC}'));
assertTrue(re.test('\u{1F1E6}\u{1F1EA}'));
assertTrue(re.test('\u{1F1E6}\u{1F1EB}'));
assertTrue(re.test('\u{1F1E6}\u{1F1EC}'));
assertTrue(re.test('\u{1F1E6}\u{1F1EE}'));
assertTrue(re.test('\u{1F1E6}\u{1F1F1}'));
assertTrue(re.test('\u{1F1E6}\u{1F1F2}'));
assertTrue(re.test('\u{1F1E6}\u{1F1F4}'));
assertTrue(re.test('\u{1F1E6}\u{1F1F6}'));
assertTrue(re.test('\u{1F1E6}\u{1F1F7}'));
assertTrue(re.test('\u{1F1E6}\u{1F1F8}'));
assertTrue(re.test('\u{1F1E6}\u{1F1F9}'));
assertTrue(re.test('\u{1F1E6}\u{1F1FA}'));
assertTrue(re.test('\u{1F1E6}\u{1F1FC}'));
assertTrue(re.test('\u{1F1E6}\u{1F1FD}'));
assertTrue(re.test('\u{1F1E6}\u{1F1FF}'));
assertTrue(re.test('\u{1F1E7}\u{1F1E6}'));
assertTrue(re.test('\u{1F1E7}\u{1F1E7}'));
assertTrue(re.test('\u{1F1E7}\u{1F1E9}'));
assertTrue(re.test('\u{1F1E7}\u{1F1EA}'));
assertTrue(re.test('\u{1F1E7}\u{1F1EB}'));
assertTrue(re.test('\u{1F1E7}\u{1F1EC}'));
assertTrue(re.test('\u{1F1E7}\u{1F1ED}'));
assertTrue(re.test('\u{1F1E7}\u{1F1EE}'));
assertTrue(re.test('\u{1F1E7}\u{1F1EF}'));
assertTrue(re.test('\u{1F1E7}\u{1F1F1}'));
assertTrue(re.test('\u{1F1E7}\u{1F1F2}'));
assertTrue(re.test('\u{1F1E7}\u{1F1F3}'));
assertTrue(re.test('\u{1F1E7}\u{1F1F4}'));
assertTrue(re.test('\u{1F1E7}\u{1F1F6}'));
assertTrue(re.test('\u{1F1E7}\u{1F1F7}'));
assertTrue(re.test('\u{1F1E7}\u{1F1F8}'));
assertTrue(re.test('\u{1F1E7}\u{1F1F9}'));
assertTrue(re.test('\u{1F1E7}\u{1F1FB}'));
assertTrue(re.test('\u{1F1E7}\u{1F1FC}'));
assertTrue(re.test('\u{1F1E7}\u{1F1FE}'));
assertTrue(re.test('\u{1F1E7}\u{1F1FF}'));
assertTrue(re.test('\u{1F1E8}\u{1F1E6}'));
assertTrue(re.test('\u{1F1E8}\u{1F1E8}'));
assertTrue(re.test('\u{1F1E8}\u{1F1E9}'));
assertTrue(re.test('\u{1F1E8}\u{1F1EB}'));
assertTrue(re.test('\u{1F1E8}\u{1F1EC}'));
assertTrue(re.test('\u{1F1E8}\u{1F1ED}'));
assertTrue(re.test('\u{1F1E8}\u{1F1EE}'));
assertTrue(re.test('\u{1F1E8}\u{1F1F0}'));
assertTrue(re.test('\u{1F1E8}\u{1F1F1}'));
assertTrue(re.test('\u{1F1E8}\u{1F1F2}'));
assertTrue(re.test('\u{1F1E8}\u{1F1F3}'));
assertTrue(re.test('\u{1F1E8}\u{1F1F4}'));
assertTrue(re.test('\u{1F1E8}\u{1F1F5}'));
assertTrue(re.test('\u{1F1E8}\u{1F1F7}'));
assertTrue(re.test('\u{1F1E8}\u{1F1FA}'));
assertTrue(re.test('\u{1F1E8}\u{1F1FB}'));
assertTrue(re.test('\u{1F1E8}\u{1F1FC}'));
assertTrue(re.test('\u{1F1E8}\u{1F1FD}'));
assertTrue(re.test('\u{1F1E8}\u{1F1FE}'));
assertTrue(re.test('\u{1F1E8}\u{1F1FF}'));
assertTrue(re.test('\u{1F1E9}\u{1F1EA}'));
assertTrue(re.test('\u{1F1E9}\u{1F1EC}'));
assertTrue(re.test('\u{1F1E9}\u{1F1EF}'));
assertTrue(re.test('\u{1F1E9}\u{1F1F0}'));
assertTrue(re.test('\u{1F1E9}\u{1F1F2}'));
assertTrue(re.test('\u{1F1E9}\u{1F1F4}'));
assertTrue(re.test('\u{1F1E9}\u{1F1FF}'));
assertTrue(re.test('\u{1F1EA}\u{1F1E6}'));
assertTrue(re.test('\u{1F1EA}\u{1F1E8}'));
assertTrue(re.test('\u{1F1EA}\u{1F1EA}'));
assertTrue(re.test('\u{1F1EA}\u{1F1EC}'));
assertTrue(re.test('\u{1F1EA}\u{1F1ED}'));
assertTrue(re.test('\u{1F1EA}\u{1F1F7}'));
assertTrue(re.test('\u{1F1EA}\u{1F1F8}'));
assertTrue(re.test('\u{1F1EA}\u{1F1F9}'));
assertTrue(re.test('\u{1F1EA}\u{1F1FA}'));
assertTrue(re.test('\u{1F1EB}\u{1F1EE}'));
assertTrue(re.test('\u{1F1EB}\u{1F1EF}'));
assertTrue(re.test('\u{1F1EB}\u{1F1F0}'));
assertTrue(re.test('\u{1F1EB}\u{1F1F2}'));
assertTrue(re.test('\u{1F1EB}\u{1F1F4}'));
assertTrue(re.test('\u{1F1EB}\u{1F1F7}'));
assertTrue(re.test('\u{1F1EC}\u{1F1E6}'));
assertTrue(re.test('\u{1F1EC}\u{1F1E7}'));
assertTrue(re.test('\u{1F1EC}\u{1F1E9}'));
assertTrue(re.test('\u{1F1EC}\u{1F1EA}'));
assertTrue(re.test('\u{1F1EC}\u{1F1EB}'));
assertTrue(re.test('\u{1F1EC}\u{1F1EC}'));
assertTrue(re.test('\u{1F1EC}\u{1F1ED}'));
assertTrue(re.test('\u{1F1EC}\u{1F1EE}'));
assertTrue(re.test('\u{1F1EC}\u{1F1F1}'));
assertTrue(re.test('\u{1F1EC}\u{1F1F2}'));
assertTrue(re.test('\u{1F1EC}\u{1F1F3}'));
assertTrue(re.test('\u{1F1EC}\u{1F1F5}'));
assertTrue(re.test('\u{1F1EC}\u{1F1F6}'));
assertTrue(re.test('\u{1F1EC}\u{1F1F7}'));
assertTrue(re.test('\u{1F1EC}\u{1F1F8}'));
assertTrue(re.test('\u{1F1EC}\u{1F1F9}'));
assertTrue(re.test('\u{1F1EC}\u{1F1FA}'));
assertTrue(re.test('\u{1F1EC}\u{1F1FC}'));
assertTrue(re.test('\u{1F1EC}\u{1F1FE}'));
assertTrue(re.test('\u{1F1ED}\u{1F1F0}'));
assertTrue(re.test('\u{1F1ED}\u{1F1F2}'));
assertTrue(re.test('\u{1F1ED}\u{1F1F3}'));
assertTrue(re.test('\u{1F1ED}\u{1F1F7}'));
assertTrue(re.test('\u{1F1ED}\u{1F1F9}'));
assertTrue(re.test('\u{1F1ED}\u{1F1FA}'));
assertTrue(re.test('\u{1F1EE}\u{1F1E8}'));
assertTrue(re.test('\u{1F1EE}\u{1F1E9}'));
assertTrue(re.test('\u{1F1EE}\u{1F1EA}'));
assertTrue(re.test('\u{1F1EE}\u{1F1F1}'));
assertTrue(re.test('\u{1F1EE}\u{1F1F2}'));
assertTrue(re.test('\u{1F1EE}\u{1F1F3}'));
assertTrue(re.test('\u{1F1EE}\u{1F1F4}'));
assertTrue(re.test('\u{1F1EE}\u{1F1F6}'));
assertTrue(re.test('\u{1F1EE}\u{1F1F7}'));
assertTrue(re.test('\u{1F1EE}\u{1F1F8}'));
assertTrue(re.test('\u{1F1EE}\u{1F1F9}'));
assertTrue(re.test('\u{1F1EF}\u{1F1EA}'));
assertTrue(re.test('\u{1F1EF}\u{1F1F2}'));
assertTrue(re.test('\u{1F1EF}\u{1F1F4}'));
assertTrue(re.test('\u{1F1EF}\u{1F1F5}'));
assertTrue(re.test('\u{1F1F0}\u{1F1EA}'));
assertTrue(re.test('\u{1F1F0}\u{1F1EC}'));
assertTrue(re.test('\u{1F1F0}\u{1F1ED}'));
assertTrue(re.test('\u{1F1F0}\u{1F1EE}'));
assertTrue(re.test('\u{1F1F0}\u{1F1F2}'));
assertTrue(re.test('\u{1F1F0}\u{1F1F3}'));
assertTrue(re.test('\u{1F1F0}\u{1F1F5}'));
assertTrue(re.test('\u{1F1F0}\u{1F1F7}'));
assertTrue(re.test('\u{1F1F0}\u{1F1FC}'));
assertTrue(re.test('\u{1F1E6}\u{1F1E9}'));
assertTrue(re.test('\u{1F1F0}\u{1F1FF}'));
assertTrue(re.test('\u{1F1F1}\u{1F1E6}'));
assertTrue(re.test('\u{1F1F1}\u{1F1E7}'));
assertTrue(re.test('\u{1F1F1}\u{1F1E8}'));
assertTrue(re.test('\u{1F1F1}\u{1F1EE}'));
assertTrue(re.test('\u{1F1F1}\u{1F1F0}'));
assertTrue(re.test('\u{1F1F1}\u{1F1F7}'));
assertTrue(re.test('\u{1F1F1}\u{1F1F8}'));
assertTrue(re.test('\u{1F1F1}\u{1F1F9}'));
assertTrue(re.test('\u{1F1F1}\u{1F1FA}'));
assertTrue(re.test('\u{1F1F1}\u{1F1FB}'));
assertTrue(re.test('\u{1F1F1}\u{1F1FE}'));
assertTrue(re.test('\u{1F1F2}\u{1F1E6}'));
assertTrue(re.test('\u{1F1F2}\u{1F1E8}'));
assertTrue(re.test('\u{1F1F2}\u{1F1E9}'));
assertTrue(re.test('\u{1F1F2}\u{1F1EA}'));
assertTrue(re.test('\u{1F1F2}\u{1F1EB}'));
assertTrue(re.test('\u{1F1F2}\u{1F1EC}'));
assertTrue(re.test('\u{1F1F2}\u{1F1ED}'));
assertTrue(re.test('\u{1F1F2}\u{1F1F0}'));
assertTrue(re.test('\u{1F1F2}\u{1F1F1}'));
assertTrue(re.test('\u{1F1F2}\u{1F1F2}'));
assertTrue(re.test('\u{1F1F2}\u{1F1F3}'));
assertTrue(re.test('\u{1F1F2}\u{1F1F4}'));
assertTrue(re.test('\u{1F1F2}\u{1F1F5}'));
assertTrue(re.test('\u{1F1F2}\u{1F1F6}'));
assertTrue(re.test('\u{1F1F2}\u{1F1F7}'));
assertTrue(re.test('\u{1F1F2}\u{1F1F8}'));
assertTrue(re.test('\u{1F1F2}\u{1F1F9}'));
assertTrue(re.test('\u{1F1F2}\u{1F1FA}'));
assertTrue(re.test('\u{1F1F2}\u{1F1FB}'));
assertTrue(re.test('\u{1F1F2}\u{1F1FC}'));
assertTrue(re.test('\u{1F1F2}\u{1F1FD}'));
assertTrue(re.test('\u{1F1F2}\u{1F1FE}'));
assertTrue(re.test('\u{1F1F2}\u{1F1FF}'));
assertTrue(re.test('\u{1F1F3}\u{1F1E6}'));
assertTrue(re.test('\u{1F1F3}\u{1F1E8}'));
assertTrue(re.test('\u{1F1F3}\u{1F1EA}'));
assertTrue(re.test('\u{1F1F3}\u{1F1EB}'));
assertTrue(re.test('\u{1F1F3}\u{1F1EC}'));
assertTrue(re.test('\u{1F1F3}\u{1F1EE}'));
assertTrue(re.test('\u{1F1F3}\u{1F1F1}'));
assertTrue(re.test('\u{1F1F3}\u{1F1F4}'));
assertTrue(re.test('\u{1F1F3}\u{1F1F5}'));
assertTrue(re.test('\u{1F1F3}\u{1F1F7}'));
assertTrue(re.test('\u{1F1F3}\u{1F1FA}'));
assertTrue(re.test('\u{1F1F3}\u{1F1FF}'));
assertTrue(re.test('\u{1F1F4}\u{1F1F2}'));
assertTrue(re.test('\u{1F1F5}\u{1F1E6}'));
assertTrue(re.test('\u{1F1F5}\u{1F1EA}'));
assertTrue(re.test('\u{1F1F5}\u{1F1EB}'));
assertTrue(re.test('\u{1F1F5}\u{1F1EC}'));
assertTrue(re.test('\u{1F1F5}\u{1F1ED}'));
assertTrue(re.test('\u{1F1F5}\u{1F1F0}'));
assertTrue(re.test('\u{1F1F5}\u{1F1F1}'));
assertTrue(re.test('\u{1F1F5}\u{1F1F2}'));
assertTrue(re.test('\u{1F1F5}\u{1F1F3}'));
assertTrue(re.test('\u{1F1F5}\u{1F1F7}'));
assertTrue(re.test('\u{1F1F5}\u{1F1F8}'));
assertTrue(re.test('\u{1F1F5}\u{1F1F9}'));
assertTrue(re.test('\u{1F1F5}\u{1F1FC}'));
assertTrue(re.test('\u{1F1F5}\u{1F1FE}'));
assertTrue(re.test('\u{1F1F6}\u{1F1E6}'));
assertTrue(re.test('\u{1F1F7}\u{1F1EA}'));
assertTrue(re.test('\u{1F1F7}\u{1F1F4}'));
assertTrue(re.test('\u{1F1F7}\u{1F1F8}'));
assertTrue(re.test('\u{1F1F7}\u{1F1FA}'));
assertTrue(re.test('\u{1F1F7}\u{1F1FC}'));
assertTrue(re.test('\u{1F1F8}\u{1F1E6}'));
assertTrue(re.test('\u{1F1F8}\u{1F1E7}'));
assertTrue(re.test('\u{1F1F8}\u{1F1E8}'));
assertTrue(re.test('\u{1F1F8}\u{1F1E9}'));
assertTrue(re.test('\u{1F1F8}\u{1F1EA}'));
assertTrue(re.test('\u{1F1F8}\u{1F1EC}'));
assertTrue(re.test('\u{1F1F8}\u{1F1ED}'));
assertTrue(re.test('\u{1F1F8}\u{1F1EE}'));
assertTrue(re.test('\u{1F1F8}\u{1F1EF}'));
assertTrue(re.test('\u{1F1F8}\u{1F1F0}'));
assertTrue(re.test('\u{1F1F8}\u{1F1F1}'));
assertTrue(re.test('\u{1F1F8}\u{1F1F2}'));
assertTrue(re.test('\u{1F1F8}\u{1F1F3}'));
assertTrue(re.test('\u{1F1F8}\u{1F1F4}'));
assertTrue(re.test('\u{1F1F8}\u{1F1F7}'));
assertTrue(re.test('\u{1F1F8}\u{1F1F8}'));
assertTrue(re.test('\u{1F1F8}\u{1F1F9}'));
assertTrue(re.test('\u{1F1F8}\u{1F1FB}'));
assertTrue(re.test('\u{1F1F8}\u{1F1FD}'));
assertTrue(re.test('\u{1F1F8}\u{1F1FE}'));
assertTrue(re.test('\u{1F1F8}\u{1F1FF}'));
assertTrue(re.test('\u{1F1F9}\u{1F1E6}'));
assertTrue(re.test('\u{1F1F9}\u{1F1E8}'));
assertTrue(re.test('\u{1F1F9}\u{1F1E9}'));
assertTrue(re.test('\u{1F1F9}\u{1F1EB}'));
assertTrue(re.test('\u{1F1F9}\u{1F1EC}'));
assertTrue(re.test('\u{1F1F9}\u{1F1ED}'));
assertTrue(re.test('\u{1F1F9}\u{1F1EF}'));
assertTrue(re.test('\u{1F1F9}\u{1F1F0}'));
assertTrue(re.test('\u{1F1F9}\u{1F1F1}'));
assertTrue(re.test('\u{1F1F9}\u{1F1F2}'));
assertTrue(re.test('\u{1F1F9}\u{1F1F3}'));
assertTrue(re.test('\u{1F1F9}\u{1F1F4}'));
assertTrue(re.test('\u{1F1F9}\u{1F1F7}'));
assertTrue(re.test('\u{1F1F9}\u{1F1F9}'));
assertTrue(re.test('\u{1F1F9}\u{1F1FB}'));
assertTrue(re.test('\u{1F1F9}\u{1F1FC}'));
assertTrue(re.test('\u{1F1F9}\u{1F1FF}'));
assertTrue(re.test('\u{1F1FA}\u{1F1E6}'));
assertTrue(re.test('\u{1F1FA}\u{1F1EC}'));
assertTrue(re.test('\u{1F1FA}\u{1F1F2}'));
assertTrue(re.test('\u{1F1FA}\u{1F1F3}'));
assertTrue(re.test('\u{1F1FA}\u{1F1F8}'));
assertTrue(re.test('\u{1F1FA}\u{1F1FE}'));
assertTrue(re.test('\u{1F1FA}\u{1F1FF}'));
assertTrue(re.test('\u{1F1FB}\u{1F1E6}'));
assertTrue(re.test('\u{1F1FB}\u{1F1E8}'));
assertTrue(re.test('\u{1F1FB}\u{1F1EA}'));
assertTrue(re.test('\u{1F1FB}\u{1F1EC}'));
assertTrue(re.test('\u{1F1FB}\u{1F1EE}'));
assertTrue(re.test('\u{1F1FB}\u{1F1F3}'));
assertTrue(re.test('\u{1F1FB}\u{1F1FA}'));
assertTrue(re.test('\u{1F1FC}\u{1F1EB}'));
assertTrue(re.test('\u{1F1FC}\u{1F1F8}'));
assertTrue(re.test('\u{1F1FD}\u{1F1F0}'));
assertTrue(re.test('\u{1F1FE}\u{1F1EA}'));
assertTrue(re.test('\u{1F1FE}\u{1F1F9}'));
assertTrue(re.test('\u{1F1FF}\u{1F1E6}'));
assertTrue(re.test('\u{1F1FF}\u{1F1F2}'));
assertTrue(re.test('\u{1F1F0}\u{1F1FE}'));
// Copyright 2019 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-regexp-sequence
// These tests have been generated by the script at
// https://gist.github.com/mathiasbynens/3b42c99a227521dabfe68d9e63f00f42.
// Do not modify this file directly!
const re = /\p{Emoji_Keycap_Sequence}/u;
assertTrue(re.test('#\uFE0F\u20E3'));
assertTrue(re.test('9\uFE0F\u20E3'));
assertTrue(re.test('0\uFE0F\u20E3'));
assertTrue(re.test('1\uFE0F\u20E3'));
assertTrue(re.test('2\uFE0F\u20E3'));
assertTrue(re.test('3\uFE0F\u20E3'));
assertTrue(re.test('*\uFE0F\u20E3'));
assertTrue(re.test('5\uFE0F\u20E3'));
assertTrue(re.test('6\uFE0F\u20E3'));
assertTrue(re.test('7\uFE0F\u20E3'));
assertTrue(re.test('8\uFE0F\u20E3'));
assertTrue(re.test('4\uFE0F\u20E3'));
This source diff could not be displayed because it is too large. You can view the blob instead.
// Copyright 2018 the V8 project authors. All rights reserved.
// Copyright 2020 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --harmony-regexp-sequence
// TODO(mathias): Update these tests once a Unicode 12-friendly ICU
// version rolls into V8.
// These tests have been generated by the script at
// https://gist.github.com/mathiasbynens/3b42c99a227521dabfe68d9e63f00f42.
// Do not modify this file directly!
const re = /\p{Emoji_Modifier_Sequence}/u;
const re = /\p{RGI_Emoji_Modifier_Sequence}/u;
assertTrue(re.test('\u261D\u{1F3FB}'));
assertTrue(re.test('\u{1F9DD}\u{1F3FF}'));
assertTrue(re.test('\u261D\u{1F3FC}'));
assertTrue(re.test('\u261D\u{1F3FD}'));
assertTrue(re.test('\u261D\u{1F3FE}'));
assertTrue(re.test('\u261D\u{1F3FF}'));
......@@ -164,6 +165,21 @@ assertTrue(re.test('\u{1F469}\u{1F3FC}'));
assertTrue(re.test('\u{1F469}\u{1F3FD}'));
assertTrue(re.test('\u{1F469}\u{1F3FE}'));
assertTrue(re.test('\u{1F469}\u{1F3FF}'));
assertTrue(re.test('\u{1F46B}\u{1F3FB}'));
assertTrue(re.test('\u{1F46B}\u{1F3FC}'));
assertTrue(re.test('\u{1F46B}\u{1F3FD}'));
assertTrue(re.test('\u{1F46B}\u{1F3FE}'));
assertTrue(re.test('\u{1F46B}\u{1F3FF}'));
assertTrue(re.test('\u{1F46C}\u{1F3FB}'));
assertTrue(re.test('\u{1F46C}\u{1F3FC}'));
assertTrue(re.test('\u{1F46C}\u{1F3FD}'));
assertTrue(re.test('\u{1F46C}\u{1F3FE}'));
assertTrue(re.test('\u{1F46C}\u{1F3FF}'));
assertTrue(re.test('\u{1F46D}\u{1F3FB}'));
assertTrue(re.test('\u{1F46D}\u{1F3FC}'));
assertTrue(re.test('\u{1F46D}\u{1F3FD}'));
assertTrue(re.test('\u{1F46D}\u{1F3FE}'));
assertTrue(re.test('\u{1F46D}\u{1F3FF}'));
assertTrue(re.test('\u{1F46E}\u{1F3FB}'));
assertTrue(re.test('\u{1F46E}\u{1F3FC}'));
assertTrue(re.test('\u{1F46E}\u{1F3FD}'));
......@@ -274,7 +290,7 @@ assertTrue(re.test('\u{1F590}\u{1F3FC}'));
assertTrue(re.test('\u{1F590}\u{1F3FD}'));
assertTrue(re.test('\u{1F590}\u{1F3FE}'));
assertTrue(re.test('\u{1F590}\u{1F3FF}'));
assertTrue(re.test('\u261D\u{1F3FC}'));
assertTrue(re.test('\u{1F595}\u{1F3FB}'));
assertTrue(re.test('\u{1F595}\u{1F3FC}'));
assertTrue(re.test('\u{1F595}\u{1F3FD}'));
assertTrue(re.test('\u{1F595}\u{1F3FE}'));
......@@ -354,6 +370,16 @@ assertTrue(re.test('\u{1F6CC}\u{1F3FC}'));
assertTrue(re.test('\u{1F6CC}\u{1F3FD}'));
assertTrue(re.test('\u{1F6CC}\u{1F3FE}'));
assertTrue(re.test('\u{1F6CC}\u{1F3FF}'));
assertTrue(re.test('\u{1F90C}\u{1F3FB}'));
assertTrue(re.test('\u{1F90C}\u{1F3FC}'));
assertTrue(re.test('\u{1F90C}\u{1F3FD}'));
assertTrue(re.test('\u{1F90C}\u{1F3FE}'));
assertTrue(re.test('\u{1F90C}\u{1F3FF}'));
assertTrue(re.test('\u{1F90F}\u{1F3FB}'));
assertTrue(re.test('\u{1F90F}\u{1F3FC}'));
assertTrue(re.test('\u{1F90F}\u{1F3FD}'));
assertTrue(re.test('\u{1F90F}\u{1F3FE}'));
assertTrue(re.test('\u{1F90F}\u{1F3FF}'));
assertTrue(re.test('\u{1F918}\u{1F3FB}'));
assertTrue(re.test('\u{1F918}\u{1F3FC}'));
assertTrue(re.test('\u{1F918}\u{1F3FD}'));
......@@ -454,6 +480,11 @@ assertTrue(re.test('\u{1F93E}\u{1F3FC}'));
assertTrue(re.test('\u{1F93E}\u{1F3FD}'));
assertTrue(re.test('\u{1F93E}\u{1F3FE}'));
assertTrue(re.test('\u{1F93E}\u{1F3FF}'));
assertTrue(re.test('\u{1F977}\u{1F3FB}'));
assertTrue(re.test('\u{1F977}\u{1F3FC}'));
assertTrue(re.test('\u{1F977}\u{1F3FD}'));
assertTrue(re.test('\u{1F977}\u{1F3FE}'));
assertTrue(re.test('\u{1F977}\u{1F3FF}'));
assertTrue(re.test('\u{1F9B5}\u{1F3FB}'));
assertTrue(re.test('\u{1F9B5}\u{1F3FC}'));
assertTrue(re.test('\u{1F9B5}\u{1F3FD}'));
......@@ -474,6 +505,26 @@ assertTrue(re.test('\u{1F9B9}\u{1F3FC}'));
assertTrue(re.test('\u{1F9B9}\u{1F3FD}'));
assertTrue(re.test('\u{1F9B9}\u{1F3FE}'));
assertTrue(re.test('\u{1F9B9}\u{1F3FF}'));
assertTrue(re.test('\u{1F9BB}\u{1F3FB}'));
assertTrue(re.test('\u{1F9BB}\u{1F3FC}'));
assertTrue(re.test('\u{1F9BB}\u{1F3FD}'));
assertTrue(re.test('\u{1F9BB}\u{1F3FE}'));
assertTrue(re.test('\u{1F9BB}\u{1F3FF}'));
assertTrue(re.test('\u{1F9CD}\u{1F3FB}'));
assertTrue(re.test('\u{1F9CD}\u{1F3FC}'));
assertTrue(re.test('\u{1F9CD}\u{1F3FD}'));
assertTrue(re.test('\u{1F9CD}\u{1F3FE}'));
assertTrue(re.test('\u{1F9CD}\u{1F3FF}'));
assertTrue(re.test('\u{1F9CE}\u{1F3FB}'));
assertTrue(re.test('\u{1F9CE}\u{1F3FC}'));
assertTrue(re.test('\u{1F9CE}\u{1F3FD}'));
assertTrue(re.test('\u{1F9CE}\u{1F3FE}'));
assertTrue(re.test('\u{1F9CE}\u{1F3FF}'));
assertTrue(re.test('\u{1F9CF}\u{1F3FB}'));
assertTrue(re.test('\u{1F9CF}\u{1F3FC}'));
assertTrue(re.test('\u{1F9CF}\u{1F3FD}'));
assertTrue(re.test('\u{1F9CF}\u{1F3FE}'));
assertTrue(re.test('\u{1F9CF}\u{1F3FF}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}'));
......@@ -538,4 +589,4 @@ assertTrue(re.test('\u{1F9DD}\u{1F3FB}'));
assertTrue(re.test('\u{1F9DD}\u{1F3FC}'));
assertTrue(re.test('\u{1F9DD}\u{1F3FD}'));
assertTrue(re.test('\u{1F9DD}\u{1F3FE}'));
assertTrue(re.test('\u{1F595}\u{1F3FB}'));
assertTrue(re.test('\u{1F9DD}\u{1F3FF}'));
// Copyright 2019 the V8 project authors. All rights reserved.
// Copyright 2020 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
......@@ -8,7 +8,7 @@
// https://gist.github.com/mathiasbynens/3b42c99a227521dabfe68d9e63f00f42.
// Do not modify this file directly!
const re = /\p{Emoji_Tag_Sequence}/u;
const re = /\p{RGI_Emoji_Tag_Sequence}/u;
assertTrue(re.test('\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}'));
assertTrue(re.test('\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}'));
......
// Copyright 2019 the V8 project authors. All rights reserved.
// Copyright 2020 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
......@@ -8,10 +8,10 @@
// https://gist.github.com/mathiasbynens/3b42c99a227521dabfe68d9e63f00f42.
// Do not modify this file directly!
const re = /\p{Emoji_ZWJ_Sequence}/u;
const re = /\p{RGI_Emoji_ZWJ_Sequence}/u;
assertTrue(re.test('\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F468}'));
assertTrue(re.test('\u{1F441}\uFE0F\u200D\u{1F5E8}\uFE0F'));
assertTrue(re.test('\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}'));
assertTrue(re.test('\u{1F468}\u200D\u{1F466}'));
assertTrue(re.test('\u{1F468}\u200D\u{1F466}\u200D\u{1F466}'));
assertTrue(re.test('\u{1F468}\u200D\u{1F467}'));
......@@ -27,12 +27,22 @@ assertTrue(re.test('\u{1F468}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}'));
assertTrue(re.test('\u{1F468}\u200D\u{1F469}\u200D\u{1F467}'));
assertTrue(re.test('\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}'));
assertTrue(re.test('\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}'));
assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}'));
assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}'));
assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}'));
assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}'));
assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}'));
assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}'));
assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}'));
assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}'));
assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}'));
assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}'));
assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}'));
assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}'));
assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}'));
assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}'));
assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}'));
assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}'));
assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}'));
assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}'));
assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}'));
......@@ -55,17 +65,26 @@ assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}'))
assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}'));
assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}'));
assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}'));
assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}'));
assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}'));
assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}'));
assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}'));
assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}'));
assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}'));
assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}'));
assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}'));
assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}'));
assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}'));
assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}'));
assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}'));
assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}'));
assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}'));
assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}'));
assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}'));
assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}'));
assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}'));
assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}'));
assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}'));
assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}'));
assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}'));
assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}'));
......@@ -73,6 +92,7 @@ assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}'))
assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}'));
assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}'));
assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}'));
assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}'));
......@@ -82,16 +102,31 @@ assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}'))
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F384}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F384}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F384}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F384}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F384}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}'));
......@@ -102,6 +137,7 @@ assertTrue(re.test('\u{1F468}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F468}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F468}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F468}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F468}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F468}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F468}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F468}\u200D\u{1F3A8}'));
......@@ -121,6 +157,7 @@ assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F468}\u{1F3FB}\u200D\u{1F3A8}'));
......@@ -140,6 +177,7 @@ assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F468}\u{1F3FC}\u200D\u{1F3A8}'));
......@@ -159,6 +197,7 @@ assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F468}\u{1F3FD}\u200D\u{1F3A8}'));
......@@ -178,6 +217,7 @@ assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F468}\u{1F3FE}\u200D\u{1F3A8}'));
......@@ -197,6 +237,7 @@ assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F468}\u{1F3FF}\u200D\u{1F3A8}'));
......@@ -216,6 +257,7 @@ assertTrue(re.test('\u{1F469}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F469}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F469}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F469}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F469}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F469}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F469}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F469}\u200D\u{1F3A8}'));
......@@ -235,6 +277,7 @@ assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F469}\u{1F3FB}\u200D\u{1F3A8}'));
......@@ -254,6 +297,7 @@ assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F469}\u{1F3FC}\u200D\u{1F3A8}'));
......@@ -273,6 +317,7 @@ assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F469}\u{1F3FD}\u200D\u{1F3A8}'));
......@@ -292,6 +337,7 @@ assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F469}\u{1F3FE}\u200D\u{1F3A8}'));
......@@ -311,6 +357,7 @@ assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F3A8}'));
......@@ -325,6 +372,126 @@ assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F692}'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F9AF}'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F9BC}'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F9BD}'));
assertTrue(re.test('\u{1F9D1}\u200D\u2695\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F3A8}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F3EB}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F3ED}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F4BB}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F4BC}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F527}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F52C}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F680}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F692}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F9AF}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F9BC}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F9BD}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u2695\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F3A8}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F3EB}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F3ED}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F4BB}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F4BC}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F527}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F52C}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F680}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F692}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F9AF}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F9BC}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F9BD}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u2695\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F3A8}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F3EB}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F3ED}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F4BB}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F4BC}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F527}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F52C}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F680}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F692}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F9AF}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F9BC}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F9BD}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u2695\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F3A8}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F3EB}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F3ED}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F4BB}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F4BC}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F527}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F52C}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F680}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F692}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F9AF}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F9BC}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F9BD}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u2695\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F3A8}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F3EB}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F3ED}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F4BB}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F4BC}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F527}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F52C}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F680}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F692}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F9AF}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F9BC}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F9BD}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u2695\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u2696\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u2708\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F33E}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F373}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F37C}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F393}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F3A4}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F3A8}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F3EB}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F3ED}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F4BB}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F4BC}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F527}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F52C}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F680}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F692}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F9AF}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F9BC}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F9BD}'));
assertTrue(re.test('\u26F9\u{1F3FB}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u26F9\u{1F3FB}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u26F9\u{1F3FC}\u200D\u2640\uFE0F'));
......@@ -411,6 +578,18 @@ assertTrue(re.test('\u{1F46E}\u{1F3FF}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F46E}\u{1F3FF}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F46F}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F46F}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F470}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F470}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F470}\u{1F3FB}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F470}\u{1F3FB}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F470}\u{1F3FC}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F470}\u{1F3FC}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F470}\u{1F3FD}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F470}\u{1F3FD}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F470}\u{1F3FE}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F470}\u{1F3FE}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F470}\u{1F3FF}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F470}\u{1F3FF}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F471}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F471}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F471}\u{1F3FB}\u200D\u2640\uFE0F'));
......@@ -461,7 +640,7 @@ assertTrue(re.test('\u{1F481}\u{1F3FF}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F481}\u{1F3FF}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F482}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F482}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}'));
assertTrue(re.test('\u{1F482}\u{1F3FB}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F482}\u{1F3FB}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F482}\u{1F3FC}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F482}\u{1F3FC}\u200D\u2642\uFE0F'));
......@@ -639,6 +818,18 @@ assertTrue(re.test('\u{1F926}\u{1F3FE}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F926}\u{1F3FE}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F926}\u{1F3FF}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F926}\u{1F3FF}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F935}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F935}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F935}\u{1F3FB}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F935}\u{1F3FB}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F935}\u{1F3FC}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F935}\u{1F3FC}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F935}\u{1F3FD}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F935}\u{1F3FD}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F935}\u{1F3FE}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F935}\u{1F3FE}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F935}\u{1F3FF}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F935}\u{1F3FF}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F937}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F937}\u200D\u2642\uFE0F'));
assertTrue(re.test('\u{1F937}\u{1F3FB}\u200D\u2640\uFE0F'));
......@@ -909,7 +1100,35 @@ assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F9B0}'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F9B1}'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F9B2}'));
assertTrue(re.test('\u{1F469}\u{1F3FF}\u200D\u{1F9B3}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F9B0}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F9B1}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F9B2}'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F9B3}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F9B0}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F9B1}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F9B2}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FB}\u200D\u{1F9B3}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F9B0}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F9B1}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F9B2}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FC}\u200D\u{1F9B3}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F9B0}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F9B1}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F9B2}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FD}\u200D\u{1F9B3}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F9B0}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F9B1}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F9B2}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FE}\u200D\u{1F9B3}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F9B0}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F9B1}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F9B2}'));
assertTrue(re.test('\u{1F9D1}\u{1F3FF}\u200D\u{1F9B3}'));
assertTrue(re.test('\u{1F3F3}\uFE0F\u200D\u26A7\uFE0F'));
assertTrue(re.test('\u{1F3F3}\uFE0F\u200D\u{1F308}'));
assertTrue(re.test('\u{1F3F4}\u200D\u2620\uFE0F'));
assertTrue(re.test('\u{1F408}\u200D\u2B1B'));
assertTrue(re.test('\u{1F415}\u200D\u{1F9BA}'));
assertTrue(re.test('\u{1F482}\u{1F3FB}\u200D\u2640\uFE0F'));
assertTrue(re.test('\u{1F43B}\u200D\u2744\uFE0F'));
assertTrue(re.test('\u{1F441}\uFE0F\u200D\u{1F5E8}\uFE0F'));
assertTrue(re.test('\u{1F9D1}\u200D\u{1F384}'));
......@@ -5,84 +5,90 @@
// Flags: --harmony-regexp-sequence
// Normal usage.
assertDoesNotThrow("/\\p{Emoji_Flag_Sequence}/u");
assertTrue(/\p{Emoji_Flag_Sequence}/u.test("\u{1F1E9}\u{1F1EA}"));
assertDoesNotThrow("/\\p{Basic_Emoji}/u");
assertTrue(/\p{Basic_Emoji}/u.test("\u{1F6E2}\uFE0F"));
assertDoesNotThrow("/\\p{Emoji_Keycap_Sequence}/u");
assertTrue(/\p{Emoji_Keycap_Sequence}/u.test("\u0023\uFE0F\u20E3"));
assertDoesNotThrow("/\\p{RGI_Emoji}/u");
assertTrue(/\p{RGI_Emoji}/u.test("\u{1F1E9}\u{1F1EA}"));
assertTrue(/\p{RGI_Emoji}/u.test("\u0023\uFE0F\u20E3"));
assertDoesNotThrow("/\\p{Emoji_Keycap_Sequence}/u");
assertFalse(/\p{Emoji_Keycap_Sequence}/u.test("\u0022\uFE0F\u20E3"));
assertDoesNotThrow("/\\p{RGI_Emoji_Modifier_Sequence}/u");
assertTrue(/\p{RGI_Emoji_Modifier_Sequence}/u.test("\u26F9\u{1F3FF}"));
assertDoesNotThrow("/\\p{Emoji_Modifier_Sequence}/u");
assertTrue(/\p{Emoji_Modifier_Sequence}/u.test("\u26F9\u{1F3FF}"));
assertDoesNotThrow("/\\p{RGI_Emoji_ZWJ_Sequence}/u");
assertTrue(/\p{RGI_Emoji_ZWJ_Sequence}/u.test("\u{1F468}\u{200D}\u{1F467}"));
assertDoesNotThrow("/\\p{Emoji_ZWJ_Sequence}/u");
assertTrue(/\p{Emoji_ZWJ_Sequence}/u.test("\u{1F468}\u{200D}\u{1F467}"));
// Without unicode flag.
assertDoesNotThrow("/\\p{Emoji_Flag_Sequence}/");
assertFalse(/\p{Emoji_Flag_Sequence}/.test("\u{1F1E9}\u{1F1EA}"));
assertTrue(/\p{Emoji_Flag_Sequence}/.test("\\p{Emoji_Flag_Sequence}"));
// Without Unicode flag.
assertDoesNotThrow("/\\p{RGI_Emoji}/");
assertFalse(/\p{RGI_Emoji}/.test("\u{1F1E9}\u{1F1EA}"));
assertTrue(/\p{RGI_Emoji}/.test("\\p{RGI_Emoji}"));
// Negated and/or inside a character class.
assertThrows("/\\P{Emoji_Flag_Sequence}/u");
assertThrows("/\\P{Emoji_Keycap_Sequence}/u");
assertThrows("/\\P{Emoji_Modifier_Sequence}/u");
assertThrows("/\\P{Emoji_Tag_Sequence}/u");
assertThrows("/\\P{Emoji_ZWJ_Sequence}/u");
assertThrows("/[\\p{Emoji_Flag_Sequence}]/u");
assertThrows("/[\\p{Emoji_Keycap_Sequence}]/u");
assertThrows("/[\\p{Emoji_Modifier_Sequence}]/u");
assertThrows("/[\\p{Emoji_Tag_Sequence}]/u");
assertThrows("/[\\p{Emoji_ZWJ_Sequence}]/u");
assertThrows("/[\\P{Emoji_Flag_Sequence}]/u");
assertThrows("/[\\P{Emoji_Keycap_Sequence}]/u");
assertThrows("/[\\P{Emoji_Modifier_Sequence}]/u");
assertThrows("/[\\P{Emoji_Tag_Sequence}]/u");
assertThrows("/[\\P{Emoji_ZWJ_Sequence}]/u");
assertThrows("/[\\w\\p{Emoji_Flag_Sequence}]/u");
assertThrows("/[\\w\\p{Emoji_Keycap_Sequence}]/u");
assertThrows("/[\\w\\p{Emoji_Modifier_Sequence}]/u");
assertThrows("/[\\w\\p{Emoji_Tag_Sequence}]/u");
assertThrows("/[\\w\\p{Emoji_ZWJ_Sequence}]/u");
assertThrows("/[\\w\\P{Emoji_Flag_Sequence}]/u");
assertThrows("/[\\w\\P{Emoji_Keycap_Sequence}]/u");
assertThrows("/[\\w\\P{Emoji_Modifier_Sequence}]/u");
assertThrows("/[\\w\\P{Emoji_Tag_Sequence}]/u");
assertThrows("/[\\w\\P{Emoji_ZWJ_Sequence}]/u");
assertThrows("/\\P{Basic_Emoji}/u");
assertThrows("/\\P{RGI_Emoji_Modifier_Sequence}/u");
assertThrows("/\\P{RGI_Emoji_Tag_Sequence}/u");
assertThrows("/\\P{RGI_Emoji_ZWJ_Sequence}/u");
assertThrows("/\\P{RGI_Emoji}/u");
assertThrows("/[\\p{Basic_Emoji}]/u");
assertThrows("/[\\p{RGI_Emoji_Modifier_Sequence}]/u");
assertThrows("/[\\p{RGI_Emoji_Tag_Sequence}]/u");
assertThrows("/[\\p{RGI_Emoji_ZWJ_Sequence}]/u");
assertThrows("/[\\p{RGI_Emoji}]/u");
assertThrows("/[\\P{Basic_Emoji}]/u");
assertThrows("/[\\P{RGI_Emoji_Modifier_Sequence}]/u");
assertThrows("/[\\P{RGI_Emoji_Tag_Sequence}]/u");
assertThrows("/[\\P{RGI_Emoji_ZWJ_Sequence}]/u");
assertThrows("/[\\P{RGI_Emoji}]/u");
assertThrows("/[\\w\\p{Basic_Emoji}]/u");
assertThrows("/[\\w\\p{RGI_Emoji_Modifier_Sequence}]/u");
assertThrows("/[\\w\\p{RGI_Emoji_Tag_Sequence}]/u");
assertThrows("/[\\w\\p{RGI_Emoji_ZWJ_Sequence}]/u");
assertThrows("/[\\w\\p{RGI_Emoji}]/u");
assertThrows("/[\\w\\P{Basic_Emoji}]/u");
assertThrows("/[\\w\\P{RGI_Emoji_Modifier_Sequence}]/u");
assertThrows("/[\\w\\P{RGI_Emoji_Tag_Sequence}]/u");
assertThrows("/[\\w\\P{RGI_Emoji_ZWJ_Sequence}]/u");
assertThrows("/[\\w\\P{RGI_Emoji}]/u");
// Two regional indicators, but not a country.
assertFalse(/\p{Emoji_Flag_Sequence}/u.test("\u{1F1E6}\u{1F1E6}"));
assertFalse(/\p{RGI_Emoji}/u.test("\u{1F1E6}\u{1F1E6}"));
// ZWJ sequence as in two ZWJ elements joined by a ZWJ, but not in the list.
assertFalse(/\p{Emoji_ZWJ_Sequence}/u.test("\u{1F467}\u{200D}\u{1F468}"));
assertFalse(/\p{RGI_Emoji_ZWJ_Sequence}/u.test("\u{1F467}\u{200D}\u{1F468}"));
// Unsupported properties.
assertThrows("/\\p{Emoji_Flag_Sequence}/u");
assertThrows("/\\p{Emoji_Keycap_Sequence}/u");
assertThrows("/\\p{Emoji_Modifier_Sequence}/u");
assertThrows("/\\p{Emoji_Tag_Sequence}/u");
assertThrows("/\\p{Emoji_ZWJ_Sequence}/u");
// More complex regexp
// More complex regexp.
assertEquals(
["country flag: \u{1F1E6}\u{1F1F9}"],
/Country Flag: \p{Emoji_Flag_Sequence}/iu.exec(
/Country Flag: \p{RGI_Emoji}/iu.exec(
"this is an example of a country flag: \u{1F1E6}\u{1F1F9} is Austria"));
assertEquals(
["country flag: \u{1F1E6}\u{1F1F9}", "\u{1F1E6}\u{1F1F9}"],
/Country Flag: (\p{Emoji_Flag_Sequence})/iu.exec(
/Country Flag: (\p{RGI_Emoji})/iu.exec(
"this is an example of a country flag: \u{1F1E6}\u{1F1F9} is Austria"));
assertEquals(
["country flag: \u{1F1E6}\u{1F1F9}"],
/Country Flag: ..(?<=\p{Emoji_Flag_Sequence})/iu.exec(
/Country Flag: ..(?<=\p{RGI_Emoji})/iu.exec(
"this is an example of a country flag: \u{1F1E6}\u{1F1F9} is Austria"));
assertEquals(
["flag: \u{1F1E6}\u{1F1F9}", "\u{1F1E6}\u{1F1F9}"],
/Flag: ..(?<=(\p{Emoji_Flag_Sequence})|\p{Emoji_Keycap_Sequence})/iu.exec(
/Flag: ..(?<=(\p{RGI_Emoji})|\p{Basic_Emoji})/iu.exec(
"this is an example of a country flag: \u{1F1E6}\u{1F1F9} is Austria"));
// Partial sequences.
assertFalse(/\p{Emoji_Flag_Sequence}/u.test("\u{1F1E6}_"));
assertFalse(/\p{Emoji_Keycap_Sequence}/u.test("2\uFE0F_"));
assertFalse(/\p{Emoji_Modifier_Sequence}/u.test("\u261D_"));
assertFalse(/\p{Emoji_Tag_Sequence}/u.test("\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}_"));
assertFalse(/\p{Emoji_ZWJ_Sequence}/u.test("\u{1F468}\u200D\u2764\uFE0F\u200D_"));
assertFalse(/\p{Basic_Emoji}/u.test("\u{1F6E2}_"));
assertFalse(/\p{RGI_Emoji_Modifier_Sequence}/u.test("\u261D_"));
assertFalse(/\p{RGI_Emoji_Tag_Sequence}/u.test("\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}_"));
assertFalse(/\p{RGI_Emoji_ZWJ_Sequence}/u.test("\u{1F468}\u200D\u2764\uFE0F\u200D_"));
assertFalse(/\p{RGI_Emoji}/u.test("\u{1F1E6}_"));
assertFalse(/\p{RGI_Emoji}/u.test("2\uFE0F_"));
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment