md_test.gno
4.30 Kb ยท 175 lines
1package md
2
3import (
4 "testing"
5
6 "gno.land/p/nt/uassert"
7 "gno.land/p/sunspirit/table"
8)
9
10func TestNewBuilder(t *testing.T) {
11 mdBuilder := NewBuilder()
12
13 uassert.Equal(t, len(mdBuilder.elements), 0, "Expected 0 elements")
14}
15
16func TestAdd(t *testing.T) {
17 mdBuilder := NewBuilder()
18
19 header := H1("Hi")
20 body := Paragraph("This is a test")
21
22 mdBuilder.Add(header, body)
23
24 uassert.Equal(t, len(mdBuilder.elements), 2, "Expected 2 element")
25 uassert.Equal(t, mdBuilder.elements[0], header, "Expected element %s, got %s", header, mdBuilder.elements[0])
26 uassert.Equal(t, mdBuilder.elements[1], body, "Expected element %s, got %s", body, mdBuilder.elements[1])
27}
28
29func TestRender(t *testing.T) {
30 mdBuilder := NewBuilder()
31
32 header := H1("Hello")
33 body := Paragraph("This is a test")
34
35 seperator := "\n"
36 expected := header + seperator + body
37
38 output := mdBuilder.Add(header, body).Render(seperator)
39
40 uassert.Equal(t, output, expected, "Expected rendered string %s, got %s", expected, output)
41}
42
43func Test_Bold(t *testing.T) {
44 uassert.Equal(t, Bold("Hello"), "**Hello**")
45}
46
47func Test_Italic(t *testing.T) {
48 uassert.Equal(t, Italic("Hello"), "*Hello*")
49}
50
51func Test_Strikethrough(t *testing.T) {
52 uassert.Equal(t, Strikethrough("Hello"), "~~Hello~~")
53}
54
55func Test_H1(t *testing.T) {
56 uassert.Equal(t, H1("Header 1"), "# Header 1\n")
57}
58
59func Test_H2(t *testing.T) {
60 uassert.Equal(t, H2("Header 2"), "## Header 2\n")
61}
62
63func Test_H3(t *testing.T) {
64 uassert.Equal(t, H3("Header 3"), "### Header 3\n")
65}
66
67func Test_H4(t *testing.T) {
68 uassert.Equal(t, H4("Header 4"), "#### Header 4\n")
69}
70
71func Test_H5(t *testing.T) {
72 uassert.Equal(t, H5("Header 5"), "##### Header 5\n")
73}
74
75func Test_H6(t *testing.T) {
76 uassert.Equal(t, H6("Header 6"), "###### Header 6\n")
77}
78
79func Test_BulletList(t *testing.T) {
80 items := []string{"Item 1", "Item 2", "Item 3"}
81 result := BulletList(items)
82 expected := "- Item 1\n- Item 2\n- Item 3\n"
83 uassert.Equal(t, result, expected)
84}
85
86func Test_OrderedList(t *testing.T) {
87 items := []string{"Item 1", "Item 2", "Item 3"}
88 result := OrderedList(items)
89 expected := "1. Item 1\n2. Item 2\n3. Item 3\n"
90 uassert.Equal(t, result, expected)
91}
92
93func Test_TodoList(t *testing.T) {
94 items := []string{"Task 1", "Task 2"}
95 done := []bool{true, false}
96 result := TodoList(items, done)
97 expected := "- [x] Task 1\n- [ ] Task 2\n"
98 uassert.Equal(t, result, expected)
99}
100
101func Test_Blockquote(t *testing.T) {
102 text := "This is a blockquote.\nIt has multiple lines."
103 result := Blockquote(text)
104 expected := "> This is a blockquote.\n> It has multiple lines.\n"
105 uassert.Equal(t, result, expected)
106}
107
108func Test_InlineCode(t *testing.T) {
109 result := InlineCode("code")
110 uassert.Equal(t, result, "`code`")
111}
112
113func Test_LanguageCodeBlock(t *testing.T) {
114 result := LanguageCodeBlock("python", "print('Hello')")
115 expected := "```python\nprint('Hello')\n```"
116 uassert.Equal(t, result, expected)
117}
118
119func Test_CodeBlock(t *testing.T) {
120 result := CodeBlock("print('Hello')")
121 expected := "```\nprint('Hello')\n```"
122 uassert.Equal(t, result, expected)
123}
124
125func Test_LineBreak(t *testing.T) {
126 result := LineBreak(2)
127 expected := "\n\n\n"
128 uassert.Equal(t, result, expected)
129
130 result = LineBreak(0)
131 expected = ""
132 uassert.Equal(t, result, expected)
133}
134
135func Test_HorizontalRule(t *testing.T) {
136 result := HorizontalRule()
137 uassert.Equal(t, result, "---\n")
138}
139
140func Test_Link(t *testing.T) {
141 result := Link("Google", "http://google.com")
142 uassert.Equal(t, result, "[Google](http://google.com)")
143}
144
145func Test_Image(t *testing.T) {
146 result := Image("Alt text", "http://image.url")
147 uassert.Equal(t, result, "")
148}
149
150func Test_Footnote(t *testing.T) {
151 result := Footnote("1", "This is a footnote.")
152 uassert.Equal(t, result, "[1]: This is a footnote.")
153}
154
155func Test_Paragraph(t *testing.T) {
156 result := Paragraph("This is a paragraph.")
157 uassert.Equal(t, result, "This is a paragraph.\n")
158}
159
160func Test_Table(t *testing.T) {
161 tb, err := table.New([]string{"Header1", "Header2"}, [][]string{
162 {"Row1Col1", "Row1Col2"},
163 {"Row2Col1", "Row2Col2"},
164 })
165 uassert.NoError(t, err)
166
167 result := Table(tb)
168 expected := "| Header1 | Header2 |\n| ---|---|\n| Row1Col1 | Row1Col2 |\n| Row2Col1 | Row2Col2 |\n"
169 uassert.Equal(t, result, expected)
170}
171
172func Test_EscapeMarkdown(t *testing.T) {
173 result := EscapeMarkdown("- This is `code`")
174 uassert.Equal(t, result, "``- This is `code```")
175}