mirror of https://github.com/tc39/test262.git
56 lines
1.8 KiB
JavaScript
56 lines
1.8 KiB
JavaScript
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
|
|
/*---
|
|
description: Literal astral symbols within a pattern
|
|
es6id: 21.2.2.8.2
|
|
info: |
|
|
21.2.2.2 Pattern
|
|
|
|
The production Pattern :: Disjunction evaluates as follows:
|
|
|
|
1. Evaluate Disjunction to obtain a Matcher m.
|
|
2. Return an internal closure that takes two arguments, a String str
|
|
and an integer index, and performs the following steps:
|
|
1. If Unicode is true, let Input be a List consisting of the
|
|
sequence of code points of str interpreted as a UTF-16 encoded
|
|
(6.1.4) Unicode string. Otherwise, let Input be a List consisting
|
|
of the sequence of code units that are the elements of str. Input
|
|
will be used throughout the algorithms in 21.2.2. Each element of
|
|
Input is considered to be a character.
|
|
---*/
|
|
|
|
assert(/𝌆{2}/u.test('𝌆𝌆'), 'quantifier application');
|
|
|
|
assert(/^[𝌆]$/u.test('𝌆'), 'as a ClassAtom');
|
|
|
|
var rangeRe = /[💩-💫]/u;
|
|
assert.sameValue(
|
|
rangeRe.test('\ud83d\udca8'),
|
|
false,
|
|
'ClassAtom as lower range boundary, input below (U+1F4A8)'
|
|
);
|
|
assert.sameValue(
|
|
rangeRe.test('\ud83d\udca9'),
|
|
true,
|
|
'ClassAtom as lower range boundary, input match (U+1F4A9)'
|
|
);
|
|
assert.sameValue(
|
|
rangeRe.test('\ud83d\udcaa'),
|
|
true,
|
|
'ClassAtom as upper- and lower-range boundary, input within (U+1F4AA)'
|
|
);
|
|
assert.sameValue(
|
|
rangeRe.test('\ud83d\udcab'),
|
|
true,
|
|
'ClassAtom as upper range boundary, input match (U+1F4AB)'
|
|
);
|
|
assert.sameValue(
|
|
rangeRe.test('\ud83d\udcac'),
|
|
false,
|
|
'ClassAtom as upper range boundary, input above (U+1F4AC)'
|
|
);
|
|
|
|
assert(/[^𝌆]/u.test('\ud834'), 'Negated character classes (LeadSurrogate)');
|
|
assert(/[^𝌆]/u.test('\udf06'), 'Negated character classes (TrailSurrogate)');
|