|
1 | 1 | import { parseString, WhitespaceHandling } from './wordList'; |
2 | 2 |
|
3 | | -interface TestCase { |
4 | | - delimiter: string; |
5 | | - inputString: string; |
6 | | -} |
7 | | - |
8 | 3 | const { Preserve, TrimLeadingAndTrailing } = WhitespaceHandling; |
9 | 4 |
|
10 | 5 | describe('parseString', () => { |
11 | | - it('returns an empty array when input string is empty', () => { |
12 | | - function testInput(input: string): void { |
13 | | - const wordList = parseString(input, ',', Preserve); |
| 6 | + it.each(['', null, undefined])( |
| 7 | + 'returns an empty array when input string is %p', |
| 8 | + input => { |
| 9 | + const wordList = parseString(input as string, ',', Preserve); |
14 | 10 | expect(wordList).toEqual([]); |
15 | 11 | } |
| 12 | + ); |
16 | 13 |
|
17 | | - ['', null, undefined].forEach(val => testInput(val as string)); |
18 | | - }); |
19 | | - |
20 | | - it('returns entire input string in array when delimiter is empty', () => { |
21 | | - function testDelimiter(delimiter: string): void { |
| 14 | + it.each(['', null, undefined])( |
| 15 | + 'returns entire input string in array when delimiter is %p', |
| 16 | + testDelimiter => { |
| 17 | + const delimiter = testDelimiter as string; |
22 | 18 | const wordList = parseString(' some input string ', delimiter, Preserve); |
23 | 19 | expect(wordList).toEqual([' some input string ']); |
24 | 20 | } |
| 21 | + ); |
25 | 22 |
|
26 | | - ['', null, undefined].forEach(val => testDelimiter(val as string)); |
27 | | - }); |
28 | | - |
29 | | - it('returns entire input string in array when delimiter is not present in input string', () => { |
30 | | - function testDelimiter(delimiter: string): void { |
| 23 | + it.each([',', '\n', '\t'])( |
| 24 | + 'returns entire input string in array when delimiter %p is not present in input string', |
| 25 | + delimiter => { |
31 | 26 | const wordList = parseString(' some input string ', delimiter, Preserve); |
32 | 27 | expect(wordList).toEqual([' some input string ']); |
33 | 28 | } |
34 | | - |
35 | | - [',', '\n', '\t'].forEach(testDelimiter); |
36 | | - }); |
37 | | - |
38 | | - it('splits input string by delimiter', () => { |
39 | | - const expectedResult = ['foo', 'Bar', ' b@z ']; |
40 | | - const testCases: TestCase[] = [ |
41 | | - { delimiter: ',', inputString: 'foo,Bar, b@z ' }, |
42 | | - { delimiter: '\t', inputString: 'foo Bar b@z ' }, |
43 | | - { delimiter: 'aaa', inputString: 'fooaaaBaraaa b@z ' }, |
44 | | - ]; |
45 | | - |
46 | | - function testSplit({ delimiter, inputString }: TestCase): void { |
47 | | - const wordList = parseString(inputString, delimiter, Preserve); |
48 | | - expect(wordList).toEqual(expectedResult); |
49 | | - } |
50 | | - |
51 | | - testCases.forEach(testSplit); |
| 29 | + ); |
| 30 | + |
| 31 | + it.each([ |
| 32 | + ['foo,Bar, b@z ', ','], |
| 33 | + ['foo Bar b@z ', '\t'], |
| 34 | + ['fooaaaBaraaa b@z ', 'aaa'], |
| 35 | + ])('splits input string %p by delimiter %p', (inputString, delimiter) => { |
| 36 | + const wordList = parseString(inputString, delimiter, Preserve); |
| 37 | + expect(wordList).toEqual(['foo', 'Bar', ' b@z ']); |
52 | 38 | }); |
53 | 39 |
|
54 | | - it('splits input string by whitespace delimiter', () => { |
55 | | - const expectedResult = ['foo', 'Bar', 'b@z', '']; |
56 | | - const testCases: TestCase[] = [ |
57 | | - { delimiter: ' ', inputString: 'foo Bar b@z ' }, |
58 | | - { delimiter: ' ', inputString: 'foo Bar b@z ' }, |
59 | | - ]; |
60 | | - |
61 | | - function testSplit({ delimiter, inputString }: TestCase): void { |
62 | | - const wordList = parseString(inputString, delimiter, Preserve); |
63 | | - expect(wordList).toEqual(expectedResult); |
64 | | - } |
65 | | - |
66 | | - testCases.forEach(testSplit); |
| 40 | + it.each([ |
| 41 | + ['foo Bar b@z ', ' '], |
| 42 | + ['foo Bar b@z ', ' '], |
| 43 | + ])('splits input string %p by delimiter %p', (inputString, delimiter) => { |
| 44 | + const wordList = parseString(inputString, delimiter, Preserve); |
| 45 | + expect(wordList).toEqual(['foo', 'Bar', 'b@z', '']); |
67 | 46 | }); |
68 | 47 |
|
69 | 48 | it('splits multiline input string by newline delimiter', () => { |
|
0 commit comments