1 package list
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 )
8
9 var (
10 testCSSClass = "test-css-class"
11 testItem1 = "Game Of Thrones"
12 testItem1ML = testItem1 + "\n\t// George. R. R. Martin"
13 testItems2 = []interface{}{"Winter", "Is", "Coming"}
14 testItems2ML = []interface{}{"Winter\r\nIs\nComing", "Is", "Coming"}
15 testItems3 = []interface{}{"This", "Is", "Known"}
16 testItems3ML = []interface{}{"This\nIs\nKnown", "Is", "Known"}
17 testItem4 = "The Dark Tower"
18 testItem4ML = testItem4 + "\n\t// Stephen King"
19 testItem5 = "The Gunslinger"
20 )
21
22 type myMockOutputMirror struct {
23 mirroredOutput string
24 }
25
26 func (t *myMockOutputMirror) Write(p []byte) (n int, err error) {
27 t.mirroredOutput += string(p)
28 return len(p), nil
29 }
30
31 func TestNewWriter(t *testing.T) {
32 lw := NewWriter()
33 assert.NotNil(t, lw.Style())
34 assert.Equal(t, StyleDefault, *lw.Style())
35
36 lw.SetStyle(StyleConnectedBold)
37 assert.NotNil(t, lw.Style())
38 assert.Equal(t, StyleConnectedBold, *lw.Style())
39 }
40
41 func TestList_AppendItem(t *testing.T) {
42 list := List{}
43 assert.Equal(t, 0, list.Length())
44
45 list.AppendItem(testItem1)
46 list.AppendItem(testItem1)
47 assert.Equal(t, 2, list.Length())
48 }
49
50 func TestList_AppendItems(t *testing.T) {
51 list := List{}
52 assert.Equal(t, 0, list.Length())
53
54 list.AppendItems(testItems2)
55 assert.Equal(t, len(testItems2), list.Length())
56 }
57
58 func TestList_Indent(t *testing.T) {
59 list := List{}
60 assert.Equal(t, 0, list.level)
61
62
63 list.Indent()
64 assert.Equal(t, 0, list.level)
65
66
67 list.AppendItem(testItem1)
68 list.Indent()
69 assert.Equal(t, 1, list.level)
70
71
72 list.Indent()
73 assert.Equal(t, 1, list.level)
74 }
75
76 func TestList_Length(t *testing.T) {
77 list := List{}
78 assert.Equal(t, 0, list.Length())
79
80 list.AppendItem(testItem1)
81 assert.Equal(t, 1, list.Length())
82 }
83
84 func TestList_Reset(t *testing.T) {
85 list := List{}
86 list.SetStyle(StyleBulletCircle)
87 assert.Equal(t, "", list.Render())
88
89 list.AppendItem(testItem1)
90 assert.Equal(t, "● Game Of Thrones", list.Render())
91
92 list.Reset()
93 assert.Equal(t, "", list.Render())
94 }
95
96 func TestList_SetHTMLCSSClass(t *testing.T) {
97 list := List{}
98 assert.Empty(t, list.htmlCSSClass)
99
100 list.SetHTMLCSSClass(testCSSClass)
101 assert.Equal(t, testCSSClass, list.htmlCSSClass)
102 }
103
104 func TestList_SetOutputMirror(t *testing.T) {
105 list := List{}
106 list.AppendItem(testItem1)
107 expectedOut := "* Game Of Thrones"
108 assert.Equal(t, nil, list.outputMirror)
109 assert.Equal(t, expectedOut, list.Render())
110
111 mockOutputMirror := &myMockOutputMirror{}
112 list.SetOutputMirror(mockOutputMirror)
113 assert.Equal(t, mockOutputMirror, list.outputMirror)
114 assert.Equal(t, expectedOut, list.Render())
115 assert.Equal(t, expectedOut+"\n", mockOutputMirror.mirroredOutput)
116 }
117
118 func TestList_SetStyle(t *testing.T) {
119 list := List{}
120 assert.NotNil(t, list.Style())
121 list.AppendItem(testItem1)
122 list.Indent()
123 list.AppendItems(testItems2)
124 expectedOut := `* Game Of Thrones
125 * Winter
126 * Is
127 * Coming`
128 assert.Equal(t, expectedOut, list.Render())
129
130 list.SetStyle(StyleConnectedLight)
131 assert.NotNil(t, list.Style())
132 assert.Equal(t, &StyleConnectedLight, list.Style())
133 expectedOut = `── Game Of Thrones
134 ├─ Winter
135 ├─ Is
136 └─ Coming`
137 assert.Equal(t, expectedOut, list.Render())
138 }
139
140 func TestList_UnIndent(t *testing.T) {
141 list := List{level: 2}
142
143 list.UnIndent()
144 assert.Equal(t, 1, list.level)
145
146 list.UnIndent()
147 assert.Equal(t, 0, list.level)
148
149 list.UnIndent()
150 assert.Equal(t, 0, list.level)
151 }
152
153 func TestList_UnIndentAll(t *testing.T) {
154 list := List{level: 3}
155
156 list.UnIndentAll()
157 assert.Equal(t, 0, list.level)
158
159
160 list.UnIndentAll()
161 assert.Equal(t, 0, list.level)
162 }
163
View as plain text