import { italic } from './italic';
import { some } from '../../combinator';
import { input } from '../context';
import { inspect } from '../../debug.test';
describe('Unit: parser/inline/italic', () => {
describe('italic', () => {
const parser = some(italic);
it('invalid', () => {
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('///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('///a//b')), [['///', 'a//b'], '']);
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);
});
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///')), [['/', 'a'], '']);
assert.deepStrictEqual(inspect(parser, input('////a///b')), [['/', 'a'], 'b']);
assert.deepStrictEqual(inspect(parser, input('////a////')), [['/', 'a', '/'], '']);
assert.deepStrictEqual(inspect(parser, input('////a////b')), [['/', 'a', '/'], 'b']);
assert.deepStrictEqual(inspect(parser, input('/////a///')), [['//', 'a'], '']);
assert.deepStrictEqual(inspect(parser, input('/////a///b')), [['//', 'a'], 'b']);
assert.deepStrictEqual(inspect(parser, input('/////a////')), [['//', 'a', '/'], '']);
assert.deepStrictEqual(inspect(parser, input('/////a////b')), [['//', 'a', '/'], 'b']);
assert.deepStrictEqual(inspect(parser, input('/////a/////')), [['//', 'a', '//'], '']);
assert.deepStrictEqual(inspect(parser, input('/////a/////b')), [['//', 'a', '//'], 'b']);
assert.deepStrictEqual(inspect(parser, input('//////a///')), [['///', 'a'], '']);
assert.deepStrictEqual(inspect(parser, input('//////a///b')), [['///', 'a', 'b'], '']);
assert.deepStrictEqual(inspect(parser, input('//////a////')), [['///', 'a', '/'], '']);
assert.deepStrictEqual(inspect(parser, input('//////a////b')), [['///', 'a', '/b'], '']);
assert.deepStrictEqual(inspect(parser, input('//////a/////')), [['///', 'a', '//'], '']);
assert.deepStrictEqual(inspect(parser, input('//////a/////b')), [['///', 'a', '//b'], '']);
assert.deepStrictEqual(inspect(parser, input('//////a//////')), [['a'], '']);
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('///- ///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///c///')), [['a bc'], '']);
assert.deepStrictEqual(inspect(parser, input('///a ///b ///c/////////')), [['a b c'], '']);
assert.deepStrictEqual(inspect(parser, input('///a	///b//////')), [['a\tb'], '']);
assert.deepStrictEqual(inspect(parser, input('///a///b//////')), [['ab'], '']);
assert.deepStrictEqual(inspect(parser, input('///`a`///')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('///(///a///)///')), [['(a)'], '']);
assert.deepStrictEqual(inspect(parser, input('///{http://host/}///')), [['http://host/'], '']);
});
});
});