import { autolink } from '../autolink';
import { some } from '../../../combinator';
import { input } from '../../context';
import { inspect } from '../../../debug.test';
describe('Unit: parser/inline/autolink/hashtag', () => {
describe('hashtag', () => {
const parser = some(autolink);
it('invalid', () => {
assert.deepStrictEqual(inspect(parser, input('')), undefined);
assert.deepStrictEqual(inspect(parser, input('#')), undefined);
assert.deepStrictEqual(inspect(parser, input('# ')), undefined);
assert.deepStrictEqual(inspect(parser, input('#a#')), 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')), undefined);
assert.deepStrictEqual(inspect(parser, input('#@')), undefined);
assert.deepStrictEqual(inspect(parser, input('#@a')), undefined);
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('##a')), undefined);
assert.deepStrictEqual(inspect(parser, input('###a')), undefined);
assert.deepStrictEqual(inspect(parser, input(`#'`)), undefined);
assert.deepStrictEqual(inspect(parser, input(`#'0`)), undefined);
assert.deepStrictEqual(inspect(parser, input(`#'00`)), undefined);
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('#{}')), undefined);
assert.deepStrictEqual(inspect(parser, input('#{{}')), undefined);
assert.deepStrictEqual(inspect(parser, input('#{}}')), undefined);
assert.deepStrictEqual(inspect(parser, input('#{#}')), undefined);
assert.deepStrictEqual(inspect(parser, input('#{a}')), undefined);
assert.deepStrictEqual(inspect(parser, input('#12345a')), undefined);
assert.deepStrictEqual(inspect(parser, input('#γ')), undefined);
assert.deepStrictEqual(inspect(parser, input(' #a')), undefined);
});
it('valid', () => {
assert.deepStrictEqual(inspect(parser, input('#a')), [['#a'], '']);
assert.deepStrictEqual(inspect(parser, input('#a ')), [['#a'], ' ']);
assert.deepStrictEqual(inspect(parser, input('#a\n')), [['#a'], '\n']);
assert.deepStrictEqual(inspect(parser, input('#a\\')), [['#a'], '\\']);
assert.deepStrictEqual(inspect(parser, input('#a\\ ')), [['#a'], '\\ ']);
assert.deepStrictEqual(inspect(parser, input('#a\\\n')), [['#a'], '\\\n']);
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('#a_b')), [['#a_b'], '']);
assert.deepStrictEqual(inspect(parser, input('#a__b')), [['#a'], '__b']);
assert.deepStrictEqual(inspect(parser, input('#γ')), [['#γ'], '']);
assert.deepStrictEqual(inspect(parser, input('#π')), [['#π'], '']);
assert.deepStrictEqual(inspect(parser, input('#π€π½')), [['#π€π½'], '']);
assert.deepStrictEqual(inspect(parser, input('#π¨βπ©βπ§')), [['#π¨βπ©βπ§'], '']);
assert.deepStrictEqual(inspect(parser, input('#πΊπ³')), [['#πΊπ³'], '']);
assert.deepStrictEqual(inspect(parser, input('##οΈβ£*οΈβ£0οΈβ£1οΈβ£2οΈβ£3οΈβ£4οΈβ£5οΈβ£6οΈβ£7οΈβ£8οΈβ£9οΈβ£')), [['##οΈβ£*οΈβ£0οΈβ£1οΈβ£2οΈβ£3οΈβ£4οΈβ£5οΈβ£6οΈβ£7οΈβ£8οΈβ£9οΈβ£'], '']);
assert.deepStrictEqual(inspect(parser, input('#1a')), [['#1a'], '']);
assert.deepStrictEqual(inspect(parser, input('#1γ')), [['#1γ'], '']);
assert.deepStrictEqual(inspect(parser, input('#1π')), [['#1π'], '']);
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'0`)), [[`#a'0`], '']);
assert.deepStrictEqual(inspect(parser, input(`#a'_b`)), [[`#a`], `'_b`]);
assert.deepStrictEqual(inspect(parser, input(`#a_'b`)), [[`#a`], `_'b`]);
assert.deepStrictEqual(inspect(parser, input('#1234a')), [['#1234a'], '']);
assert.deepStrictEqual(inspect(parser, input('#a+b')), [['#a'], '+b']);
});
});
});