import { code } from './code'; import { some } from '../../combinator'; import { input } from '../context'; import { inspect } from '../../debug.test'; describe('Unit: parser/inline/code', () => { describe('code', () => { const parser = some(code); it('invalid', () => { assert.deepStrictEqual(inspect(parser, input('')), undefined); assert.deepStrictEqual(inspect(parser, input('`')), [['`'], '']); assert.deepStrictEqual(inspect(parser, input('``')), [['``'], '']); assert.deepStrictEqual(inspect(parser, input('``a`')), [['``a`'], '']); assert.deepStrictEqual(inspect(parser, input('`a``')), [ [ '`a``' ], '' ]); assert.deepStrictEqual(inspect(parser, input('`\n`')), [['`'], '\n`']); assert.deepStrictEqual(inspect(parser, input('`a\nb`')), [['`a'], '\nb`']); assert.deepStrictEqual(inspect(parser, input('`a\\\nb`')), [['`a\\'], '\nb`']); assert.deepStrictEqual(inspect(parser, input(' ` `')), undefined); }); it('basic', () => { assert.deepStrictEqual(inspect(parser, input('` `')), [[' '], '']); assert.deepStrictEqual(inspect(parser, input('` `')), [[' '], '']); assert.deepStrictEqual(inspect(parser, input('` `')), [[' '], '']); assert.deepStrictEqual(inspect(parser, input('`a`')), [['a'], '']); assert.deepStrictEqual(inspect(parser, input('`ab`')), [['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`\n')), [['a'], '\n']); }); it('escape', () => { assert.deepStrictEqual(inspect(parser, input('`\\`')), [['\\'], '']); assert.deepStrictEqual(inspect(parser, input('`\\\\`')), [['\\\\'], '']); assert.deepStrictEqual(inspect(parser, input('` `')), [['&nbsp;'], '']); assert.deepStrictEqual(inspect(parser, input('` `` `')), [['``'], '']); assert.deepStrictEqual(inspect(parser, input('`` ` ``')), [['`'], '']); }); it('nest', () => { assert.deepStrictEqual(inspect(parser, input('``')), [['<wbr>'], '']); assert.deepStrictEqual(inspect(parser, input('`*u*`')), [['*u*'], '']); }); it('trim', () => { 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('`\ta\t`')), [['\ta\t'], '']); }); }); });