import { index } from './index';
import { some } from '../../../combinator';
import { input } from '../../context';
import { inspect } from '../../../debug.test';
describe('Unit: parser/inline/extension/index', () => {
describe('index', () => {
const parser = some(index);
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('[# a]')), 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('[#\\\n]')), undefined);
assert.deepStrictEqual(inspect(parser, input('[#\\]')), undefined);
assert.deepStrictEqual(inspect(parser, input('[#a')), 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('[#a\nb]')), 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('[#a\n|b]')), undefined);
assert.deepStrictEqual(inspect(parser, input('[#a|\n]')), undefined);
assert.deepStrictEqual(inspect(parser, input('[#a|\\\n]')), undefined);
assert.deepStrictEqual(inspect(parser, input('[#a|(\n)]')), undefined);
assert.deepStrictEqual(inspect(parser, input('[#a|(\\\n)]')), undefined);
assert.deepStrictEqual(inspect(parser, input('[# |]')), undefined);
assert.deepStrictEqual(inspect(parser, input('[# |b]')), undefined);
assert.deepStrictEqual(inspect(parser, input('[# a|]')), undefined);
assert.deepStrictEqual(inspect(parser, input('[# a|b]')), undefined);
assert.deepStrictEqual(inspect(parser, input('[# a| ]')), undefined);
assert.deepStrictEqual(inspect(parser, input('[# a| b]')), 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('[#a ]')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a [% b %]]')), [['a '], '']);
assert.deepStrictEqual(inspect(parser, input('[#a\\ ]')), [['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\tb]')), [['a\tb'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a_b]')), [['a_b'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a\\ b]')), [['a b'], '']);
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('[#*A*]')), [['A'], '']);
assert.deepStrictEqual(inspect(parser, input('[#`A`]')), [['A'], '']);
assert.deepStrictEqual(inspect(parser, input('[#${A}$]')), [['${A}$'], '']);
assert.deepStrictEqual(inspect(parser, input('[#[A](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('[#http://host]')), [['http://host'], '']);
assert.deepStrictEqual(inspect(parser, input('[#!http://host]')), [['!http://host'], '']);
assert.deepStrictEqual(inspect(parser, input('[#[% %]]')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('[#[% a %]]')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('[#a((b))]')), [['a((b))'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a[[b]]]')), [['a[[b]]'], '']);
});
it('indexer', () => {
assert.deepStrictEqual(inspect(parser, input('[#|]')), [['|'], '']);
assert.deepStrictEqual(inspect(parser, input('[#|b]')), [['|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|b]')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a|b ]')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a|b ]')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a|\\b]')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a|*b*]')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a|*]*]')), [['a'], '*]']);
assert.deepStrictEqual(inspect(parser, input('[#a|b c]')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a|b c]')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a|b\tc]')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a|b_c]')), [['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('[#a| ]')), [['a|'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a|]')), [['a|'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a |b]')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a |b]')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a \\ |b]')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a |b]')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a |b]')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('[#a [% b %]|c]')), [['a '], '']);
assert.deepStrictEqual(inspect(parser, input('[#a\\ |b]')), [['a'], '']);
});
});
});