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 [% b %]'], '']); 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(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 %]]')), [['[% 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 [% b %]'], '']); assert.deepStrictEqual(inspect(parser, input('[#a\\ |b]')), [['a'], '']); }); }); });