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')), [['
a
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n')), [['
a
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\nb')), [['
a
b
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n b \n')), [['
a
 b
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n|')), [['
a
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n||1')), [['
a
||1
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n| b ')), [['
a
b
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n|\n')), [['
a
'], '']); assert.deepStrictEqual(inspect(parser, input('| a ')), [['
 a 
'], '']); assert.deepStrictEqual(inspect(parser, input('| \na')), [['
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('| !http://host)')), [['
!http://host)
'], '']); assert.deepStrictEqual(inspect(parser, input('| #a')), [['
#a
'], '']); assert.deepStrictEqual(inspect(parser, input('| @a#b')), [['
@a#b
'], '']); assert.deepStrictEqual(inspect(parser, input('| ||1\n| | b')), [['
||1
| b
'], '']); assert.deepStrictEqual(inspect(parser, input('| ||1\n| | b\n| c')), [['
||1
| b
c
'], '']); }); it('nest', () => { assert.deepStrictEqual(inspect(parser, input('| a\n||')), [['
a
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n|| b\n| c')), [['
a
b
c
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n|| b\n|| c')), [['
a
b
c
'], '']); assert.deepStrictEqual(inspect(parser, input('| a\n|| b\n||| c')), [['
a
b
c
'], '']); assert.deepStrictEqual(inspect(parser, input('|| a')), [['
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\n| c')), [['
a
b
c
'], '']); assert.deepStrictEqual(inspect(parser, input('|| a\n| b\n||| c')), [['
a
b
c
'], '']); assert.deepStrictEqual(inspect(parser, input('||| a\n|| b\n| c')), [['
a
b
c
'], '']); }); }); });