|
1 | 1 | 'use strict';
|
2 | 2 |
|
3 |
| -test('Parsimmon()', function() { |
4 |
| - var good = 'just a Q'; |
5 |
| - var bad = 'all I wanted was a Q'; |
6 |
| - var justQ = Parsimmon(function(str, i) { |
7 |
| - if (str.charAt(i) === 'Q') { |
8 |
| - return Parsimmon.makeSuccess(i + 1, good); |
9 |
| - } else { |
10 |
| - return Parsimmon.makeFailure(i, bad); |
11 |
| - } |
12 |
| - }); |
13 |
| - var result1 = justQ.parse('Q'); |
14 |
| - var result2 = justQ.parse('x'); |
15 |
| - assert.deepEqual(result1, { |
16 |
| - status: true, |
17 |
| - value: good, |
| 3 | +suite('Parsimmon()', function() { |
| 4 | + |
| 5 | + test('should work in general', function() { |
| 6 | + var good = 'just a Q'; |
| 7 | + var bad = 'all I wanted was a Q'; |
| 8 | + var justQ = Parsimmon(function(str, i) { |
| 9 | + if (str.charAt(i) === 'Q') { |
| 10 | + return Parsimmon.makeSuccess(i + 1, good); |
| 11 | + } else { |
| 12 | + return Parsimmon.makeFailure(i, bad); |
| 13 | + } |
| 14 | + }); |
| 15 | + var result1 = justQ.parse('Q'); |
| 16 | + var result2 = justQ.parse('x'); |
| 17 | + assert.deepEqual(result1, { |
| 18 | + status: true, |
| 19 | + value: good, |
| 20 | + }); |
| 21 | + assert.deepEqual(result2, { |
| 22 | + status: false, |
| 23 | + index: { |
| 24 | + offset: 0, |
| 25 | + line: 1, |
| 26 | + column: 1 |
| 27 | + }, |
| 28 | + expected: [bad] |
| 29 | + }); |
18 | 30 | });
|
19 |
| - assert.deepEqual(result2, { |
20 |
| - status: false, |
21 |
| - index: { |
22 |
| - offset: 0, |
23 |
| - line: 1, |
24 |
| - column: 1 |
25 |
| - }, |
26 |
| - expected: [bad] |
| 31 | + |
| 32 | + test('unsafeUnion works on poorly formatted custom parser', function() { |
| 33 | + var p1 = Parsimmon.string('a').or(Parsimmon.string('b')); |
| 34 | + var p2 = Parsimmon(function(str, i) { |
| 35 | + return { |
| 36 | + status: false, |
| 37 | + index: -1, |
| 38 | + value: null, |
| 39 | + furthest: i, |
| 40 | + expected: [] |
| 41 | + }; |
| 42 | + }); |
| 43 | + var p3 = Parsimmon.alt(p2, p1); |
| 44 | + var result = p3.parse('x'); |
| 45 | + assert.deepStrictEqual(result.expected, ['\'a\'', '\'b\'']); |
27 | 46 | });
|
| 47 | + |
28 | 48 | });
|
0 commit comments