Skip to content

Commit 37691e1

Browse files
committed
add unit test for LinkedStack
1 parent b1b88e8 commit 37691e1

File tree

1 file changed

+182
-0
lines changed

1 file changed

+182
-0
lines changed

linked_stack_test.go

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,231 @@
11
package stack
22

33
import (
4+
"errors"
45
"fmt"
56
"github.com/stretchr/testify/assert"
67
"testing"
78
)
89

10+
// ------------------------------------------------ ---------------------------------------------------------------------
11+
912
func TestLinkedStack_Clear(t *testing.T) {
13+
stack := NewLinkedStack[int]()
14+
stack.Push(1)
15+
assert.Equal(t, 1, stack.Size())
16+
stack.Clear()
17+
assert.Equal(t, 0, stack.Size())
18+
}
1019

20+
func ExampleLinkedStack_Clear() {
21+
stack := NewLinkedStack[int]()
22+
stack.Push(1)
23+
fmt.Println(stack.Size())
24+
stack.Clear()
25+
fmt.Println(stack.Size())
26+
// Output:
27+
// 1
28+
// 0
1129
}
1230

31+
// ------------------------------------------------ ---------------------------------------------------------------------
32+
1333
func TestLinkedStack_IsEmpty(t *testing.T) {
34+
stack := NewLinkedStack[int]()
35+
assert.Equal(t, true, stack.IsEmpty())
36+
stack.Push(1)
37+
assert.Equal(t, false, stack.IsEmpty())
38+
}
1439

40+
func ExampleLinkedStack_IsEmpty() {
41+
stack := NewLinkedStack[int]()
42+
fmt.Println(stack.IsEmpty())
43+
stack.Push(1)
44+
fmt.Println(stack.IsEmpty())
45+
// Output:
46+
// true
47+
// false
1548
}
1649

50+
// ------------------------------------------------ ---------------------------------------------------------------------
51+
1752
func TestLinkedStack_IsNotEmpty(t *testing.T) {
53+
stack := NewLinkedStack[int]()
54+
assert.Equal(t, false, stack.IsNotEmpty())
55+
stack.Push(1)
56+
assert.Equal(t, true, stack.IsNotEmpty())
57+
}
1858

59+
func ExampleLinkedStack_IsNotEmpty() {
60+
stack := NewLinkedStack[int]()
61+
fmt.Println(stack.IsNotEmpty())
62+
stack.Push(1)
63+
fmt.Println(stack.IsNotEmpty())
64+
// Output:
65+
// false
66+
// true
1967
}
2068

69+
// ------------------------------------------------ ---------------------------------------------------------------------
70+
2171
func TestLinkedStack_Peek(t *testing.T) {
72+
type User struct {
73+
}
74+
stack := NewLinkedStack[*User]()
75+
assert.Nil(t, stack.Peek())
76+
u := &User{}
77+
stack.Push(u)
78+
assert.Equal(t, u, stack.Peek())
79+
}
2280

81+
func ExampleLinkedStack_Peek() {
82+
type User struct {
83+
}
84+
stack := NewLinkedStack[*User]()
85+
fmt.Println(stack.Peek())
86+
u := &User{}
87+
stack.Push(u)
88+
fmt.Println(stack.Peek())
89+
// Output:
90+
// <nil>
91+
// &{}
2392
}
2493

94+
// ------------------------------------------------ ---------------------------------------------------------------------
95+
2596
func TestLinkedStack_PeekE(t *testing.T) {
97+
stack := NewLinkedStack[int]()
98+
element, err := stack.PeekE()
99+
assert.Equal(t, 0, element)
100+
assert.ErrorIs(t, ErrStackEmpty, err)
101+
102+
stack.Push(1)
103+
element, err = stack.PeekE()
104+
assert.Nil(t, err)
105+
assert.Equal(t, 1, element)
106+
}
26107

108+
func ExampleLinkedStack_PeekE() {
109+
stack := NewLinkedStack[int]()
110+
element, err := stack.PeekE()
111+
if errors.Is(err, ErrStackEmpty) {
112+
fmt.Println("stack empty!")
113+
}
114+
115+
stack.Push(1)
116+
element, err = stack.PeekE()
117+
if err != nil {
118+
fmt.Println(err.Error())
119+
return
120+
}
121+
fmt.Println(element)
122+
// Output:
123+
// stack empty!
124+
// 1
27125
}
28126

127+
// ------------------------------------------------ ---------------------------------------------------------------------
128+
29129
func TestLinkedStack_Pop(t *testing.T) {
130+
type User struct {
131+
}
132+
stack := NewLinkedStack[*User]()
133+
assert.Nil(t, stack.Pop())
134+
u := &User{}
135+
stack.Push(u)
136+
assert.Equal(t, u, stack.Pop())
137+
}
30138

139+
func ExampleLinkedStack_Pop() {
140+
type User struct {
141+
}
142+
stack := NewLinkedStack[*User]()
143+
fmt.Println(stack.Pop())
144+
u := &User{}
145+
stack.Push(u)
146+
fmt.Println(stack.Pop())
147+
// Output:
148+
// <nil>
149+
// &{}
31150
}
32151

152+
// ------------------------------------------------ ---------------------------------------------------------------------
153+
33154
func TestLinkedStack_PopE(t *testing.T) {
155+
stack := NewLinkedStack[int]()
156+
element, err := stack.PopE()
157+
assert.Equal(t, 0, element)
158+
assert.ErrorIs(t, ErrStackEmpty, err)
159+
160+
stack.Push(1)
161+
element, err = stack.PopE()
162+
assert.Nil(t, err)
163+
assert.Equal(t, 1, element)
164+
}
34165

166+
func ExampleLinkedStack_PopE() {
167+
stack := NewLinkedStack[int]()
168+
element, err := stack.PopE()
169+
if errors.Is(err, ErrStackEmpty) {
170+
fmt.Println("stack empty!")
171+
}
172+
173+
stack.Push(1)
174+
element, err = stack.PopE()
175+
if err != nil {
176+
fmt.Println(err.Error())
177+
return
178+
}
179+
fmt.Println(element)
180+
// Output:
181+
// stack empty!
182+
// 1
35183
}
36184

185+
// ------------------------------------------------ ---------------------------------------------------------------------
186+
37187
func TestLinkedStack_Push(t *testing.T) {
188+
stack := NewLinkedStack[int]()
189+
stack.Push(1)
190+
}
38191

192+
func ExampleLinkedStack_Push() {
193+
stack := NewLinkedStack[int]()
194+
stack.Push(1)
195+
// Output:
196+
//
39197
}
40198

199+
// ------------------------------------------------ ---------------------------------------------------------------------
200+
41201
func TestLinkedStack_Size(t *testing.T) {
202+
stack := NewLinkedStack[int]()
203+
stack.Push(1)
204+
assert.Equal(t, 1, stack.Size())
205+
}
42206

207+
func ExampleLinkedStack_Size() {
208+
stack := NewLinkedStack[int]()
209+
stack.Push(1)
210+
fmt.Println(stack.Size())
211+
// Output:
212+
// 1
43213
}
44214

215+
// ------------------------------------------------ ---------------------------------------------------------------------
216+
45217
func TestLinkedStack_String(t *testing.T) {
218+
stack := NewLinkedStack[int]()
219+
stack.Push(1)
220+
assert.Equal(t, "[1]", stack.String())
221+
}
46222

223+
func ExampleLinkedStack_String() {
224+
stack := NewLinkedStack[int]()
225+
stack.Push(1)
226+
fmt.Println(stack.String())
227+
// Output:
228+
// [1]
47229
}
48230

49231
// ------------------------------------------------ ---------------------------------------------------------------------

0 commit comments

Comments
 (0)