| 19 | function test<T>(parse: (value: string, lastIndex?: number) => T, value: string, expected: T); |
| 20 | function test<T>(parse: (value: string, lastIndex?: number) => T, value: string, lastIndex: number, expected: T); |
| 21 | function test<T>(parse: (value: string, lastIndex?: number) => T, value: string, lastIndexOrExpected: number | T, expected?: T) { |
| 22 | if (arguments.length === 3) { |
| 23 | it(`${lastIndexOrExpected ? 'can parse ' : 'can not parse '}"${value}"`, () => { |
| 24 | const result = parse(value); |
| 25 | expect(result).toStrictEqual(lastIndexOrExpected); |
| 26 | }); |
| 27 | } else { |
| 28 | it(`${expected ? 'can parse ' : 'can not parse '}"${value}" starting at index ${lastIndexOrExpected}`, () => { |
| 29 | const result = parse(value, <number>lastIndexOrExpected); |
| 30 | expect(result).toStrictEqual(expected); |
| 31 | }); |
| 32 | } |
| 33 | } |
| 34 | |
| 35 | describe('values', () => { |
| 36 | describe('url', () => { |