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