import { autolink } from '../autolink'; import { some } from '../../../combinator'; import { input } from '../../context'; import { inspect } from '../../../debug.test'; describe('Unit: parser/inline/autolink/email', () => { describe('email', () => { const parser = some(autolink); it('invalid', () => { assert.deepStrictEqual(inspect(parser, input('')), undefined); assert.deepStrictEqual(inspect(parser, input('a@')), undefined); assert.deepStrictEqual(inspect(parser, input('a@+')), undefined); assert.deepStrictEqual(inspect(parser, input('a@_')), undefined); assert.deepStrictEqual(inspect(parser, input('a@-')), undefined); assert.deepStrictEqual(inspect(parser, input('a@.')), undefined); assert.deepStrictEqual(inspect(parser, input('a@b@')), undefined); assert.deepStrictEqual(inspect(parser, input('a@bc@')), undefined); assert.deepStrictEqual(inspect(parser, input('a@b@c')), undefined); assert.deepStrictEqual(inspect(parser, input('a@b#')), undefined); assert.deepStrictEqual(inspect(parser, input('a@b#1')), undefined); assert.deepStrictEqual(inspect(parser, input('a@@')), undefined); assert.deepStrictEqual(inspect(parser, input('a@@b')), undefined); assert.deepStrictEqual(inspect(parser, input('a+@b')), undefined); assert.deepStrictEqual(inspect(parser, input('a__b@c')), undefined); assert.deepStrictEqual(inspect(parser, input('a..b@c')), undefined); assert.deepStrictEqual(inspect(parser, input('a++b@c')), undefined); assert.deepStrictEqual(inspect(parser, input('a@b_c')), undefined); assert.deepStrictEqual(inspect(parser, input('a@b.c:d')), undefined); assert.deepStrictEqual(inspect(parser, input('a@b.domain.com:c')), undefined); assert.deepStrictEqual(inspect(parser, input('a@http://host')), undefined); assert.deepStrictEqual(inspect(parser, input(' a@b')), undefined); }); it('valid', () => { assert.deepStrictEqual(inspect(parser, input('a@0')), [['a@0'], '']); assert.deepStrictEqual(inspect(parser, input('a@b')), [['a@b'], '']); assert.deepStrictEqual(inspect(parser, input('a@A')), [['a@A'], '']); assert.deepStrictEqual(inspect(parser, input('a@b+')), [['a@b'], '+']); assert.deepStrictEqual(inspect(parser, input('a@b+c')), [['a@b'], '+c']); assert.deepStrictEqual(inspect(parser, input('a@b-')), [['a@b'], '-']); assert.deepStrictEqual(inspect(parser, input('a@b-c')), [['a@b-c'], '']); assert.deepStrictEqual(inspect(parser, input('a@b--c')), [['a@b'], '--c']); assert.deepStrictEqual(inspect(parser, input('a@b_')), [['a@b'], '_']); assert.deepStrictEqual(inspect(parser, input('a@b.')), [['a@b'], '.']); assert.deepStrictEqual(inspect(parser, input('a@b.c')), [['a@b.c'], '']); assert.deepStrictEqual(inspect(parser, input('a@b..c')), [['a@b'], '..c']); assert.deepStrictEqual(inspect(parser, input('ab+cd@0')), [['ab+cd@0'], '']); }); }); });