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