import { emphasis } from './emphasis'; import { some } from '../../combinator'; import { input } from '../context'; import { inspect } from '../../debug.test'; describe('Unit: parser/inline/emphasis', () => { describe('emphasis', () => { const parser = some(emphasis); it('invalid', () => { assert.deepStrictEqual(inspect(parser, input('*')), undefined); 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('*a**b')), [['*', 'a', '**', 'b'], '']); 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); 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 *b**')), [['a b'], '']); assert.deepStrictEqual(inspect(parser, input('*- *b**')), [['- 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**c')), [['*', 'a', 'b', '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`*')), [['a'], '']); assert.deepStrictEqual(inspect(parser, input('*(*a*)*')), [['(a)'], '']); assert.deepStrictEqual(inspect(parser, input('*(**a**)*')), [['(a)'], '']); }); }); });