import { blockquote } from './blockquote'; import { some } from '../../combinator'; import { input } from '../context'; import { inspect } from '../../debug.test'; describe('Unit: parser/block/blockquote', () => { describe('blockquote', () => { const parser = some(blockquote); 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('>a')), undefined); assert.deepStrictEqual(inspect(parser, input('>\n')), undefined); assert.deepStrictEqual(inspect(parser, input('>\na')), undefined); assert.deepStrictEqual(inspect(parser, input('!>\n')), undefined); assert.deepStrictEqual(inspect(parser, input('!>\na')), undefined); assert.deepStrictEqual(inspect(parser, input(' > ')), undefined); assert.deepStrictEqual(inspect(parser, input('>>')), undefined); }); it('basic', () => { assert.deepStrictEqual(inspect(parser, input('> ')), [['
'], '']); assert.deepStrictEqual(inspect(parser, input('> \\')), [['
\\
'], '']); assert.deepStrictEqual(inspect(parser, input('> \\\n')), [['
\\
'], '']); assert.deepStrictEqual(inspect(parser, input('> a')), [['
a
'], '']); assert.deepStrictEqual(inspect(parser, input('> a\n')), [['
a
'], '']); assert.deepStrictEqual(inspect(parser, input('> a\nb')), [['
a
b
'], '']); assert.deepStrictEqual(inspect(parser, input('> a\n b ')), [['
a
b
'], '']); assert.deepStrictEqual(inspect(parser, input('> a\n>')), [['
a
'], '']); assert.deepStrictEqual(inspect(parser, input('> a\n>>1')), [['
a
>>1
'], '']); assert.deepStrictEqual(inspect(parser, input('> a\n> b ')), [['
a
b
'], '']); assert.deepStrictEqual(inspect(parser, input('> a\n>\n')), [['
a
'], '']); assert.deepStrictEqual(inspect(parser, input('> a\n>\nb')), [['
a

b
'], '']); assert.deepStrictEqual(inspect(parser, input('> a\n>\n b ')), [['
a

b
'], '']); assert.deepStrictEqual(inspect(parser, input('> a\n>\n>')), [['
a

'], '']); assert.deepStrictEqual(inspect(parser, input('> a\n>\n>>1')), [['
a

>>1
'], '']); assert.deepStrictEqual(inspect(parser, input('> a\n>\n> b ')), [['
a

b
'], '']); assert.deepStrictEqual(inspect(parser, input('> a\\\nb')), [['
a\\
b
'], '']); assert.deepStrictEqual(inspect(parser, input('> a ')), [['
 a 
'], '']); assert.deepStrictEqual(inspect(parser, input('> \na')), [['

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')), [['
#a
'], '']); assert.deepStrictEqual(inspect(parser, input('> @a#b')), [['
@a#b
'], '']); assert.deepStrictEqual(inspect(parser, input('> >>1\n> > b')), [['
>>1
> b
'], '']); assert.deepStrictEqual(inspect(parser, input('> >>1\n> > b\n> c')), [['
>>1
> b
c
'], '']); }); it('nest', () => { assert.deepStrictEqual(inspect(parser, input('> a\n>>')), [['
a
'], '']); assert.deepStrictEqual(inspect(parser, input('> a\n>> b\n> c')), [['
a
b
c
'], '']); assert.deepStrictEqual(inspect(parser, input('> a\n>> b\n>> c')), [['
a
b
c
'], '']); assert.deepStrictEqual(inspect(parser, input('> a\n>> b\n>>> c')), [['
a
b
c
'], '']); assert.deepStrictEqual(inspect(parser, input('>> a')), [['
a
'], '']); assert.deepStrictEqual(inspect(parser, input('>> a\n>')), [['
a
'], '']); assert.deepStrictEqual(inspect(parser, input('>> a\n> b')), [['
a
b
'], '']); assert.deepStrictEqual(inspect(parser, input('>> a\n>>> b\n> c')), [['
a
b
c
'], '']); assert.deepStrictEqual(inspect(parser, input('>> a\n> b\n>>> c')), [['
a
b
c
'], '']); assert.deepStrictEqual(inspect(parser, input('>>> a\n>> b\n> c')), [['
a
b
c
'], '']); }); it('markdown', () => { assert.deepStrictEqual(inspect(parser, input('!')), undefined); assert.deepStrictEqual(inspect(parser, input('!>')), undefined); assert.deepStrictEqual(inspect(parser, input('!> ')), [['
'], '']); assert.deepStrictEqual(inspect(parser, input('!> \\')), [['

\\

References

    '], '']); assert.deepStrictEqual(inspect(parser, input('!> \\\n')), [['

    \\

    References

      '], '']); assert.deepStrictEqual(inspect(parser, input('!> a')), [['

      a

      References

        '], '']); assert.deepStrictEqual(inspect(parser, input('!> a\n')), [['

        a

        References

          '], '']); assert.deepStrictEqual(inspect(parser, input('!> a\\\nb')), [['

          a
          b

          References

            '], '']); assert.deepStrictEqual(inspect(parser, input('!> ++a\nb++')), [['

            a
            b

            References

              '], '']); assert.deepStrictEqual(inspect(parser, input('!> ++a\n> b++')), [['

              a
              b

              References

                '], '']); assert.deepStrictEqual(inspect(parser, input('!> a \n b c ')), [['

                a
                b c

                References

                  '], '']); assert.deepStrictEqual(inspect(parser, input('!>> a')), [['

                  a

                  References

                    '], '']); assert.deepStrictEqual(inspect(parser, input('!>> a\n> b')), [['

                    a

                    References

                      b

                      References

                        '], '']); assert.deepStrictEqual(inspect(parser, input('!> - a')), [['

                        References

                          '], '']); assert.deepStrictEqual(inspect(parser, input('!> ```\na\n```')), [['
                          a

                          References

                            '], '']); assert.deepStrictEqual(inspect(parser, input('!> ```\n> a\n```')), [['
                            a

                            References

                              '], '']); assert.deepStrictEqual(inspect(parser, input('!> ```\n> a\n> ```')), [['
                              a

                              References

                                '], '']); assert.deepStrictEqual(inspect(parser, input('!> ```\n> a\n> \n> b\n> ```')), [['
                                a

                                b

                                References

                                  '], '']); assert.deepStrictEqual(inspect(parser, input('!> a\n>\n> b')), [['

                                  a

                                  b

                                  References

                                    '], '']); assert.deepStrictEqual(inspect(parser, input('!> > a')), [['
                                    a

                                    References

                                      '], '']); assert.deepStrictEqual(inspect(parser, input('!> > a\n> b')), [['
                                      a
                                      b

                                      References

                                        '], '']); assert.deepStrictEqual(inspect(parser, input('!> > a\n> > b')), [['
                                        a
                                        b

                                        References

                                          '], '']); assert.deepStrictEqual(inspect(parser, input('!> > a\n>> b')), [['
                                          a

                                          References

                                            b

                                            References

                                              '], '']); assert.deepStrictEqual(inspect(parser, input('!>> > a\n> b')), [['
                                              a

                                              References

                                                b

                                                References

                                                  '], '']); assert.deepStrictEqual(inspect(parser, input('!> !> a')), [['

                                                  a

                                                  References

                                                    References

                                                      '], '']); assert.deepStrictEqual(inspect(parser, input('!> \na')), [['

                                                      a

                                                      References

                                                        '], '']); assert.deepStrictEqual(inspect(parser, input('!>> ## a\n> ## a')), [['

                                                        a

                                                        References

                                                          a

                                                          References

                                                            '], '']); assert.deepStrictEqual(inspect(parser, input('!>> ~ a\n> ~ a')), [['
                                                            a

                                                            References

                                                              a

                                                              References

                                                                '], '']); assert.deepStrictEqual(inspect(parser, input('!>> ~~~figure $test-a\n>> > \n>>\n~~~\n> ~~~figure $test-a\n> > \n>\n[#a]\n~~~')), [['
                                                                Test 1.

                                                                References

                                                                  Test 1. a

                                                                  References

                                                                    '], '']); assert.deepStrictEqual(inspect(parser, input('!>> ((a))\n> ((a))')), [['

                                                                    *1

                                                                    1. a^1

                                                                    References

                                                                      *1

                                                                      1. a^1

                                                                      References

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