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