mirror of
https://github.com/duke-git/lancet.git
synced 2025-10-19 13:54:34 +08:00
78 lines
1.5 KiB
Go
78 lines
1.5 KiB
Go
package datastructure
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/duke-git/lancet/v2/internal"
|
|
)
|
|
|
|
func TestArrayStack_Push(t *testing.T) {
|
|
assert := internal.NewAssert(t, "TestArrayStack_Push")
|
|
|
|
stack := NewArrayStack[int]()
|
|
stack.Push(1)
|
|
stack.Push(2)
|
|
stack.Push(3)
|
|
|
|
expected := []int{3, 2, 1}
|
|
values := stack.Data()
|
|
length := stack.Size()
|
|
|
|
assert.Equal(expected, values)
|
|
assert.Equal(3, length)
|
|
}
|
|
|
|
func TestArrayStack_Pop(t *testing.T) {
|
|
assert := internal.NewAssert(t, "TestArrayStack_Pop")
|
|
|
|
stack := NewArrayStack[int]()
|
|
_, 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}
|
|
assert.Equal(expected, stack.Data())
|
|
}
|
|
|
|
func TestArrayStack_Peak(t *testing.T) {
|
|
assert := internal.NewAssert(t, "TestArrayStack_Peak")
|
|
|
|
stack := NewArrayStack[int]()
|
|
_, 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 TestArrayStack_Clear(t *testing.T) {
|
|
assert := internal.NewAssert(t, "TestArrayStack_Clear")
|
|
|
|
stack := NewArrayStack[int]()
|
|
assert.Equal(true, stack.IsEmpty())
|
|
assert.Equal(0, stack.Size())
|
|
|
|
stack.Push(1)
|
|
assert.Equal(false, stack.IsEmpty())
|
|
assert.Equal(1, stack.Size())
|
|
|
|
stack.Clear()
|
|
assert.Equal(true, stack.IsEmpty())
|
|
assert.Equal(0, stack.Size())
|
|
}
|