import { reference } from './reference'; import { some } from '../../combinator'; import { input } from '../context'; import { inspect } from '../../debug.test'; describe('Unit: parser/inline/reference', () => { describe('reference', () => { const parser = some(reference); it('invalid', () => { assert.deepStrictEqual(inspect(parser, input('')), undefined); assert.deepStrictEqual(inspect(parser, input('[')), undefined); assert.deepStrictEqual(inspect(parser, input('[]')), undefined); assert.deepStrictEqual(inspect(parser, input('[[')), undefined); assert.deepStrictEqual(inspect(parser, input('[[]]')), undefined); 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('[[a]b]')), undefined); assert.deepStrictEqual(inspect(parser, input('[["]]')), undefined); assert.deepStrictEqual(inspect(parser, input('[[(]]')), undefined); assert.deepStrictEqual(inspect(parser, input('[[[%]]')), undefined); 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('[[\\ 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('[[\\\na]]')), undefined); assert.deepStrictEqual(inspect(parser, input('[[a\n]]')), undefined); assert.deepStrictEqual(inspect(parser, input('[[a\\\n]]')), undefined); assert.deepStrictEqual(inspect(parser, input('[[a\nb]]')), undefined); assert.deepStrictEqual(inspect(parser, input('[[a\\\nb]]')), undefined); assert.deepStrictEqual(inspect(parser, input('[[*a\nb*]]')), undefined); assert.deepStrictEqual(inspect(parser, input('[[\\]]')), undefined); assert.deepStrictEqual(inspect(parser, input('[[a]b]]')), 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 ]]')), [['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('[[ab]]')), [['ab'], '']); }); it('nest', () => { assert.deepStrictEqual(inspect(parser, input('[[`a`]]')), [['a'], '']); assert.deepStrictEqual(inspect(parser, input('[[@a]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[http://host]]')), [['http://host'], '']); 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))]]')), [['((a))'], '']); }); it('abbr', () => { assert.deepStrictEqual(inspect(parser, input('[[^]]')), [['^'], '']); assert.deepStrictEqual(inspect(parser, input('[[^A]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^A,]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^A, ]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^A.]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^A.,]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^A?]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^A?,]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^A ]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^A ]]')), [['^A'], '']); assert.deepStrictEqual(inspect(parser, input('[[^A B]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^A B]]')), [['^A B'], '']); assert.deepStrictEqual(inspect(parser, input('[[^A|]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^A,|]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^A |]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^A|b]]')), [['b'], '']); assert.deepStrictEqual(inspect(parser, input('[[^A|b]]')), [['b'], '']); assert.deepStrictEqual(inspect(parser, input('[[^A|b ]]')), [['b'], '']); assert.deepStrictEqual(inspect(parser, input('[[^A|b ]]')), [['b'], '']); assert.deepStrictEqual(inspect(parser, input('[[^A| ]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^A| b]]')), [['b'], '']); assert.deepStrictEqual(inspect(parser, input('[[^A| ]]')), undefined); assert.deepStrictEqual(inspect(parser, input('[[^A|]]')), undefined); assert.deepStrictEqual(inspect(parser, input('[[^A|b]]')), undefined); assert.deepStrictEqual(inspect(parser, input('[[^A|^]]')), [['^'], '']); assert.deepStrictEqual(inspect(parser, input('[[^A|^B]]')), [['^B'], '']); assert.deepStrictEqual(inspect(parser, input('[[^1]]')), [['^1'], '']); assert.deepStrictEqual(inspect(parser, input('[[^1A]]')), [['^1A'], '']); assert.deepStrictEqual(inspect(parser, input('[[^1 ]]')), [['^1'], '']); assert.deepStrictEqual(inspect(parser, input('[[^1 A]]')), [['^1 A'], '']); assert.deepStrictEqual(inspect(parser, input('[[^1|]]')), [['^1|'], '']); assert.deepStrictEqual(inspect(parser, input('[[^1 |]]')), [['^1 |'], '']); assert.deepStrictEqual(inspect(parser, input('[[^Abc]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^A, B]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input(`[[^A's, Aces']]`)), [[``], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020, 1]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020, 1, 2]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020, 1, fig. 1]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020, 1, fig. 1.1]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020, 1, fig. 1.1-2.1b]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020, 1, fig. 1.1a-b]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020, 1-2]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020, 1:1-2]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020, 1n]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020, 1n1]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020, 1nn1-2]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020, i]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020, capter 1]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020, cap. 1]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020a]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020a, 1]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020-2021a]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz 2020-2021a, 1]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz, April 1, 2020]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz, April 1, 2020, 1]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz n.d.]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^Xyz n.d., 1]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^X. Y., and Z et al. 2020, 1-2]]')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('[[^^]]')), [['^^'], '']); assert.deepStrictEqual(inspect(parser, input('[[\\^]]')), [['^'], '']); assert.deepStrictEqual(inspect(parser, input('[[^ ]]')), [['^'], '']); assert.deepStrictEqual(inspect(parser, input('[[^ A]]')), [['^ A'], '']); assert.deepStrictEqual(inspect(parser, input('[[^ |]]')), [['^ |'], '']); assert.deepStrictEqual(inspect(parser, input('[[^ |b]]')), [['^ |b'], '']); assert.deepStrictEqual(inspect(parser, input('[[^ | ]]')), [['^ |'], '']); assert.deepStrictEqual(inspect(parser, input('[[^ | b]]')), [['^ | b'], '']); }); }); });