Skip to content

Commit

Permalink
inline regexpu-fixtures (#84)
Browse files Browse the repository at this point in the history
* inline regexpu-fixtures

* extract fixtures to new modules
  • Loading branch information
JLHwung committed Sep 21, 2023
1 parent cb15913 commit fa70523
Show file tree
Hide file tree
Showing 9 changed files with 1,479 additions and 1,168 deletions.
1 change: 0 additions & 1 deletion package.json
Expand Up @@ -58,7 +58,6 @@
},
"devDependencies": {
"jsesc": "^3.0.2",
"regexpu-fixtures": "^2.1.6",
"@unicode/unicode-15.1.0": "^1.5.2"
}
}
94 changes: 94 additions & 0 deletions tests/fixtures/character-class.js
@@ -0,0 +1,94 @@
const characterClassFixtures = [
{
pattern: '[^K]', // LATIN CAPITAL LETTER K
flags: 'iu',
expected: '(?:(?![K\\u212A\\uD800-\\uDFFF])[\\s\\S]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])',
options: { unicodeFlag: 'transform' }
},
{
pattern: '[^k]', // LATIN SMALL LETTER K
flags: 'iu',
expected: '(?:(?![k\\u212A\\uD800-\\uDFFF])[\\s\\S]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])',
options: { unicodeFlag: 'transform' }
},
{
pattern: '[^\u212a]', // KELVIN SIGN
flags: 'iu',
expected: '(?:(?![K\\u212A\\uD800-\\uDFFF])[\\s\\S]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])',
options: { unicodeFlag: 'transform' }
},
{
pattern: '[^K]', // LATIN CAPITAL LETTER K
flags: 'iu',
expected: '[^K]',
options: {}
},
{
pattern: '[^k]', // LATIN SMALL LETTER K
flags: 'iu',
expected: '[^k]',
options: {}
},
{
pattern: '[^\u212a]', // KELVIN SIGN
flags: 'iu',
expected: '[^\u212a]',
options: {}
},
{
pattern: '[^\u{1D50E}]', // MATHEMATICAL FRAKTUR CAPITAL K
flags: 'iu',
expected: '(?:(?![\\uD800-\\uDFFF])[\\s\\S]|[\\uD800-\\uD834\\uD836-\\uDBFF][\\uDC00-\\uDFFF]|\\uD835[\\uDC00-\\uDD0D\\uDD0F-\\uDFFF])',
options: { unicodeFlag: 'transform' }
},
{
pattern: '[^K]', // LATIN CAPITAL LETTER K
flags: 'u',
expected: '(?:[\\0-JL-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])',
options: { unicodeFlag: 'transform' }
},
{
pattern: '[^k]', // LATIN SMALL LETTER K
flags: 'u',
expected: '(?:[\\0-jl-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])',
options: { unicodeFlag: 'transform' }
},
{
pattern: '[^\u212a]', // KELVIN SIGN
flags: 'u',
expected: '(?:[\\0-\\u2129\\u212B-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])',
options: { unicodeFlag: 'transform' }
},
{
pattern: '[^\u{1D50E}]', // MATHEMATICAL FRAKTUR CAPITAL K
flags: 'u',
expected: '(?:[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uD834\\uD836-\\uDBFF][\\uDC00-\\uDFFF]|\\uD835[\\uDC00-\\uDD0D\\uDD0F-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])',
options: { unicodeFlag: 'transform' }
},
{
pattern: '[^K]', // LATIN CAPITAL LETTER K
flags: 'u',
expected: '[^K]',
options: {}
},
{
pattern: '[^k]', // LATIN SMALL LETTER K
flags: 'u',
expected: '[^k]',
options: {}
},
{
pattern: '[^\u212a]', // KELVIN SIGN
flags: 'u',
expected: '[^\u212a]',
options: {}
},
{
pattern: '[^\u{1D50E}]', // MATHEMATICAL FRAKTUR CAPITAL K
flags: 'u',
expected: '[^\u{1D50E}]',
options: {}
}
];

exports.characterClassFixtures = characterClassFixtures;
43 changes: 43 additions & 0 deletions tests/fixtures/dot-all-flag.js
@@ -0,0 +1,43 @@
const regenerate = require('regenerate');

const UNICODE_SET = regenerate().addRange(0x0, 0x10FFFF);
const UNICODE_PATTERN = UNICODE_SET.toString();

const dotAllFlagFixtures = [
{
'pattern': '.',
'flags': 's',
'expected': '[\\s\\S]'
},
{
'pattern': '.',
'flags': 'gimsy',
'expected': '[\\s\\S]'
},
{
'pattern': '.',
'flags': 's',
'expected': '[\\s\\S]',
options: { unicodeFlag: 'transform' }
},
{
'pattern': '.',
'flags': 'gimsy',
'expected': '[\\s\\S]',
options: { unicodeFlag: 'transform' }
},
{
'pattern': '.',
'flags': 'su',
'expected': UNICODE_PATTERN,
options: { unicodeFlag: 'transform' }
},
{
'pattern': '.',
'flags': 'gimsuy',
'expected': UNICODE_PATTERN,
options: { unicodeFlag: 'transform' }
}
];

exports.dotAllFlagFixtures = dotAllFlagFixtures;
121 changes: 121 additions & 0 deletions tests/fixtures/modifiers.js
@@ -0,0 +1,121 @@
const modifiersFixtures = [
// +i
{
'pattern': '(?i:a)',
'expected': '(?:[Aa])',
},
{
'pattern': '(?i:[a-z])',
'expected': '(?:[A-Za-z])',
},
{
'pattern': '(?i:[a-z])',
'flags': 'u',
'options': { unicodeFlag: 'transform', modifiers: 'transform' },
'expected': '(?:[A-Za-z\\u017F\\u212A])',
'expectedFlags': '',
},
{
'pattern': '(?i:[\\q{ab|cd|abc}--\\q{abc}--\\q{cd}])',
'flags': 'v',
'options': { unicodeSetsFlag: 'transform', modifiers: 'transform' },
'expected': '(?:(?:[Aa][Bb]))',
'expectedFlags': 'u',
},
{
'pattern': '(?i:[\\q{ab|cd|abc}--\\q{abc}--\\q{cd}])',
'flags': 'v',
'options': { unicodeSetsFlag: 'transform', modifiers: 'parse' },
'expected': '(?i:(?:ab))',
'expectedFlags': 'u',
}, {
'pattern': '(?i:[\\q{ab|cd|abc}--\\q{abc}--\\q{cd}])',
'flags': 'v',
'options': { unicodeSetsFlag: 'transform', unicodeFlag: 'transform', modifiers: 'transform' },
'expected': '(?:(?:[Aa][Bb]))',
'expectedFlags': '',
},
// +m
{
'pattern': '(?m:^[a-z])',
'expected': '(?:(?:^|(?<=[\\n\\r\\u2028\\u2029]))[a-z])',
},
{
'pattern': '(?m:[a-z]$)',
'expected': '(?:[a-z](?:$|(?=[\\n\\r\\u2028\\u2029])))',
},
// +s
{
'pattern': '(?s:.)',
'expected': '(?:[\\s\\S])',
},
// -i
{
'pattern': '(?-i:a)(a)',
'flags': 'i',
'expected': '(?:a)([Aa])',
'expectedFlags': '',
},
{
'pattern': '(?-i:[a-z])([a-z])',
'flags': 'i',
'expected': '(?:[a-z])([A-Za-z])',
'expectedFlags': '',
},
{
'pattern': '(?-i:[a-z])([a-z])',
'flags': 'iu',
'options': { unicodeFlag: 'transform', modifiers: 'transform' },
'expected': '(?:[a-z])([A-Za-z\\u017F\\u212A])',
'expectedFlags': '',
},
{
'pattern': '(?-i:[\\q{ab|cd|abc}--\\q{abc}--\\q{cd}])',
'flags': 'iv',
'options': { unicodeSetsFlag: 'transform', modifiers: 'transform' },
'expected': '(?:(?:ab))',
'expectedFlags': 'u',
},
{
'pattern': '(?-i:[\\q{ab|cd|abc}--\\q{abc}--\\q{cd}])',
'flags': 'iv',
'options': { unicodeSetsFlag: 'transform', modifiers: 'parse' },
'expected': '(?-i:(?:ab))',
'expectedFlags': 'iu',
}, {
'pattern': '(?-i:[\\q{ab|cd|abc}--\\q{abc}--\\q{cd}])',
'flags': 'iv',
'options': { unicodeSetsFlag: 'transform', unicodeFlag: 'transform', modifiers: 'transform' },
'expected': '(?:(?:ab))',
'expectedFlags': '',
},
// -m
{
'pattern': '(?-m:^[a-z])(^[a-z])',
'flags': 'm',
'expected': '(?:^[a-z])((?:^|(?<=[\\n\\r\\u2028\\u2029]))[a-z])',
'expectedFlags': '',
},
{
'pattern': '(?-m:[a-z]$)([a-z]$)',
'flags': 'm',
'expected': '(?:[a-z]$)([a-z](?:$|(?=[\\n\\r\\u2028\\u2029])))',
'expectedFlags': '',
},
// +ims
{
'pattern': '(?ims:^[a-z])',
'flags': '',
'expected': '(?:(?:^|(?<=[\\n\\r\\u2028\\u2029]))[A-Za-z])',
'expectedFlags': '',
},
// -ims
{
'pattern': '(?-ims:^[a-z].)(^[a-z].)',
'flags': 'ims',
'expected': '(?:^[a-z].)((?:^|(?<=[\\n\\r\\u2028\\u2029]))[A-Za-z][\\s\\S])',
'expectedFlags': '',
},
];

exports.modifiersFixtures = modifiersFixtures;
75 changes: 75 additions & 0 deletions tests/fixtures/named-group.js
@@ -0,0 +1,75 @@
const namedGroupFixtures = [
{
'pattern': '(?<name>)\\k<name>',
'flags': '',
'expected': '()\\1',
'expectedGroups': [
['name', 1]
]
},
{
'pattern': '(?<name1>)(?<name2>)\\k<name1>\\k<name2>',
'flags': '',
'expected': '()()\\1\\2',
'expectedGroups': [
['name1', 1],
['name2', 2]
]
},
{
'pattern': '()(?<name>)\\k<name>',
'flags': '',
'expected': '()()\\2',
'expectedGroups': [
['name', 2]
]
},
{
'pattern': '(?<name>)()\\1',
'flags': '',
'expected': '()()\\1'
},
{
'pattern': '\\k<name>\\k<name>(?<name>)\\k<name>',
'flags': '',
'expected': '(?:)(?:)()\\1'
},
{
'pattern': '(?<name>\\k<name>)',
'flags': '',
'expected': '(\\1)'
},
{
'pattern': '(?<$𐒤>a)b\\k<$𐒤>',
'flags': '',
'expected': '(a)b\\1'
},
{
'pattern': '(?<=a)(?<!b)(?=c)(?!d)(?:e)(?<name>f)\\k<name>',
'flags': '',
'expected': '(?<=a)(?<!b)(?=c)(?!d)(?:e)(f)\\1',
'expectedGroups': [
['name', 1]
]
},
{
'pattern': '(?:(?<a>x)|(?<a>y))\\k<a>',
'flags': '',
'expected': '(?:(x)|(y))\\1\\2',
'expectedGroups': [
['a', 1],
['a', 2]
]
},
{
'pattern': '(?:(?<a>x)\\k<a>|(?<a>y)\\k<a>)',
'flags': '',
'expected': '(?:(x)\\1|(y)\\1\\2)',
'expectedGroups': [
['a', 1],
['a', 2]
]
}
];

exports.namedGroupFixtures = namedGroupFixtures;

0 comments on commit fa70523

Please sign in to comment.