import { template } from './template'; import { some } from '../../combinator'; import { input } from '../context'; import { inspect } from '../../debug.test'; describe('Unit: parser/inline/template', () => { describe('template', () => { const parser = some(template); 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('{{\\}}')), [['{{\\}'], '}']); assert.deepStrictEqual(inspect(parser, input('{{a}b}')), [['{{a'], '}b}']); assert.deepStrictEqual(inspect(parser, input('{{{a}}')), [['{{{a}'], '}']); assert.deepStrictEqual(inspect(parser, input(' {{}}')), undefined); }); it('basic', () => { 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('{{\n}}')), [['{{
}}
'], '']); assert.deepStrictEqual(inspect(parser, input('{{\\\n}}')), [['{{\\
}}
'], '']); assert.deepStrictEqual(inspect(parser, input('{{a}}')), [['{{a}}'], '']); assert.deepStrictEqual(inspect(parser, input('{{a b}}')), [['{{a b}}'], '']); assert.deepStrictEqual(inspect(parser, input('{{\\}}}')), [['{{\\}}}'], '']); assert.deepStrictEqual(inspect(parser, input('{{}}')), [['{{<a>}}'], '']); }); it('nest', () => { assert.deepStrictEqual(inspect(parser, input('{{`a`}}')), [['{{`a`}}'], '']); assert.deepStrictEqual(inspect(parser, input('{{{a}}}')), [['{{{a}}}'], '']); assert.deepStrictEqual(inspect(parser, input('{{{{a}}}}')), [['{{{{a}}}}'], '']); }); }); });