import { strong } from './strong';
import { some } from '../../combinator';
import { input } from '../context';
import { inspect } from '../../debug.test';
describe('Unit: parser/inline/strong', () => {
describe('strong', () => {
const parser = some(strong);
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*')), [['**', '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);
});
it('basic', () => {
assert.deepStrictEqual(inspect(parser, input('**a**')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('**ab**')), [['ab'], '']);
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\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*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)'], '']);
});
});
});