import { codeblock } from './codeblock'; import { some } from '../../combinator'; import { input } from '../context'; import { inspect } from '../../debug.test'; describe('Unit: parser/block/codeblock', () => { describe('codeblock', () => { const parser = some(codeblock); 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('```\na')), [['
```\na'], '']); assert.deepStrictEqual(inspect(parser, input('```\na```')), [['
```\na```'], '']); assert.deepStrictEqual(inspect(parser, input('```\na\n```b')), [['
```\na\n```b'], '']); assert.deepStrictEqual(inspect(parser, input('```\na\n```\nb')), [['
```\na\n```\nb'], '']); assert.deepStrictEqual(inspect(parser, input('```\n\n\n```')), undefined); assert.deepStrictEqual(inspect(parser, input('```a ```\n```')), undefined); assert.deepStrictEqual(inspect(parser, input('```\n```\n```')), [['
```\n```\n```'], '']); assert.deepStrictEqual(inspect(parser, input('```\n````')), [['
```\n````'], '']); assert.deepStrictEqual(inspect(parser, input('````\n```')), [['
````\n```'], '']); assert.deepStrictEqual(inspect(parser, input(' ```\n```')), undefined); }); it('basic', () => { assert.deepStrictEqual(inspect(parser, input('```\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('```\n\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('```\na\n```')), [['
a'], '']); assert.deepStrictEqual(inspect(parser, input('```\na\nb\n```')), [['
a'], '']); assert.deepStrictEqual(inspect(parser, input('```\n\\\n```')), [['
b
\\'], '']); assert.deepStrictEqual(inspect(parser, input('```\n`\n```')), [['
`'], '']); assert.deepStrictEqual(inspect(parser, input('```\n```\n\n```')), [[''], '\n```']); assert.deepStrictEqual(inspect(parser, input('```\n````\n```')), [['
````'], '']); assert.deepStrictEqual(inspect(parser, input('```\n````\n\n```')), [['
````'], '']); assert.deepStrictEqual(inspect(parser, input('````\n```\n````')), [['
```'], '']); assert.deepStrictEqual(inspect(parser, input('````\n```\n\n````')), [['
```'], '']); assert.deepStrictEqual(inspect(parser, input('```\n\n```\n')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('```\nhttp://host\n```')), [['
http://host'], '']); assert.deepStrictEqual(inspect(parser, input('```\nhttp://host)\n```')), [['
http://host)'], '']); assert.deepStrictEqual(inspect(parser, input('```\n!http://host\n```')), [['
!http://host'], '']); assert.deepStrictEqual(inspect(parser, input('```\n!http://host)\n```')), [['
!http://host)'], '']); assert.deepStrictEqual(inspect(parser, input('```\n#a\n```')), [['
#a'], '']); assert.deepStrictEqual(inspect(parser, input('```\n@a#b\n```')), [['
@a#b'], '']); }); it('attribute', () => { assert.deepStrictEqual(inspect(parser, input('```0\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('```a\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('```A\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('```a-b\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('```a-b0\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('```a--b\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('``` b\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('``` b c\n```')), [['
``` b c\n```'], '']); assert.deepStrictEqual(inspect(parser, input('``` b\\ c\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('``` b.c\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('``` .b\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('``` b \n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('``` ~/.b\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('``` ~/b.c\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('```.b\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('```b.c\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('```a b.c\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('```a 1\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('``` 1\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('``` 1,2-3\n```')), [[''], '']); assert.deepStrictEqual(inspect(parser, input('``` 1 b.c\n```')), [[''], '']); }); }); });