import { figure } from './figure';
import { some } from '../../../combinator';
import { input } from '../../context';
import { inspect } from '../../../debug.test';
describe('Unit: parser/block/extension/figure', () => {
describe('figure', () => {
const parser = some(figure);
it('invalid', () => {
assert.deepStrictEqual(inspect(parser, input('~~~figure\n!https://host\n~~~')), [['
~~~figure\n!https://host\n~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure $group-name]\n!https://host\n~~~')), [['~~~figure $group-name]\n!https://host\n~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name\n!https://host\n~~~')), [['~~~figure [$group-name\n!https://host\n~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\nhttps://host\n~~~')), [['~~~figure [$group-name]\nhttps://host\n~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\\\n~~~')), [['~~~figure [$group-name]\n!https://host\n\\\n~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\na\n~~~')), [['~~~figure [$group-name]\n!https://host\na\n~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\n\n\n~~~')), [['~~~figure [$group-name]\n!https://host\n\n\n\n~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n !https://host\n~~~')), [['~~~figure [$group-name]\n !https://host\n~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n~~~\n~~~')), [['~~~figure [$group-name]\n!https://host\n~~~\n~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\ncaption\n~~~\n~~~')), [['~~~figure [$group-name]\n!https://host\n\ncaption\n~~~\n~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n~~~~')), [['~~~figure [$group-name]\n!https://host\n~~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~~figure [$group-name]\n!https://host\n~~~')), [['~~~~figure [$group-name]\n!https://host\n~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]a\nhttps://host\n~~~')), [['~~~figure [$group-name]a\nhttps://host\n~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]a\n!https://host\n~~~')), [['~~~figure [$group-name]a\n!https://host\n~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name] a\nhttps://host\n~~~')), [['~~~figure [$group-name] a\nhttps://host\n~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name] a\n!https://host\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure a[$group-name]\n!https://host\n~~~')), [['~~~figure a[$group-name]\n!https://host\n~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure a [$group-name]\n!https://host\n~~~')), [['~~~figure a [$group-name]\n!https://host\n~~~
'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~ [$group-name]\n!https://host\n~~~')), undefined);
assert.deepStrictEqual(inspect(parser, input('~~~ $group-name\n!https://host\n~~~')), undefined);
assert.deepStrictEqual(inspect(parser, input(' ~~~figure [$group-name]\n!https://host\n~~~')), undefined);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$-name]\n!https://host\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$fig-name]\n> \n\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$figure-name]\n> \n\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$table-name]\n> \n\n~~~')), [[''], '']);
});
it('valid', () => {
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n~~~\n')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\n\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\n\\\n~~~')), [['\\'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\n\n!https://caption\n~~~')), [['!https://caption'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n- a\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n1. a\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n|\n|-\n|\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n```\n\n```\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n```\n~~~\n```\n\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n```\n```\n\ncaption\n~~~')), [['caption'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n$$\n\n$$\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n$$\n~~~\n$$\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n$$\n\n$$\n\ncaption\n~~~')), [['caption'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n~~~\n~~~\n\ncaption\n~~~')), [['caption'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n~~~example/markdown\n~~~\n\ncaption\n~~~')), [['caption'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n~~~table\n~~~\n\ncaption\n~~~')), [['caption'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n> \n~~~\n\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n> \n~~~\n\ncaption\n~~~')), [['caption'], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n!https://host\\\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-name]\n![]{https://host}\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~~figure [$group-name]\n!https://host\n~~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure $group-name\n!https://host\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~[$group-name]\n!https://host\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~$group-name\n!https://host\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-0]\n> \n\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$group-0.0]\n> \n\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$-0]\n$$\n\n$$\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$-0.0]\n$$\n\n$$\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$-name]\n!https://host\n~~~')), [[''], '']);
assert.deepStrictEqual(inspect(parser, input('~~~figure [$-name]\n$$\n\n$$\n\ncaption\n~~~')), [['caption'], '']);
});
});
});