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'], '']);
});
});
});