package html import ( "testing" "github.com/stretchr/testify/require" "github.com/usememos/memos/plugin/gomark/parser" "github.com/usememos/memos/plugin/gomark/parser/tokenizer" ) func TestHTMLRenderer(t *testing.T) { tests := []struct { text string expected string }{ { text: "Hello world!", expected: `

Hello world!

`, }, { text: "# Hello world!", expected: `

Hello world!

`, }, { text: "> Hello\n> world!", expected: `

Hello

world!

`, }, { text: "*Hello* world!", expected: `

Hello world!

`, }, { text: "Hello world!\n\nNew paragraph.", expected: "

Hello world!


New paragraph.

", }, { text: "**Hello** world!", expected: `

Hello world!

`, }, { text: "#article #memo", expected: `

#article #memo

`, }, { text: "#article \\#memo", expected: `

#article \#memo

`, }, { text: "* Hello\n* world!", expected: ``, }, { text: "1. Hello\n2. world\n* !", expected: `
  1. Hello
  2. world
`, }, { text: "- [ ] hello\n- [x] world", expected: ``, }, { text: "1. ordered\n* unorder\n- [ ] checkbox\n- [x] checked", expected: `
  1. ordered
`, }, } for _, test := range tests { tokens := tokenizer.Tokenize(test.text) nodes, err := parser.Parse(tokens) require.NoError(t, err) actual := NewHTMLRenderer().Render(nodes) require.Equal(t, test.expected, actual) } }