-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathcompiler.test.tsx
30 lines (22 loc) · 1.14 KB
/
compiler.test.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import { buildPattern, buildRegex } from '../compiler';
import { oneOrMore, optionally, one, zeroOrMore } from '../quantifiers/base';
import { repeat } from '../quantifiers/repeat';
test('basic quantifies', () => {
expect(buildPattern('a')).toEqual('a');
expect(buildPattern('a', 'b')).toEqual('ab');
expect(buildPattern(oneOrMore('a'))).toEqual('a+');
expect(buildPattern(optionally('a'))).toEqual('a?');
expect(buildPattern('a', oneOrMore('b'))).toEqual('ab+');
expect(buildPattern('a', oneOrMore('bc'))).toEqual('a(?:bc)+');
expect(buildPattern('a', oneOrMore('bc'))).toEqual('a(?:bc)+');
expect(buildPattern('a', repeat({ min: 1, max: 5 }, 'b'))).toEqual('ab{1,5}');
expect(buildPattern('a', zeroOrMore('b'))).toEqual('ab*');
expect(buildPattern('a', zeroOrMore('bc'))).toEqual('a(?:bc)*');
expect(buildPattern('a', zeroOrMore('bc'))).toEqual('a(?:bc)*');
expect(buildPattern(optionally('a'), 'b')).toEqual('a?b');
expect(buildPattern(optionally('a'), 'b', one('d'))).toEqual('a?bd');
});
test('regex constructor', () => {
expect(buildRegex('a').test('a')).toBeTruthy();
expect(buildRegex('a').test('b')).toBeFalsy();
});