github.com/frodejac/aoc-2022@v0.0.0-20221213081734-037c741b1c89/pkg/datastructures/stack/stack_test.go (about) 1 package stack 2 3 import "testing" 4 5 func TestPush(t *testing.T) { 6 s := New[interface{}](nil) 7 s.Push(1) 8 if s.Peek() != 1 { 9 t.Fail() 10 } 11 } 12 13 func TestPop(t *testing.T) { 14 s := New[interface{}](nil) 15 s.Push(1) 16 s.Push(2) 17 s.Push(3) 18 if s.Pop() != 3 { 19 t.Fail() 20 } 21 } 22 23 func TestPushN(t *testing.T) { 24 s := New[interface{}](nil) 25 s.PushN([]interface{}{1, 2, 3}) 26 if s.Pop() != 3 { 27 t.Fail() 28 } 29 } 30 31 func TestPopN(t *testing.T) { 32 s := New[interface{}](nil) 33 s.PushN([]interface{}{1, 2, 3}) 34 if s.PopN(2)[0] != 2 { 35 t.Fail() 36 } 37 } 38 39 func TestPeek(t *testing.T) { 40 s := New[interface{}](nil) 41 s.Push(1) 42 s.Push(2) 43 s.Push(3) 44 if s.Peek() != 3 { 45 t.Fail() 46 } 47 } 48 49 func TestReverse(t *testing.T) { 50 s := New[interface{}](nil) 51 s.PushN([]interface{}{1, 2, 3}) 52 s.Reverse() 53 if s.Pop() != 1 { 54 t.Fail() 55 } 56 } 57 58 func TestPushLeft(t *testing.T) { 59 s := New[interface{}](nil) 60 s.PushLeft(1) 61 s.PushLeft(2) 62 s.PushLeft(3) 63 if s.Pop() != 1 { 64 t.Fail() 65 } 66 } 67 68 func TestPopLeft(t *testing.T) { 69 s := New[interface{}](nil) 70 s.PushN([]interface{}{1, 2, 3}) 71 if s.PopLeft() != 1 { 72 t.Fail() 73 } 74 }