import { ulist } from './ulist'; import { some } from '../../combinator'; import { input } from '../context'; import { inspect } from '../../debug.test'; describe('Unit: parser/block/ulist', () => { describe('ulist', () => { const parser = some(ulist); 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('-0')), undefined); assert.deepStrictEqual(inspect(parser, input('-a')), undefined); assert.deepStrictEqual(inspect(parser, input('-[]')), undefined); assert.deepStrictEqual(inspect(parser, input('-[ ]')), undefined); assert.deepStrictEqual(inspect(parser, input('-[x]')), undefined); assert.deepStrictEqual(inspect(parser, input('-\n')), undefined); assert.deepStrictEqual(inspect(parser, input('-\n- a')), undefined); assert.deepStrictEqual(inspect(parser, input(' - ')), undefined); assert.deepStrictEqual(inspect(parser, input('+')), undefined); assert.deepStrictEqual(inspect(parser, input('*')), undefined); }); it('single', () => { // pending assert.deepStrictEqual(inspect(parser, input('- ')), [[''], '']); // filled assert.deepStrictEqual(inspect(parser, input('- \\')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- \\\n')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- -')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- -\n')), [[''], '']); }); it('multiple', () => { // pending assert.deepStrictEqual(inspect(parser, input('- \n-')), [[''], '']); // filled assert.deepStrictEqual(inspect(parser, input('- 1\n- 2')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- 1\n- 2\n- 3')), [[''], '']); // invalid assert.deepStrictEqual(inspect(parser, input('- \n+')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- \n0')), [[''], '']); }); it('nest', () => { assert.deepStrictEqual(inspect(parser, input('- \n -')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- 1\n - 2')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- 1\n - 2\n- 3')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- 1\n - 2\n - 3')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- 1\n - 2\n - 3')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- 1\n - 2\n - 3')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- \n -\n +\n -\n +\n+')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- 1\n + 2')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- 1\n 0')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- 1\n 0.')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- 1\n 0. ')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- 1\n 0. 2')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- a [#b]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- http://host\\')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- !http://host')), [[''], '']); }); it('checkbox', () => { assert.deepStrictEqual(inspect(parser, input('- [ ]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- [x]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- [X]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- [X] 1')), [[''], '']); }); it('indexer', () => { assert.deepStrictEqual(inspect(parser, input('- [|a]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- a [|]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- a [|b]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- - [|b]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- [ ] [|a]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- [ ] a [|b]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- a [|]\n - c [|d]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('- a [|b]\n - c [|d]')), [[''], '']); }); }); });