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