import { sidefence } from './sidefence'; import { some } from '../../combinator'; import { input } from '../context'; import { inspect } from '../../debug.test'; describe('Unit: parser/block/sidefence', () => { describe('sidefence', () => { const parser = some(sidefence); 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('|a')), undefined); assert.deepStrictEqual(inspect(parser, input('|\n')), undefined); assert.deepStrictEqual(inspect(parser, input('|\na')), undefined); assert.deepStrictEqual(inspect(parser, input('|\n| a')), undefined); assert.deepStrictEqual(inspect(parser, input(' | ')), undefined); assert.deepStrictEqual(inspect(parser, input('||')), undefined); }); it('basic', () => { assert.deepStrictEqual(inspect(parser, input('| ')), [['
'], '']); assert.deepStrictEqual(inspect(parser, input('| \\')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('| \\\n')), [['\\
'], '']); assert.deepStrictEqual(inspect(parser, input('| a')), [['\\
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n')), [['a
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\nb')), [['a
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n b \n')), [['ab
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n|')), [['ab
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n||1')), [['a
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n| b ')), [['a||1
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n|\n')), [['a
b
'], '']); assert.deepStrictEqual(inspect(parser, input('| a ')), [['a
'], '']); assert.deepStrictEqual(inspect(parser, input('| \na')), [['a
'], '']); assert.deepStrictEqual(inspect(parser, input('| http://host')), [['a
'], '']); assert.deepStrictEqual(inspect(parser, input('| http://host)')), [['http://host
'], '']); assert.deepStrictEqual(inspect(parser, input('| !http://host')), [['http://host)
'], '']); assert.deepStrictEqual(inspect(parser, input('| !http://host)')), [['!http://host
'], '']); assert.deepStrictEqual(inspect(parser, input('| #a')), [['!http://host)
'], '']); assert.deepStrictEqual(inspect(parser, input('| @a#b')), [['#a
'], '']); assert.deepStrictEqual(inspect(parser, input('| ||1\n| | b')), [['@a#b
'], '']); assert.deepStrictEqual(inspect(parser, input('| ||1\n| | b\n| c')), [['||1
| b
'], '']); }); it('nest', () => { assert.deepStrictEqual(inspect(parser, input('| a\n||')), [['||1
| b
c
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n|| b\n| c')), [['a
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n|| b\n|| c')), [['abc
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n|| b\n||| c')), [['ab
c
'], '']); assert.deepStrictEqual(inspect(parser, input('|| a')), [['abc
'], '']); assert.deepStrictEqual(inspect(parser, input('|| a\n|')), [['a
'], '']); assert.deepStrictEqual(inspect(parser, input('|| a\n| b')), [['a
'], '']); assert.deepStrictEqual(inspect(parser, input('|| a\n||| b\n| c')), [['ab
'], '']); assert.deepStrictEqual(inspect(parser, input('|| a\n| b\n||| c')), [['abc
'], '']); assert.deepStrictEqual(inspect(parser, input('||| a\n|| b\n| c')), [['abc
'], '']); }); }); });abc