1package list
2
3import (
4 "testing"
5)
6
7func TestNewList(t *testing.T) {
8 items := []Item{
9 NewStringItem("Item 1"),
10 NewStringItem("Item 2"),
11 NewStringItem("Item 3"),
12 }
13
14 var defaultRend DefaultItemRenderer
15 list := New(&defaultRend, items...)
16
17 if list.Len() != len(items) {
18 t.Errorf("expected list count %d, got %d", len(items), list.Len())
19 }
20
21 rendered := list.Render()
22 expected := "Item 1\nItem 2\nItem 3"
23 if rendered != expected {
24 t.Errorf("expected rendered output:\n%s\ngot:\n%s", expected, rendered)
25 }
26}
27
28func TestListAppend(t *testing.T) {
29 var defaultRend DefaultItemRenderer
30 list := New(&defaultRend,
31 NewStringItem("Item 1"),
32 )
33
34 list.Append(
35 NewStringItem("Item 2"),
36 NewStringItem("Item 3"),
37 )
38
39 if list.Len() != 3 {
40 t.Errorf("expected list count 3, got %d", list.Len())
41 }
42
43 rendered := list.Render()
44 expected := "Item 1\nItem 2\nItem 3"
45 if rendered != expected {
46 t.Errorf("expected rendered output:\n%s\ngot:\n%s", expected, rendered)
47 }
48}
49
50func TestListUpdate(t *testing.T) {
51 var defaultRend DefaultItemRenderer
52 list := New(&defaultRend,
53 NewStringItem("Item 1"),
54 NewStringItem("Item 2"),
55 )
56
57 updated := list.Update(1, NewStringItem("Updated Item 2"))
58 if !updated {
59 t.Errorf("expected update to succeed")
60 }
61
62 rendered := list.Render()
63 expected := "Item 1\nUpdated Item 2"
64 if rendered != expected {
65 t.Errorf("expected rendered output:\n%s\ngot:\n%s", expected, rendered)
66 }
67}
68
69func TestListDelete(t *testing.T) {
70 var defaultRend DefaultItemRenderer
71 list := New(&defaultRend,
72 NewStringItem("Item 1"),
73 NewStringItem("Item 2"),
74 NewStringItem("Item 3"),
75 )
76
77 deleted := list.Delete(1)
78 if !deleted {
79 t.Errorf("expected delete to succeed")
80 }
81
82 if list.Len() != 2 {
83 t.Errorf("expected list count 2, got %d", list.Len())
84 }
85
86 rendered := list.Render()
87 expected := "Item 1\nItem 3"
88 if rendered != expected {
89 t.Errorf("expected rendered output:\n%s\ngot:\n%s", expected, rendered)
90 }
91}