import { figure } from './figure'; import { run, parse as parse_ } from '../api'; import { Opts } from '../api/parse'; import { List, Node } from '../combinator/parser'; import { html } from 'typed-dom/dom'; import { normalize } from '../debug.test'; const parse = (s: string, o?: Opts) => parse_(s, { test: true, ...o }); describe('Unit: processor/figure', () => { describe('figure', () => { it('empty', () => { const labels = new List>(); const target = run(parse('', { labels })); for (let i = 0; i < 3; ++i) { [...figure(target, labels)]; assert.deepStrictEqual( [...target.children].map(el => normalize(el.outerHTML)), []); } }); it('one', () => { const labels = new List>(); const target = run(parse([ '$test-a\n> ', '$test-a', '$test-b', '$test-a', ].join('\n\n'), { labels })); for (let i = 0; i < 3; ++i) { [...figure(target, labels)]; assert.deepStrictEqual( [...target.children].map(el => normalize(el.outerHTML)), [ '
Test 1.
', '

Test 1

', '

$test-b

', '

Test 1

', ]); } }); it('some', () => { const labels = new List>(); const target = run(parse([ '$test-a\n> ', '## 0', '$test-b\n> ', '$quote-a\n> ', '$test-b\n> ', '$test-c\n> ', ].join('\n\n'), { labels })); for (let i = 0; i < 3; ++i) { [...figure(target, labels)]; assert.deepStrictEqual( [...target.children].map(el => normalize(el.outerHTML)), [ '
Test 1.
', '

0

', '
Test 2.
', '
Quote 1.
', '
Test 3.
', '
Test 4.
', ]); } }); it('number', () => { const labels = new List>(); const target = run(parse([ '$-a\n$$\n$$', '$-a', ].join('\n\n'), { labels })); for (let i = 0; i < 3; ++i) { [...figure(target, labels)]; assert.deepStrictEqual( [...target.children].map(el => normalize(el.outerHTML)), [ '
(1)
$$\n$$
', '

(1)

', ]); } }); it('fixed', () => { const labels = new List>(); const target = run(parse([ '$test-2\n> ', '$test-3.1\n> ', '$-4.1.1\n$$\n$$', '$-a\n$$\n$$', '$test-a\n> ', '$test-2', '$-4.1.1', '$test-1', ].join('\n\n'), { labels })); for (let i = 0; i < 3; ++i) { [...figure(target, labels)]; assert.deepStrictEqual( [...target.children].map(el => normalize(el.outerHTML)), [ '
Test 2.
', '
Test 3.1.
', '
(4.1.1)
$$\n$$
', '
(1)
$$\n$$
', '
Test 1.
', '

Test 2

', '

(4.1.1)

', '

$test-1

', ]); } }); it('separation', () => { const labels = new List>(); const target = html('blockquote', run(parse([ '!>> ~~~figure $test-a\n>> > \n>>\n~~~\n> ~~~figure $test-a\n> > \n>\n~~~', '~~~~example/markdown\n~~~figure $test-a\n> \n\n~~~\n\n$test-a\n~~~~', '~~~figure $test-b\n> \n\n~~~', '~~~figure $test-a\n> \n\n~~~', ].join('\n\n'), { labels })).children); for (let i = 0; i < 3; ++i) { [...figure(target, labels)]; assert.deepStrictEqual( [...target.children].map(el => normalize(el.outerHTML)), [ '
Test 1.

References

    Test 1.

    References

      ', '', '
      Test 1.
      ', '
      Test 2.
      ', ]); } }); it('base', () => { const labels = new List>(); const target = run(parse([ '# 0', '$-0.0', '## 0', '$test-1\n> ', '## 0', '!> ## 0', '$test-b\n> ', '## 0', '$-0.0.0', '### 0', '$-0.0', '$test-c\n> ', '## 0', '$-0.1.0', '$test-d\n> ', '$-0.0', '$-0.1.0', '$-0.4.0', '$-0.1.0', '## 0', '## 0', '$-0.0', '$test-e\n> ', '## 0', '$-5.0', '$test-f\n> ', '$-0', '$test-g\n> ', '### 0', '$-0.0.0', '$test-h\n> ', '### 0', '$test-i\n> ', '# 0', '$test-j\n> ', ].join('\n\n'), { labels })); for (let i = 0; i < 3; ++i) { [...figure(target, labels)]; assert.deepStrictEqual( [...target.children].map(el => normalize(el.outerHTML)), [ '

      0

      ', '', '

      0

      ', '
      Test 1.
      ', '

      0

      ', '

      0

      References

        ', '
        Test 2.1.
        ', '

        0

        ', '
        ', '

        0

        ', '', '
        Test 3.1.
        ', '

        0

        ', '
        ', '
        Test 4.1.
        ', '
        ', '
        ', '
        ', '
        ', '

        0

        ', '

        0

        ', '', '
        Test 6.1.
        ', '

        0

        ', '', '
        Test 5.1.
        ', '
        ', '
        Test 5.2.
        ', '

        0

        ', '
        ', '
        Test 5.3.
        ', '

        0

        ', '
        Test 5.4.
        ', '

        0

        ', '
        Test 6.1.
        ' ]); } }); it('concat', () => { const labels = new List>(); const target = run(parse([ '$-0.0', '## 0', '$-0.0', '$test-a\n> ', '$-0.0', '## 0', '$test-b\n> ', '$-0.0', '### 0', '$test-c\n> ', '$-1.0', '## 0', '$-0.0', '$test-d\n> ', '### 0', '$-0.0', '## 0', '$-9.0', '$test-e\n> ', ].join('\n\n'), { labels })); for (let i = 0; i < 3; ++i) { [...figure(target, labels)]; assert.deepStrictEqual( [...target.children].map(el => normalize(el.outerHTML)), [ '
        ', '

        0

        ', '', '
        Test 0.1.
        ', '
        ', '

        0

        ', '
        Test 1.1.
        ', '
        ', '

        0

        ', '
        Test 1.2.
        ', '
        ', '

        0

        ', '', '
        Test 2.1.
        ', '

        0

        ', '', '

        0

        ', '', '
        Test 9.1.
        ', ]); } }); it('verbose', () => { const labels = new List>(); const target = run(parse([ '~~~figure [$test-a]\n> \n\n~~~', '[$test-a]', '[$test-a]', ].join('\n\n'), { labels })); for (let i = 0; i < 3; ++i) { [...figure(target, labels)]; assert.deepStrictEqual( [...target.children].map(el => normalize(el.outerHTML)), [ '
        Test 1.
        ', '

        Test 1

        ', '

        Test 1

        ', ]); } }); it('id', () => { const labels = new List>(); const target = run(parse([ '$test-a\n> ', '==$test-a==', '- $test-a', ].join('\n\n'), { id: '0', labels })); for (let i = 0; i < 3; ++i) { [...figure(target, labels, undefined, { id: '0' })]; assert.deepStrictEqual( [...target.children].map(el => normalize(el.outerHTML)), [ '
        Test 1.
        ', '

        Test 1

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