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']); }); }); });