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