From 79d1bf30a49e1fd1ef1f8b743a9aff84d104fb89 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 21 Jun 2018 01:21:57 +0900 Subject: リモートユーザーのHTMLで表現されたプロフィールをMFMに変換するように MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/mfm.ts | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ test/text.ts | 117 ----------------------------------------------------------- 2 files changed, 117 insertions(+), 117 deletions(-) create mode 100644 test/mfm.ts delete mode 100644 test/text.ts (limited to 'test') diff --git a/test/mfm.ts b/test/mfm.ts new file mode 100644 index 0000000000..de722bffb3 --- /dev/null +++ b/test/mfm.ts @@ -0,0 +1,117 @@ +import * as assert from 'assert'; + +import analyze from '../src/mfm/parse'; +import syntaxhighlighter from '../src/mfm/parse/core/syntax-highlighter'; + +describe('Text', () => { + it('can be analyzed', () => { + const tokens = analyze('@himawari @hima_sub@namori.net お腹ペコい :cat: #yryr'); + assert.deepEqual([ + { type: 'mention', content: '@himawari', username: 'himawari', host: null }, + { type: 'text', content: ' '}, + { type: 'mention', content: '@hima_sub@namori.net', username: 'hima_sub', host: 'namori.net' }, + { type: 'text', content: ' お腹ペコい ' }, + { type: 'emoji', content: ':cat:', emoji: 'cat'}, + { type: 'text', content: ' '}, + { type: 'hashtag', content: '#yryr', hashtag: 'yryr' } + ], tokens); + }); + + it('can be inverted', () => { + const text = '@himawari @hima_sub@namori.net お腹ペコい :cat: #yryr'; + assert.equal(analyze(text).map(x => x.content).join(''), text); + }); + + describe('elements', () => { + it('bold', () => { + const tokens = analyze('**Strawberry** Pasta'); + assert.deepEqual([ + { type: 'bold', content: '**Strawberry**', bold: 'Strawberry' }, + { type: 'text', content: ' Pasta' } + ], tokens); + }); + + it('mention', () => { + const tokens = analyze('@himawari お腹ペコい'); + assert.deepEqual([ + { type: 'mention', content: '@himawari', username: 'himawari', host: null }, + { type: 'text', content: ' お腹ペコい' } + ], tokens); + }); + + it('remote mention', () => { + const tokens = analyze('@hima_sub@namori.net お腹ペコい'); + assert.deepEqual([ + { type: 'mention', content: '@hima_sub@namori.net', username: 'hima_sub', host: 'namori.net' }, + { type: 'text', content: ' お腹ペコい' } + ], tokens); + }); + + it('hashtag', () => { + const tokens = analyze('Strawberry Pasta #alice'); + assert.deepEqual([ + { type: 'text', content: 'Strawberry Pasta ' }, + { type: 'hashtag', content: '#alice', hashtag: 'alice' } + ], tokens); + }); + + it('url', () => { + const tokens = analyze('https://himasaku.net'); + assert.deepEqual([{ + type: 'url', + content: 'https://himasaku.net', + url: 'https://himasaku.net' + }], tokens); + }); + + it('link', () => { + const tokens = analyze('[ひまさく](https://himasaku.net)'); + assert.deepEqual([{ + type: 'link', + content: '[ひまさく](https://himasaku.net)', + title: 'ひまさく', + url: 'https://himasaku.net', + silent: false + }], tokens); + }); + + it('emoji', () => { + const tokens = analyze(':cat:'); + assert.deepEqual([ + { type: 'emoji', content: ':cat:', emoji: 'cat'} + ], tokens); + }); + + it('block code', () => { + const tokens = analyze('```\nvar x = "Strawberry Pasta";\n```'); + assert.equal(tokens[0].type, 'code'); + assert.equal(tokens[0].content, '```\nvar x = "Strawberry Pasta";\n```'); + }); + + it('inline code', () => { + const tokens = analyze('`var x = "Strawberry Pasta";`'); + assert.equal(tokens[0].type, 'inline-code'); + assert.equal(tokens[0].content, '`var x = "Strawberry Pasta";`'); + }); + }); + + describe('syntax highlighting', () => { + it('comment', () => { + const html1 = syntaxhighlighter('// Strawberry pasta'); + assert.equal(html1, '// Strawberry pasta'); + + const html2 = syntaxhighlighter('x // x\ny // y'); + assert.equal(html2, 'x // x\ny // y'); + }); + + it('regexp', () => { + const html = syntaxhighlighter('/.*/'); + assert.equal(html, '/.*/'); + }); + + it('slash', () => { + const html = syntaxhighlighter('/'); + assert.equal(html, '/'); + }); + }); +}); diff --git a/test/text.ts b/test/text.ts deleted file mode 100644 index a64999fc0b..0000000000 --- a/test/text.ts +++ /dev/null @@ -1,117 +0,0 @@ -import * as assert from 'assert'; - -import analyze from '../src/text/parse'; -import syntaxhighlighter from '../src/text/parse/core/syntax-highlighter'; - -describe('Text', () => { - it('can be analyzed', () => { - const tokens = analyze('@himawari @hima_sub@namori.net お腹ペコい :cat: #yryr'); - assert.deepEqual([ - { type: 'mention', content: '@himawari', username: 'himawari', host: null }, - { type: 'text', content: ' '}, - { type: 'mention', content: '@hima_sub@namori.net', username: 'hima_sub', host: 'namori.net' }, - { type: 'text', content: ' お腹ペコい ' }, - { type: 'emoji', content: ':cat:', emoji: 'cat'}, - { type: 'text', content: ' '}, - { type: 'hashtag', content: '#yryr', hashtag: 'yryr' } - ], tokens); - }); - - it('can be inverted', () => { - const text = '@himawari @hima_sub@namori.net お腹ペコい :cat: #yryr'; - assert.equal(analyze(text).map(x => x.content).join(''), text); - }); - - describe('elements', () => { - it('bold', () => { - const tokens = analyze('**Strawberry** Pasta'); - assert.deepEqual([ - { type: 'bold', content: '**Strawberry**', bold: 'Strawberry' }, - { type: 'text', content: ' Pasta' } - ], tokens); - }); - - it('mention', () => { - const tokens = analyze('@himawari お腹ペコい'); - assert.deepEqual([ - { type: 'mention', content: '@himawari', username: 'himawari', host: null }, - { type: 'text', content: ' お腹ペコい' } - ], tokens); - }); - - it('remote mention', () => { - const tokens = analyze('@hima_sub@namori.net お腹ペコい'); - assert.deepEqual([ - { type: 'mention', content: '@hima_sub@namori.net', username: 'hima_sub', host: 'namori.net' }, - { type: 'text', content: ' お腹ペコい' } - ], tokens); - }); - - it('hashtag', () => { - const tokens = analyze('Strawberry Pasta #alice'); - assert.deepEqual([ - { type: 'text', content: 'Strawberry Pasta ' }, - { type: 'hashtag', content: '#alice', hashtag: 'alice' } - ], tokens); - }); - - it('url', () => { - const tokens = analyze('https://himasaku.net'); - assert.deepEqual([{ - type: 'url', - content: 'https://himasaku.net', - url: 'https://himasaku.net' - }], tokens); - }); - - it('link', () => { - const tokens = analyze('[ひまさく](https://himasaku.net)'); - assert.deepEqual([{ - type: 'link', - content: '[ひまさく](https://himasaku.net)', - title: 'ひまさく', - url: 'https://himasaku.net', - silent: false - }], tokens); - }); - - it('emoji', () => { - const tokens = analyze(':cat:'); - assert.deepEqual([ - { type: 'emoji', content: ':cat:', emoji: 'cat'} - ], tokens); - }); - - it('block code', () => { - const tokens = analyze('```\nvar x = "Strawberry Pasta";\n```'); - assert.equal(tokens[0].type, 'code'); - assert.equal(tokens[0].content, '```\nvar x = "Strawberry Pasta";\n```'); - }); - - it('inline code', () => { - const tokens = analyze('`var x = "Strawberry Pasta";`'); - assert.equal(tokens[0].type, 'inline-code'); - assert.equal(tokens[0].content, '`var x = "Strawberry Pasta";`'); - }); - }); - - describe('syntax highlighting', () => { - it('comment', () => { - const html1 = syntaxhighlighter('// Strawberry pasta'); - assert.equal(html1, '// Strawberry pasta'); - - const html2 = syntaxhighlighter('x // x\ny // y'); - assert.equal(html2, 'x // x\ny // y'); - }); - - it('regexp', () => { - const html = syntaxhighlighter('/.*/'); - assert.equal(html, '/.*/'); - }); - - it('slash', () => { - const html = syntaxhighlighter('/'); - assert.equal(html, '/'); - }); - }); -}); -- cgit v1.2.3-freya