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