import { quote } from './quote';
import { some } from '../../../combinator';
import { input } from '../../context';
import { inspect } from '../../../debug.test';
describe('Unit: parser/block/reply/quote', () => {
describe('quote', () => {
const parser = some(quote);
it('invalid', () => {
assert.deepStrictEqual(inspect(parser, input('')), undefined);
assert.deepStrictEqual(inspect(parser, input('>')), undefined);
assert.deepStrictEqual(inspect(parser, input('>\n')), undefined);
assert.deepStrictEqual(inspect(parser, input('>>')), undefined);
assert.deepStrictEqual(inspect(parser, input('>0')), undefined);
assert.deepStrictEqual(inspect(parser, input('>>0')), undefined);
assert.deepStrictEqual(inspect(parser, input('>0A')), undefined);
assert.deepStrictEqual(inspect(parser, input('>>0A')), undefined);
assert.deepStrictEqual(inspect(parser, input('>0 a')), undefined);
assert.deepStrictEqual(inspect(parser, input('>>0 a')), undefined);
assert.deepStrictEqual(inspect(parser, input('>A')), undefined);
assert.deepStrictEqual(inspect(parser, input('>A 0')), undefined);
assert.deepStrictEqual(inspect(parser, input('>/')), undefined);
assert.deepStrictEqual(inspect(parser, input('>\\')), undefined);
assert.deepStrictEqual(inspect(parser, input('>>01#')), undefined);
assert.deepStrictEqual(inspect(parser, input('>>01@')), undefined);
assert.deepStrictEqual(inspect(parser, input('>>https://host')), undefined);
assert.deepStrictEqual(inspect(parser, input('>>tel:1234567890')), undefined);
assert.deepStrictEqual(inspect(parser, input('>#a')), undefined);
assert.deepStrictEqual(inspect(parser, input('>A\n> b')), undefined);
assert.deepStrictEqual(inspect(parser, input(' > 0')), undefined);
assert.deepStrictEqual(inspect(parser, input('\\> 0')), undefined);
});
it('valid', () => {
assert.deepStrictEqual(inspect(parser, input('> ')), [['> ', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> 0')), [['> 0', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> a')), [['> a', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> a ')), [['> a ', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> a b')), [['> a b', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> a\n')), [['> a', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> A')), [['> A', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('>> 0')), [['>> 0', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> 0\na')), [['> 0', '
'], 'a']);
assert.deepStrictEqual(inspect(parser, input('> 0\n>')), [['> 0', '
'], '>']);
assert.deepStrictEqual(inspect(parser, input('> 0\n> ')), [['> 0
> ', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> 0\n> 1')), [['> 0
> 1', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> 0\n>> 1')), [['> 0
>> 1', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('>> 0\n> 1')), [['>> 0
> 1', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> \\')), [['> \\', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> >>0\n> > b')), [['> >>0
> > b', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> >>0\n> > b\n> c')), [['> >>0
> > b
> c', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> > a\n> > b\n> > c')), [['> > a
> > b
> > c', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> > > a\n> > > b')), [['> > > a
> > > b', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> #a')), [['> #a', '
'], '']);
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}$', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> http://host)')), [['> http://host)', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> a\n> http://host) \n> b')), [['> a
> http://host)
> b', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> !http://host)')), [['> !http://host)', '
'], '']);
assert.deepStrictEqual(inspect(parser, input('> a\n> !http://host) \n> b')), [['> a
> !http://host)
> b', '
'], '']);
});
});
});