import { heading } from './heading';
import { some } from '../../combinator';
import { input } from '../context';
import { inspect } from '../../debug.test';
describe('Unit: parser/block/heading', () => {
describe('heading', () => {
const parser = some(heading);
it('invalid', () => {
assert.deepStrictEqual(inspect(parser, input('')), undefined);
assert.deepStrictEqual(inspect(parser, input('\n')), undefined);
assert.deepStrictEqual(inspect(parser, input('#')), undefined);
assert.deepStrictEqual(inspect(parser, input('#\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('#a\\\n#')), undefined);
assert.deepStrictEqual(inspect(parser, input('# ')), undefined);
assert.deepStrictEqual(inspect(parser, input('#\n')), undefined);
assert.deepStrictEqual(inspect(parser, input('# \n')), 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')), [['
####### a
'], '']);
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 b c \n')), [['a b c
'], '']);
assert.deepStrictEqual(inspect(parser, input('# a\n')), [['a
'], '']);
assert.deepStrictEqual(inspect(parser, input('# *a*`b`${c}$')), [['ab${c}$
'], '']);
assert.deepStrictEqual(inspect(parser, input('# a\\')), [['a
'], '']);
assert.deepStrictEqual(inspect(parser, input('# a\\\n')), [['a
'], '']);
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')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('# http://host')), [['http://host
'], '']);
assert.deepStrictEqual(inspect(parser, input('## http://host')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('# !http://host')), [['!http://host
'], '']);
assert.deepStrictEqual(inspect(parser, input('## !http://host')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('# a((b))')), [['a((b))
'], '']);
assert.deepStrictEqual(inspect(parser, input('## a((b))')), [['a((b))
'], '']);
assert.deepStrictEqual(inspect(parser, input('# a[[b]]')), [['a[[b]]
'], '']);
assert.deepStrictEqual(inspect(parser, input('## a[[b]]')), [['a[[b]]
'], '']);
assert.deepStrictEqual(inspect(parser, input('###### a')), [['a
'], '']);
});
it('indexer', () => {
assert.deepStrictEqual(inspect(parser, input('# [|a]')), [['[|a]
'], '']);
assert.deepStrictEqual(inspect(parser, input('# a[|b]')), [['a[|b]
'], '']);
assert.deepStrictEqual(inspect(parser, input('# a [|b]')), [['a
'], '']);
assert.deepStrictEqual(inspect(parser, input('# a [|b] ')), [['a
'], '']);
assert.deepStrictEqual(inspect(parser, input('# a [|b]\\')), [['a [|b]
'], '']);
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*\\`c\\`\\$\\{d\\}\\$]')), [['a
'], '']);
assert.deepStrictEqual(inspect(parser, input('# a [|@a]')), [['a
'], '']);
assert.deepStrictEqual(inspect(parser, input('# a [|http://host]')), [['a
'], '']);
assert.deepStrictEqual(inspect(parser, input('# a [|!http://host]')), [['a
'], '']);
assert.deepStrictEqual(inspect(parser, input('# a [|a\\(\\(b\\)\\)]')), [['a
'], '']);
assert.deepStrictEqual(inspect(parser, input('# a [|a\\[\\[b\\]\\]]')), [['a
'], '']);
assert.deepStrictEqual(inspect(parser, input('# a [|b] [|c]')), [['a [|b]
'], '']);
assert.deepStrictEqual(inspect(parser, input('# a [|b] \n')), [['a
'], '']);
assert.deepStrictEqual(inspect(parser, input('# a \\[|b]')), [['a [|b]
'], '']);
assert.deepStrictEqual(inspect(parser, input('# - [|b]')), [['-
'], '']);
assert.deepStrictEqual(inspect(parser, input('## a [|b] [|c]')), [['a [|b]
'], '']);
});
});
});