docs/tuf/utils/stack_test.go

71 lines
1.2 KiB
Go

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