import { olist } from './olist';
import { some } from '../../combinator';
import { input } from '../context';
import { inspect } from '../../debug.test';
describe('Unit: parser/block/olist', () => {
describe('olist', () => {
const parser = some(olist);
it('invalid', () => {
assert.deepStrictEqual(inspect(parser, input('')), undefined);
assert.deepStrictEqual(inspect(parser, input('\n')), undefined);
assert.deepStrictEqual(inspect(parser, input('1a. ')), undefined);
assert.deepStrictEqual(inspect(parser, input('a1. ')), undefined);
assert.deepStrictEqual(inspect(parser, input('aZ. ')), undefined);
assert.deepStrictEqual(inspect(parser, input('Az. ')), undefined);
assert.deepStrictEqual(inspect(parser, input('1')), undefined);
assert.deepStrictEqual(inspect(parser, input('1 ')), undefined);
assert.deepStrictEqual(inspect(parser, input('1\n')), undefined);
assert.deepStrictEqual(inspect(parser, input('1.')), undefined);
assert.deepStrictEqual(inspect(parser, input('1.a')), undefined);
assert.deepStrictEqual(inspect(parser, input('1')), undefined);
assert.deepStrictEqual(inspect(parser, input('1 ')), undefined);
assert.deepStrictEqual(inspect(parser, input('1\n')), undefined);
assert.deepStrictEqual(inspect(parser, input('1.')), undefined);
assert.deepStrictEqual(inspect(parser, input('1.1')), undefined);
assert.deepStrictEqual(inspect(parser, input('1.1.')), undefined);
assert.deepStrictEqual(inspect(parser, input('1.a')), undefined);
assert.deepStrictEqual(inspect(parser, input('1.\n')), undefined);
assert.deepStrictEqual(inspect(parser, input('1.\n1. a')), undefined);
assert.deepStrictEqual(inspect(parser, input('(1)')), undefined);
assert.deepStrictEqual(inspect(parser, input('(1)\n')), undefined);
assert.deepStrictEqual(inspect(parser, input('(1)\n(1) a')), undefined);
assert.deepStrictEqual(inspect(parser, input('I. ')), undefined);
assert.deepStrictEqual(inspect(parser, input('A. ')), undefined);
assert.deepStrictEqual(inspect(parser, input('(I) ')), undefined);
assert.deepStrictEqual(inspect(parser, input('(A) ')), undefined);
assert.deepStrictEqual(inspect(parser, input(' 1. ')), undefined);
});
it('single', () => {
// pending
assert.deepStrictEqual(inspect(parser, input('1. ')), [['
'], '']);
// filled
assert.deepStrictEqual(inspect(parser, input('1. \\')), [['- \\
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. \\\n')), [['- \\
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. -')), [['- -
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. -\n')), [['- -
'], '']);
// pending
assert.deepStrictEqual(inspect(parser, input('(1) ')), [['
'], '']);
// filled
assert.deepStrictEqual(inspect(parser, input('(1) a')), [['- a
'], '']);
});
it('multiple', () => {
// pending
assert.deepStrictEqual(inspect(parser, input('0. \n0')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. \n0\n')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. \n0.')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. \n0. ')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. \n0.\n')), [['
'], '']);
// filled
assert.deepStrictEqual(inspect(parser, input('0. 1\n0. 2')), [['- 1
- 2
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. 1\n0. 2\n0. 3')), [['- 1
- 2
- 3
'], '']);
// pending
assert.deepStrictEqual(inspect(parser, input('(1) \n(')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('(1) \n(\n')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('(1) \n(1')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('(1) \n(1\n')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('(1) \n(1)')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('(1) \n(1)\n')), [['
'], '']);
// filled
assert.deepStrictEqual(inspect(parser, input('(1) \n(1) ')), [['
'], '']);
// invalid
assert.deepStrictEqual(inspect(parser, input('0. \n0 ')), [['- 0
'], '']);
});
it('nest', () => {
assert.deepStrictEqual(inspect(parser, input('0. \n 0')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. 1\n 0')), [['- 1
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. 1\n 0.')), [['- 1
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. 1\n 0. ')), [['- 1
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. 1\n 0.\n')), [['- 1
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. 1\n 0. 2')), [['- 1
- 2
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. 1\n 0. 2\n0. 3')), [['- 1
- 2
- 3
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. 1\n 0. 2\n 0. 3')), [['- 1
- 2
- 3
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. 1\n 0. 2\n 0. 3')), [['- 1
- 2
- 3
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. 1\n 0. 2\n 0. 3')), [['- 1
- 2
- 0. 3
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. a [#b]')), [['- a b
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. http://host\\')), [['- http://host\\
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. !http://host')), [['- !http://host
'], '']);
});
it('index', () => {
assert.deepStrictEqual(inspect(parser, input('1. ')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('9. ')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('00. ')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('01. ')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('0. \n1')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('8. \n9')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('9. \n9')), [['
'], '']);
});
it('branch', () => {
assert.deepStrictEqual(inspect(parser, input('1-1. ')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('1-1-1. ')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. \n1-')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. \n1-1')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('(1)-1 ')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('(1)-1-1 ')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('(1) \n(1)-')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('(1) \n(1)-1')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. \n1--')), [['- 1--
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. \n1--. ')), [['- 1--.
'], '']);
assert.deepStrictEqual(inspect(parser, input('(1) \n(1)--')), [['- (1)--
'], '']);
assert.deepStrictEqual(inspect(parser, input('(1) \n(1)-- ')), [['- (1)--
'], '']);
assert.deepStrictEqual(inspect(parser, input('1-1. 1')), [['- 1
'], '']);
});
it('type', () => {
assert.deepStrictEqual(inspect(parser, input('1. \n i. ')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. \n a. ')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. \n I. ')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. \n A. ')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. \n a. \n 1.\n c')), [['
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. \n i. 1')), [['
- 1
'], '']);
});
it('checkbox', () => {
assert.deepStrictEqual(inspect(parser, input('1. [ ]')), [['- ☐
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. [x]')), [['- ☑
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. [X]')), [['- ☑
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. [X] 1')), [['- ☑1
'], '']);
});
it('indexer', () => {
assert.deepStrictEqual(inspect(parser, input('1. [|a]')), [['- [|a]
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. a [|]')), [['- a
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. a [|b]')), [['- a
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. - [|]')), [['- -
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. [ ] [|a]')), [['- ☐[|a]
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. [ ] a [|b]')), [['- ☐a
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. a [|]\n 1. c [|d]')), [['- a
- c
'], '']);
assert.deepStrictEqual(inspect(parser, input('1. a [|b]\n 1. c [|d]')), [['- a
- c
'], '']);
});
});
});