import { bracket } from './bracket'; import { some } from '../../combinator'; import { input } from '../context'; import { inspect } from '../../debug.test'; describe('Unit: parser/inline/bracket', () => { describe('bracket', () => { const parser = some(bracket); it('(', () => { assert.deepStrictEqual(inspect(parser, input('(')), [['('], '']); assert.deepStrictEqual(inspect(parser, input('()')), [['()'], '']); assert.deepStrictEqual(inspect(parser, input('(a')), [['(a'], '']); assert.deepStrictEqual(inspect(parser, input('(0)')), [['(0)'], '']); assert.deepStrictEqual(inspect(parser, input('(1)')), [['(1)'], '']); assert.deepStrictEqual(inspect(parser, input('(10)')), [['(10)'], '']); assert.deepStrictEqual(inspect(parser, input('(2000)')), [['(2000)'], '']); assert.deepStrictEqual(inspect(parser, input('(0-1)')), [['(0-1)'], '']); assert.deepStrictEqual(inspect(parser, input('(0)-1')), [['(0)'], '-1']); assert.deepStrictEqual(inspect(parser, input('(0.1)')), [['(0.1)'], '']); assert.deepStrictEqual(inspect(parser, input('(0.1.2)')), [['(0.1.2)'], '']); assert.deepStrictEqual(inspect(parser, input('(1, 2)')), [['(1, 2)'], '']); assert.deepStrictEqual(inspect(parser, input('(1.1-1.2)')), [['(1.1-1.2)'], '']); assert.deepStrictEqual(inspect(parser, input('(1.1, 1.2)')), [['(1.1, 1.2)'], '']); assert.deepStrictEqual(inspect(parser, input('(1 2)')), [['(1 2)'], '']); assert.deepStrictEqual(inspect(parser, input('(1a)')), [['(1a)'], '']); assert.deepStrictEqual(inspect(parser, input('(a)')), [['(a)'], '']); assert.deepStrictEqual(inspect(parser, input('(a1)')), [['(a1)'], '']); assert.deepStrictEqual(inspect(parser, input('(a-1)')), [['(a-1)'], '']); assert.deepStrictEqual(inspect(parser, input('(a.1)')), [['(a.1)'], '']); assert.deepStrictEqual(inspect(parser, input('(a b)')), [['(a b)'], '']); assert.deepStrictEqual(inspect(parser, input('(word)')), [['(word)'], '']); assert.deepStrictEqual(inspect(parser, input('(word word)')), [['(word word)'], '']); assert.deepStrictEqual(inspect(parser, input('(word, word)')), [['(word, word)'], '']); assert.deepStrictEqual(inspect(parser, input('(A)')), [['(A)'], '']); assert.deepStrictEqual(inspect(parser, input('(Name)')), [['(Name)'], '']); assert.deepStrictEqual(inspect(parser, input('(Word word)')), [['(Word word)'], '']); assert.deepStrictEqual(inspect(parser, input('(Word Word)')), [['(Word Word)'], '']); assert.deepStrictEqual(inspect(parser, input('(Name, Name)')), [['(Name, Name)'], '']); assert.deepStrictEqual(inspect(parser, input('(ABBR)')), [['(ABBR)'], '']); assert.deepStrictEqual(inspect(parser, input('(ABBR, ABBR)')), [['(ABBR, ABBR)'], '']); assert.deepStrictEqual(inspect(parser, input(`(${'0'.repeat(16)})`)), [[`(${'0'.repeat(16)})`], '']); assert.deepStrictEqual(inspect(parser, input(`(${'0'.repeat(17)})`)), [[`(${'0'.repeat(17)})`], '']); assert.deepStrictEqual(inspect(parser, input('(\\a)')), [['(a)'], '']); assert.deepStrictEqual(inspect(parser, input('(==)')), [['(==)'], '']); assert.deepStrictEqual(inspect(parser, input('(()')), [['(()'], '']); assert.deepStrictEqual(inspect(parser, input('("(\n))"(")')), [['("(
)
'], ')"(")']); assert.deepStrictEqual(inspect(parser, input('($)$')), [['($)$'], '']); assert.deepStrictEqual(inspect(parser, input(')')), undefined); assert.deepStrictEqual(inspect(parser, input('(1,2)')), [['(1,2)'], '']); assert.deepStrictEqual(inspect(parser, input('(0-1)')), [['(0-1)'], '']); assert.deepStrictEqual(inspect(parser, input('(0.1)')), [['(0.1)'], '']); 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、B)')), [['(A、B)'], '']); assert.deepStrictEqual(inspect(parser, input('(a\\\nb)')), [['(a
b
)
'], '']); assert.deepStrictEqual(inspect(parser, input('([% a\\\nb %])')), [['([% a
b %]
)
'], '']); assert.deepStrictEqual(inspect(parser, input('({{\\\n}})')), [['({{\\
}}
)
'], '']); }); it('[', () => { assert.deepStrictEqual(inspect(parser, input('[')), [['['], '']); assert.deepStrictEqual(inspect(parser, input('[]')), [['[', ']'], '']); assert.deepStrictEqual(inspect(parser, input('[a')), [['[', 'a'], '']); assert.deepStrictEqual(inspect(parser, input('[a]')), [['[', 'a', ']'], '']); assert.deepStrictEqual(inspect(parser, input('[==]')), [['[', '==', ']'], '']); assert.deepStrictEqual(inspect(parser, input('[$]$')), [['[', '$]$'], '']); assert.deepStrictEqual(inspect(parser, input(']')), undefined); }); it('{', () => { assert.deepStrictEqual(inspect(parser, input('{')), [['{'], '']); assert.deepStrictEqual(inspect(parser, input('{}')), [['{', '}'], '']); assert.deepStrictEqual(inspect(parser, input('{a')), [['{', 'a'], '']); assert.deepStrictEqual(inspect(parser, input('{a}')), [['{', 'a', '}'], '']); assert.deepStrictEqual(inspect(parser, input('{==}')), [['{', '==', '}'], '']); assert.deepStrictEqual(inspect(parser, input('}')), undefined); }); it('"', () => { assert.deepStrictEqual(inspect(parser, input('"')), [['"'], '']); assert.deepStrictEqual(inspect(parser, input('""')), [['"', '"'], '']); assert.deepStrictEqual(inspect(parser, input('"a')), [['"', 'a'], '']); assert.deepStrictEqual(inspect(parser, input('"a"')), [['"', 'a', '"'], '']); assert.deepStrictEqual(inspect(parser, input('"(")"')), [['"', '(', '"'], ')"']); assert.deepStrictEqual(inspect(parser, input('"(("')), [['"', '((', '"'], '']); assert.deepStrictEqual(inspect(parser, input('"(\\")"')), [['"', '(")', '"'], '']); assert.deepStrictEqual(inspect(parser, input('"(\n)"(")')), [['"', '('], '\n)"(")']); assert.deepStrictEqual(inspect(parser, input('"\n"')), [['"'], '\n"']); assert.deepStrictEqual(inspect(parser, input('"\n"(")')), [['"'], '\n"(")']); }); }); });