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|')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('|a|b\n|-|-\n|1|2')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('|a|\n|-|\n|1|')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('|a\n|-\n|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|')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('|h|\n|-:|\n|b|')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('|h|\n|:-:|\n|b|')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('|h|h|\n|:-|-|\n|b|b|')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('|h|h|\n|:-|:-|\n|b|b|')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('|h|h|\n|:-|:-:|\n|b|b|')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('|h|h|\n|:-|-:|\n|b|b|')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('|h|h|h|\n|:-:|:-|-:|\n|b|b|b|')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('|h|h|\n|:-|\n|b|b|')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('|h|h|\n|:-|-|\n|b|b|')), [[''], '']);
});
it('trim', () => {
assert.deepStrictEqual(inspect(parser, input('| h \n|- \n| b ')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('| h | \n|- \n| b | ')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('|\\ h \\\n|- \n|\\ b \\')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('|\\ h \\ \n|- \n|\\ b \\ | ')), [[''], '']);
});
});
});