import { dlist } from './dlist';
import { some } from '../../combinator';
import { input } from '../context';
import { inspect } from '../../debug.test';
describe('Unit: parser/block/dlist', () => {
describe('dlist', () => {
const parser = some(dlist);
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('~ \n')), undefined);
assert.deepStrictEqual(inspect(parser, input('~ \na')), 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('~a:b')), undefined);
assert.deepStrictEqual(inspect(parser, input('~a\n:b')), undefined);
assert.deepStrictEqual(inspect(parser, input('~a\n: b')), undefined);
assert.deepStrictEqual(inspect(parser, input('~\n')), undefined);
assert.deepStrictEqual(inspect(parser, input('~\n:')), undefined);
assert.deepStrictEqual(inspect(parser, input('~\n:\n')), undefined);
assert.deepStrictEqual(inspect(parser, input('~\n~\n')), undefined);
assert.deepStrictEqual(inspect(parser, input('~\n~\n:')), undefined);
assert.deepStrictEqual(inspect(parser, input('~\n:\n:')), undefined);
assert.deepStrictEqual(inspect(parser, input('~\na')), undefined);
assert.deepStrictEqual(inspect(parser, input(' ~ ')), undefined);
});
it('single', () => {
assert.deepStrictEqual(inspect(parser, input('~ a')), [['
- a
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ \\')), [['- \\
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ \\ a')), [['- a
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\nb')), [['- a
- b
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\nb\n')), [['- a
- b
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\nb\nc')), [['- a
- b
c
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\nb\n\\\nc')), [['- a
- b
\\
c
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\n~')), [['- a
- ~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\n~b')), [['- a
- ~b
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\n~ b')), [['- a
- b
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\n:')), [['- a
- :
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\n: ')), [['- a
- :
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\n: \n')), [['- a
- :
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\n: \\')), [['- a
- \\
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\n:b')), [['- a
- :b
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\n: b')), [['- a
- b
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\n: b\n')), [['- a
- b
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\n: b\nc')), [['- a
- b
c
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\n: b\n\\\nc')), [['- a
- b
\\
c
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a~ b')), [['- a~ b
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a: b')), [['- a: b
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a \n: b\nc ')), [['- a
- b
c
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a \n: b\n c ')), [['- a
- b
c
'], '']);
});
it('multiple', () => {
assert.deepStrictEqual(inspect(parser, input('~ a\n: b\n~ c\n: d')), [['- a
- b
- c
- d
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\n b\nc\n d')), [['- a
- b
c
d
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\n: b\nc\n: d')), [['- a
- b
c - d
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\n: b\nc\n~ d\n: e')), [['- a
- b
c - d
- e
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a\n: b\n~ c\n: d\n~ e\n: f')), [['- a
- b
- c
- d
- e
- f
'], '']);
});
it('indexer', () => {
assert.deepStrictEqual(inspect(parser, input('~ a [|b]')), [['- a
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ a [|b]\\')), [['- a [|b]
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ - [|b]')), [['- -
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ *A*')), [['- A
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ `A`')), [['A
'], '']);
assert.deepStrictEqual(inspect(parser, input('~ ${A}$')), [['- ${A}$
'], '']);
});
});
});