import { placeholder } from './placeholder'; import { some } from '../../../combinator'; import { input } from '../../context'; import { inspect } from '../../../debug.test'; describe('Unit: parser/inline/extension/placeholder', () => { describe('placeholder', () => { const parser = some(placeholder); it('invalid', () => { assert.deepStrictEqual(inspect(parser, input('[]')), undefined); assert.deepStrictEqual(inspect(parser, input('[a]')), undefined); assert.deepStrictEqual(inspect(parser, input('[ab]')), undefined); assert.deepStrictEqual(inspect(parser, input('[^]')), undefined); assert.deepStrictEqual(inspect(parser, input('[^]]')), undefined); assert.deepStrictEqual(inspect(parser, input('[^\\]')), [['[^', ']'], '']); assert.deepStrictEqual(inspect(parser, input('[^ ]')), undefined); assert.deepStrictEqual(inspect(parser, input('[^ a]')), undefined); assert.deepStrictEqual(inspect(parser, input('[^\\ ]')), 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('[^ !http://host]')), undefined); assert.deepStrictEqual(inspect(parser, input('[^a')), [['[^', 'a'], '']); 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); }); it('valid', () => { 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 ]')), [['[^a ]'], '']); assert.deepStrictEqual(inspect(parser, input('[^a\\ ]')), [['[^a\\ ]'], '']); assert.deepStrictEqual(inspect(parser, input('[^a\\ \\ ]')), [['[^a\\ \\ ]'], '']); assert.deepStrictEqual(inspect(parser, input('[^a\n]')), [['[^a\n]'], '']); assert.deepStrictEqual(inspect(parser, input('[^a\\\n]')), [['[^a\\\n]'], '']); assert.deepStrictEqual(inspect(parser, input('[^a\nb]')), [['[^a\nb]'], '']); assert.deepStrictEqual(inspect(parser, input('[^a\\\nb]')), [['[^a\\\nb]'], '']); assert.deepStrictEqual(inspect(parser, input('[^a]')), [['[^a<wbr>]'], '']); assert.deepStrictEqual(inspect(parser, input('[^a]')), [['[^a<wbr><wbr>]'], '']); assert.deepStrictEqual(inspect(parser, input('[^==]')), [['[^==]'], '']); 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('[^\\]]')), [['[^\\]]'], '']); assert.deepStrictEqual(inspect(parser, input('[^(])]')), [['[^(])]'], '']); assert.deepStrictEqual(inspect(parser, input('[^!http://host]')), [['[^!http://host]'], '']); assert.deepStrictEqual(inspect(parser, input('[^[% a %]]')), [['[^[% a %]]'], '']); assert.deepStrictEqual(inspect(parser, input('[^[% a %]b]')), [['[^[% a %]b]'], '']); }); }); });