From 87cb008c260289477485d1b403aff3216c3b90c9 Mon Sep 17 00:00:00 2001 From: syuilo <Syuilotan@yahoo.co.jp> Date: Sat, 5 Jun 2021 16:34:38 +0900 Subject: [PATCH] Add hashtag tests --- test/parser.ts | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/test/parser.ts b/test/parser.ts index 90b213c..c9208de 100644 --- a/test/parser.ts +++ b/test/parser.ts @@ -625,6 +625,96 @@ describe('FullParser', () => { output = [TEXT('ã‚ã„ã†'), HASHTAG('abc')]; assert.deepStrictEqual(mfm.parse(input), output); }); + + it('ignore comma and period', () => { + const input = 'Foo #bar, baz #piyo.'; + const output = [TEXT('Foo '), HASHTAG('bar'), TEXT(', baz '), HASHTAG('piyo'), TEXT('.')]; + assert.deepStrictEqual(mfm.parse(input), output); + }); + + it('ignore exclamation mark', () => { + const input = '#Foo!'; + const output = [HASHTAG('Foo'), TEXT('!')]; + assert.deepStrictEqual(mfm.parse(input), output); + }); + + it('ignore colon', () => { + const input = '#Foo:'; + const output = [HASHTAG('Foo'), TEXT(':')]; + assert.deepStrictEqual(mfm.parse(input), output); + }); + + it('ignore single quote', () => { + const input = '#Foo\''; + const output = [HASHTAG('Foo'), TEXT('\'')]; + assert.deepStrictEqual(mfm.parse(input), output); + }); + + it('ignore double quote', () => { + const input = '#Foo"'; + const output = [HASHTAG('Foo'), TEXT('"')]; + assert.deepStrictEqual(mfm.parse(input), output); + }); + + it('ignore square bracket', () => { + const input = '#Foo]'; + const output = [HASHTAG('Foo'), TEXT(']')]; + assert.deepStrictEqual(mfm.parse(input), output); + }); + + it('ignore slash', () => { + const input = '#foo/bar'; + const output = [HASHTAG('foo'), TEXT('/bar')]; + assert.deepStrictEqual(mfm.parse(input), output); + }); + + it('allow including number', () => { + const input = '#foo123'; + const output = [HASHTAG('foo123')]; + assert.deepStrictEqual(mfm.parse(input), output); + }); + + it('with brackets "()"', () => { + const input = '(#foo)'; + const output = [TEXT('('), HASHTAG('foo'), TEXT(')')]; + assert.deepStrictEqual(mfm.parse(input), output); + }); + + it('with brackets "「ã€"', () => { + const input = '「#fooã€'; + const output = [TEXT('「'), HASHTAG('foo'), TEXT('ã€')]; + assert.deepStrictEqual(mfm.parse(input), output); + }); + + it('with mixed brackets', () => { + const input = '「#foo(bar)ã€'; + const output = [TEXT('「'), HASHTAG('foo(bar)'), TEXT('ã€')]; + assert.deepStrictEqual(mfm.parse(input), output); + }); + + it('with brackets "()" (space before)', () => { + const input = '(bar #foo)'; + const output = [TEXT('(bar '), HASHTAG('foo'), TEXT(')')]; + assert.deepStrictEqual(mfm.parse(input), output); + }); + + it('with brackets "「ã€" (space before)', () => { + const input = '「bar #fooã€'; + const output = [TEXT('「bar '), HASHTAG('foo'), TEXT('ã€')]; + assert.deepStrictEqual(mfm.parse(input), output); + }); + + it('disallow number only', () => { + const input = '#123'; + const output = [TEXT('#123')]; + assert.deepStrictEqual(mfm.parse(input), output); + }); + + it('disallow number only (with brackets)', () => { + const input = '(#123)'; + const output = [TEXT('(#123)')]; + assert.deepStrictEqual(mfm.parse(input), output); + }); }); describe('url', () => { -- GitLab