import { table } from './table'; import { some } from '../../combinator'; import { input } from '../context'; import { inspect } from '../../debug.test'; describe('Unit: parser/block/table', () => { describe('table', () => { const parser = some(table); it('invalid', () => { assert.deepStrictEqual(inspect(parser, input('')), undefined); assert.deepStrictEqual(inspect(parser, input('\n')), undefined); assert.deepStrictEqual(inspect(parser, input('|')), undefined); assert.deepStrictEqual(inspect(parser, input('||')), undefined); assert.deepStrictEqual(inspect(parser, input('|||')), undefined); assert.deepStrictEqual(inspect(parser, input('|\n|')), undefined); assert.deepStrictEqual(inspect(parser, input('|\n|\n|')), undefined); assert.deepStrictEqual(inspect(parser, input('|h')), undefined); assert.deepStrictEqual(inspect(parser, input('|h')), undefined); assert.deepStrictEqual(inspect(parser, input('|h\n')), undefined); assert.deepStrictEqual(inspect(parser, input('|h\n|')), undefined); assert.deepStrictEqual(inspect(parser, input('|h\n|b')), undefined); assert.deepStrictEqual(inspect(parser, input('|h\n|-\nb')), undefined); assert.deepStrictEqual(inspect(parser, input('|h\n|-\n |b')), undefined); assert.deepStrictEqual(inspect(parser, input('|h\n |-\n|b')), undefined); assert.deepStrictEqual(inspect(parser, input(' |h\n|-\n|b')), undefined); }); it('valid', () => { assert.deepStrictEqual(inspect(parser, input('|\n|-\n|')), [['
'], '']); assert.deepStrictEqual(inspect(parser, input('||\n|-|\n||')), [['
'], '']); assert.deepStrictEqual(inspect(parser, input('|||\n|-|-|\n|||')), [['
'], '']); assert.deepStrictEqual(inspect(parser, input('|"|\n|-\n|')), [['
"
'], '']); assert.deepStrictEqual(inspect(parser, input('|`|`|\n|-\n|')), [['
|
'], '']); assert.deepStrictEqual(inspect(parser, input('|((|\n|-\n|')), [['
((
'], '']); assert.deepStrictEqual(inspect(parser, input('|a|b|\n|-|-|\n|1|2|')), [['
ab
12
'], '']); assert.deepStrictEqual(inspect(parser, input('|a|b\n|-|-\n|1|2')), [['
ab
12
'], '']); assert.deepStrictEqual(inspect(parser, input('|a|\n|-|\n|1|')), [['
a
1
'], '']); assert.deepStrictEqual(inspect(parser, input('|a\n|-\n|1')), [['
a
1
'], '']); assert.deepStrictEqual(inspect(parser, input('||\n|-\n||')), [['
'], '']); assert.deepStrictEqual(inspect(parser, input('||\n|-\n||\\')), [['
'], '']); assert.deepStrictEqual(inspect(parser, input('||\n|-\n||\\ ')), [['
'], '']); assert.deepStrictEqual(inspect(parser, input('||\n|-\n||\\\n')), [['
'], '']); assert.deepStrictEqual(inspect(parser, input('||\n|-\n||\\\n||')), [['
'], '']); assert.deepStrictEqual(inspect(parser, input('|| \n|- \n|| ')), [['
'], '']); assert.deepStrictEqual(inspect(parser, input('|| \n|-| \n|| ')), [['
'], '']); }); it('align', () => { assert.deepStrictEqual(inspect(parser, input('|h|\n|:-|\n|b|')), [['
h
b
'], '']); assert.deepStrictEqual(inspect(parser, input('|h|\n|-:|\n|b|')), [['
h
b
'], '']); assert.deepStrictEqual(inspect(parser, input('|h|\n|:-:|\n|b|')), [['
h
b
'], '']); assert.deepStrictEqual(inspect(parser, input('|h|h|\n|:-|-|\n|b|b|')), [['
hh
bb
'], '']); assert.deepStrictEqual(inspect(parser, input('|h|h|\n|:-|:-|\n|b|b|')), [['
hh
bb
'], '']); assert.deepStrictEqual(inspect(parser, input('|h|h|\n|:-|:-:|\n|b|b|')), [['
hh
bb
'], '']); assert.deepStrictEqual(inspect(parser, input('|h|h|\n|:-|-:|\n|b|b|')), [['
hh
bb
'], '']); assert.deepStrictEqual(inspect(parser, input('|h|h|h|\n|:-:|:-|-:|\n|b|b|b|')), [['
hhh
bbb
'], '']); assert.deepStrictEqual(inspect(parser, input('|h|h|\n|:-|\n|b|b|')), [['
hh
bb
'], '']); assert.deepStrictEqual(inspect(parser, input('|h|h|\n|:-|-|\n|b|b|')), [['
hh
bb
'], '']); }); it('trim', () => { assert.deepStrictEqual(inspect(parser, input('| h \n|- \n| b ')), [['
h
b
'], '']); assert.deepStrictEqual(inspect(parser, input('| h | \n|- \n| b | ')), [['
h
b
'], '']); assert.deepStrictEqual(inspect(parser, input('|\\ h \\\n|- \n|\\ b \\')), [['
h
b
'], '']); assert.deepStrictEqual(inspect(parser, input('|\\ h \\ \n|- \n|\\ b \\ | ')), [['
h
b
'], '']); }); }); });