docs/tuf/utils/stack_test.go

71 lines
1.2 KiB
Go

package utils
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestCreateStack(t *testing.T) {
s := NewStack()
assert.NotNil(t, s)
}
func TestPush(t *testing.T) {
s := NewStack()
s.Push("foo")
assert.Len(t, s.s, 1)
assert.Equal(t, "foo", s.s[0])
}
func TestPop(t *testing.T) {
s := NewStack()
s.Push("foo")
i, err := s.Pop()
assert.NoError(t, err)
assert.Len(t, s.s, 0)
assert.IsType(t, "", i)
assert.Equal(t, "foo", i)
}
func TestPopEmpty(t *testing.T) {
s := NewStack()
_, err := s.Pop()
assert.Error(t, err)
assert.IsType(t, ErrEmptyStack{}, err)
}
func TestPopString(t *testing.T) {
s := NewStack()
s.Push("foo")
i, err := s.PopString()
assert.NoError(t, err)
assert.Len(t, s.s, 0)
assert.Equal(t, "foo", i)
}
func TestPopStringWrongType(t *testing.T) {
s := NewStack()
s.Push(123)
_, err := s.PopString()
assert.Error(t, err)
assert.IsType(t, ErrBadTypeCast{}, err)
assert.Len(t, s.s, 1)
}
func TestPopStringEmpty(t *testing.T) {
s := NewStack()
_, err := s.PopString()
assert.Error(t, err)
assert.IsType(t, ErrEmptyStack{}, err)
}
func TestEmpty(t *testing.T) {
s := NewStack()
assert.True(t, s.Empty())
s.Push("foo")
assert.False(t, s.Empty())
s.Pop()
assert.True(t, s.Empty())
}