import { emstrong } from './emstrong'; import { some } from '../../combinator'; import { input } from '../context'; import { inspect } from '../../debug.test'; describe('Unit: parser/inline/emstrong', () => { describe('emstrong', () => { const parser = some(emstrong); it('invalid', () => { assert.deepStrictEqual(inspect(parser, input('***')), [['***'], '']); assert.deepStrictEqual(inspect(parser, input('***a')), [['***a'], '']); assert.deepStrictEqual(inspect(parser, input('***a ***')), [['***a ', '***'], '']); assert.deepStrictEqual(inspect(parser, input('***a ***')), [['***a', ' ', '***'], '']); assert.deepStrictEqual(inspect(parser, input('***a\n***')), [['***a', '
', '***'], '']); assert.deepStrictEqual(inspect(parser, input('***a\\ ***')), [['***a', ' ', '***'], '']); assert.deepStrictEqual(inspect(parser, input('***a\\\n***')), [['***a', '
', '***'], '']); assert.deepStrictEqual(inspect(parser, input('*** ***')), undefined); assert.deepStrictEqual(inspect(parser, input('*** a***')), 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('***\\ a***')), undefined); assert.deepStrictEqual(inspect(parser, input('***\\\na***')), undefined); assert.deepStrictEqual(inspect(parser, input('***a***')), undefined); assert.deepStrictEqual(inspect(parser, input(' ***a***')), undefined); }); it('basic', () => { assert.deepStrictEqual(inspect(parser, input('***a***')), [['a'], '']); assert.deepStrictEqual(inspect(parser, input('***ab***')), [['ab'], '']); assert.deepStrictEqual(inspect(parser, input('***a****')), [['a'], '*']); assert.deepStrictEqual(inspect(parser, input('***a\nb***')), [['a
b
'], '']); assert.deepStrictEqual(inspect(parser, input('***a\\\nb***')), [['a
b
'], '']); }); it('nest', () => { assert.deepStrictEqual(inspect(parser, input('***`a`***')), [['a'], '']); assert.deepStrictEqual(inspect(parser, input('***(*a*)***')), [['(a)'], '']); assert.deepStrictEqual(inspect(parser, input('***(**a**)***')), [['(a)'], '']); assert.deepStrictEqual(inspect(parser, input('***(***a***)***')), [['(a)'], '']); assert.deepStrictEqual(inspect(parser, input('***a*')), [['**', 'a'], '']); assert.deepStrictEqual(inspect(parser, input('***a*b')), [['**', 'a', 'b'], '']); assert.deepStrictEqual(inspect(parser, input('***a*b*')), [['**', 'a', 'b'], '*']); assert.deepStrictEqual(inspect(parser, input('***a*b*c')), [['**', 'a', 'b', '*', 'c'], '']); assert.deepStrictEqual(inspect(parser, input('***a*b*c*')), [['**', 'a', 'b', 'c'], '']); assert.deepStrictEqual(inspect(parser, input('***a*b*c**')), [['**', 'a', 'b', 'c'], '*']); assert.deepStrictEqual(inspect(parser, input('***a*b*c***')), [['abc'], '']); assert.deepStrictEqual(inspect(parser, input('***a*b**')), [['ab'], '']); assert.deepStrictEqual(inspect(parser, input('***a*b**c')), [['ab'], 'c']); assert.deepStrictEqual(inspect(parser, input('***a**')), [['*', 'a'], '']); assert.deepStrictEqual(inspect(parser, input('***a**b')), [['*', 'a', 'b'], '']); assert.deepStrictEqual(inspect(parser, input('***a**b*')), [['ab'], '']); assert.deepStrictEqual(inspect(parser, input('***a**b**')), [['ab'], '*']); assert.deepStrictEqual(inspect(parser, input('***a**b**c')), [['*', 'a', 'b', '**', 'c'], '']); assert.deepStrictEqual(inspect(parser, input('***a**b**c*')), [['ab**c'], '']); assert.deepStrictEqual(inspect(parser, input('***a**b**c**')), [['*', 'a', 'b', 'c'], '']); assert.deepStrictEqual(inspect(parser, input('***a**b**c***')), [['abc'], '']); assert.deepStrictEqual(inspect(parser, input('***a *b****')), [['a b'], '']); assert.deepStrictEqual(inspect(parser, input('***a\\ *b****')), [['a b'], '']); assert.deepStrictEqual(inspect(parser, input('***a *b****')), [['a\tb'], '']); assert.deepStrictEqual(inspect(parser, input('***a*b****')), [['ab'], '']); assert.deepStrictEqual(inspect(parser, input('***a *b****')), [['a b'], '']); assert.deepStrictEqual(inspect(parser, input('***a* **b****')), [['a b'], '']); assert.deepStrictEqual(inspect(parser, input('***a*\\ **b****')), [['a b'], '']); assert.deepStrictEqual(inspect(parser, input('***a* **b****')), [['a\tb'], '']); assert.deepStrictEqual(inspect(parser, input('***a***b****')), [['ab'], '']); assert.deepStrictEqual(inspect(parser, input('***a*b **')), [['**', 'a', 'b ', '**'], '']); assert.deepStrictEqual(inspect(parser, input('***a*b\\ **')), [['**', 'a', 'b', ' ', '**'], '']); assert.deepStrictEqual(inspect(parser, input('***a**b*')), [['ab'], '']); assert.deepStrictEqual(inspect(parser, input('***a**b*c')), [['ab'], 'c']); assert.deepStrictEqual(inspect(parser, input('***a**b*c**')), [['ab'], 'c**']); assert.deepStrictEqual(inspect(parser, input('***a**b**c***')), [['abc'], '']); assert.deepStrictEqual(inspect(parser, input('***a**b**c***d')), [['abc'], 'd']); assert.deepStrictEqual(inspect(parser, input('***a** *b**')), [['a b'], '']); assert.deepStrictEqual(inspect(parser, input('***a**\\ *b**')), [['a b'], '']); assert.deepStrictEqual(inspect(parser, input('***a** *b**')), [['a\tb'], '']); assert.deepStrictEqual(inspect(parser, input('***a***b**')), [['ab'], '']); assert.deepStrictEqual(inspect(parser, input('***a**b *')), [['*', 'a', 'b ', '*'], '']); assert.deepStrictEqual(inspect(parser, input('***a**b\\ *')), [['*', 'a', 'b', ' ', '*'], '']); assert.deepStrictEqual(inspect(parser, input('***a*')), [['**', 'a'], '']); assert.deepStrictEqual(inspect(parser, input('***a**')), [['*', 'a'], '']); assert.deepStrictEqual(inspect(parser, input('***a***')), [['a'], '']); assert.deepStrictEqual(inspect(parser, input('***a***b')), [['a'], 'b']); assert.deepStrictEqual(inspect(parser, input('***a****')), [['a'], '*']); assert.deepStrictEqual(inspect(parser, input('***a*****')), [['a'], '**']); assert.deepStrictEqual(inspect(parser, input('***a******')), [['a', '***'], '']); assert.deepStrictEqual(inspect(parser, input('****a***')), [['*', 'a'], '']); assert.deepStrictEqual(inspect(parser, input('****a***b')), [['*', 'a', 'b'], '']); assert.deepStrictEqual(inspect(parser, input('****a***b*')), [['ab'], '']); assert.deepStrictEqual(inspect(parser, input('****a****')), [['a'], '']); assert.deepStrictEqual(inspect(parser, input('****a****b')), [['a'], 'b']); assert.deepStrictEqual(inspect(parser, input('*****a***')), [['**', 'a'], '']); assert.deepStrictEqual(inspect(parser, input('*****a***b')), [['**', 'a', 'b'], '']); assert.deepStrictEqual(inspect(parser, input('*****a***b**')), [['ab'], '']); assert.deepStrictEqual(inspect(parser, input('*****a****')), [['*', 'a'], '']); assert.deepStrictEqual(inspect(parser, input('*****a****b')), [['*', 'a', 'b'], '']); assert.deepStrictEqual(inspect(parser, input('*****a****b*')), [['ab'], '']); assert.deepStrictEqual(inspect(parser, input('*****a*****')), [['a'], '']); assert.deepStrictEqual(inspect(parser, input('******a***')), [['***', 'a'], '']); assert.deepStrictEqual(inspect(parser, input('******a***b')), [['***', 'a', 'b'], '']); assert.deepStrictEqual(inspect(parser, input('******a****')), [['**', 'a'], '']); assert.deepStrictEqual(inspect(parser, input('******a****b')), [['**', 'a', 'b'], '']); assert.deepStrictEqual(inspect(parser, input('******a****b**')), [['ab'], '']); assert.deepStrictEqual(inspect(parser, input('******a*****')), [['*', 'a'], '']); assert.deepStrictEqual(inspect(parser, input('******a*****b')), [['*', 'a', 'b'], '']); assert.deepStrictEqual(inspect(parser, input('******a*****b*')), [['ab'], '']); assert.deepStrictEqual(inspect(parser, input('******a******')), [['a'], '']); assert.deepStrictEqual(inspect(parser, input('******a******b')), [['a'], 'b']); assert.deepStrictEqual(inspect(parser, input('******a*b')), [['*****', 'a', 'b'], '']); assert.deepStrictEqual(inspect(parser, input('******a*b *')), [['*****', 'a', 'b ', '*'], '']); assert.deepStrictEqual(inspect(parser, input('******a*b **')), [['*****', 'a', 'b ', '**'], '']); assert.deepStrictEqual(inspect(parser, input('******a*b ***')), [['*****', 'a', 'b ', '***'], '']); assert.deepStrictEqual(inspect(parser, input('******a*b ****')), [['*****', 'a', 'b ', '****'], '']); assert.deepStrictEqual(inspect(parser, input('******a*b *****')), [['*****', 'a', 'b ', '*****'], '']); assert.deepStrictEqual(inspect(parser, input('******a*** b***')), [['a b'], '']); }); }); });