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')), [['

@a

'], '']); assert.deepStrictEqual(inspect(parser, input('# http://host')), [['

http://host

'], '']); assert.deepStrictEqual(inspect(parser, input('## http://host')), [['

http://host

'], '']); assert.deepStrictEqual(inspect(parser, input('# !http://host')), [['

!http://host

'], '']); assert.deepStrictEqual(inspect(parser, input('## !http://host')), [['

!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]

'], '']); }); }); });