dh_demo

DreamHanks demo project
git clone git://git.lair.cx/dh_demo
Log | Files | Refs | README

parse_inline.test.ts (1896B)


      1 import { parseInline } from '@/lib/markup/parse_inline'
      2 import { InlineToken } from '@/lib/markup/token'
      3 
      4 const inlineTests: Array<{
      5   name: string
      6   input: string
      7   expected: InlineToken[]
      8 }> = [
      9   {
     10     name: 'simple',
     11     input: 'Hello, world!',
     12     expected: [
     13       { key: 'text', text: 'Hello, world!' },
     14     ],
     15   },
     16   {
     17     name: 'bold',
     18     input: '**Hello, world!**',
     19     expected: [
     20       { key: 'bold', text: 'Hello, world!' },
     21     ],
     22   },
     23   {
     24     name: 'italic',
     25     input: '//Hello, world!//',
     26     expected: [
     27       { key: 'italic', text: 'Hello, world!' },
     28     ],
     29   },
     30   {
     31     name: 'underline',
     32     input: '__Hello, world!__',
     33     expected: [
     34       { key: 'underline', text: 'Hello, world!' },
     35     ],
     36   },
     37   {
     38     name: 'strikethrough',
     39     input: '~~Hello, world!~~',
     40     expected: [
     41       { key: 'strikethrough', text: 'Hello, world!' },
     42     ],
     43   },
     44   {
     45     name: 'code',
     46     input: '`Hello, world!`',
     47     expected: [
     48       { key: 'code', text: 'Hello, world!' },
     49     ],
     50   },
     51   {
     52     name: 'link',
     53     input: '[[Hello, world!]]',
     54     expected: [
     55       { key: 'link', path: 'Hello, world!', text: 'Hello, world!' },
     56     ],
     57   },
     58   {
     59     name: 'link with text',
     60     input: '[[Hello, world!|Hello, world!]]',
     61     expected: [
     62       { key: 'link', path: 'Hello, world!', text: 'Hello, world!' },
     63     ],
     64   },
     65   {
     66     name: 'multiple',
     67     input: '**Hello**, //world!//',
     68     expected: [
     69       { key: 'bold', text: 'Hello' },
     70       { key: 'text', text: ', ' },
     71       { key: 'italic', text: 'world!' },
     72     ],
     73   },
     74   {
     75     name: 'multiple lines',
     76     input: 'Hello,\nworld!',
     77     expected: [
     78       { key: 'text', text: 'Hello,' },
     79       { key: 'linebreak' },
     80       { key: 'text', text: 'world!' },
     81     ],
     82   }
     83 ]
     84 
     85 describe('Inline', function () {
     86   for (const test of inlineTests) {
     87     it(test.name, function () {
     88       expect(parseInline(test.input)).toEqual(test.expected)
     89     })
     90   }
     91 })