1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-02-05 13:22:26 +08:00
Files
lancet/datastructure/stacklink_test.go
2022-02-04 22:42:51 +08:00

81 lines
1.5 KiB
Go

package datastructure
import (
"testing"
"github.com/duke-git/lancet/internal"
)
func TestStackLink_Push(t *testing.T) {
assert := internal.NewAssert(t, "TestStackLink_Push")
stack := NewStackLink[int]()
stack.Push(1)
stack.Push(2)
stack.Push(3)
stack.Print()
expected := []int{3, 2, 1}
values := stack.Data()
length := stack.Length()
assert.Equal(expected, values)
assert.Equal(3, length)
}
func TestStackLink_Pop(t *testing.T) {
assert := internal.NewAssert(t, "TestStackLink_Pop")
stack := NewStackLink[int]()
topItem, err := stack.Pop()
assert.IsNotNil(err)
stack.Push(1)
stack.Push(2)
stack.Push(3)
topItem, err = stack.Pop()
assert.IsNil(err)
assert.Equal(3, *topItem)
expected := []int{2, 1}
stack.Print()
assert.Equal(expected, stack.Data())
}
func TestStackLink_Peak(t *testing.T) {
assert := internal.NewAssert(t, "TestStackLink_Peak")
stack := NewStackLink[int]()
topItem, err := stack.Peak()
assert.IsNotNil(err)
stack.Push(1)
stack.Push(2)
stack.Push(3)
topItem, err = stack.Peak()
assert.IsNil(err)
assert.Equal(3, *topItem)
expected := []int{3, 2, 1}
assert.Equal(expected, stack.Data())
}
func TestStackLink_Empty(t *testing.T) {
assert := internal.NewAssert(t, "TestStackLink_Empty")
stack := NewStackLink[int]()
assert.Equal(true, stack.IsEmpty())
assert.Equal(0, stack.Length())
stack.Push(1)
assert.Equal(false, stack.IsEmpty())
assert.Equal(1, stack.Length())
stack.EmptyStack()
assert.Equal(true, stack.IsEmpty())
assert.Equal(0, stack.Length())
}