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