From 4982cc7c42ad0ad6a90d06aa0dc5aaa45166c949 Mon Sep 17 00:00:00 2001 From: David Lawrence Date: Tue, 15 Dec 2015 15:27:34 -0800 Subject: [PATCH] adding stack tests Signed-off-by: David Lawrence (github: endophage) --- tuf/utils/stack.go | 4 +-- tuf/utils/stack_test.go | 69 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 tuf/utils/stack_test.go diff --git a/tuf/utils/stack.go b/tuf/utils/stack.go index 71c953d473..578f9d18b5 100644 --- a/tuf/utils/stack.go +++ b/tuf/utils/stack.go @@ -36,7 +36,7 @@ func (s *Stack) Pop() (interface{}, error) { *s = (*s)[:l-1] return item, nil } - return nil, ErrEmptyStack{action: "pop"} + return nil, ErrEmptyStack{action: "Pop"} } func (s *Stack) PopString() (string, error) { @@ -49,7 +49,7 @@ func (s *Stack) PopString() (string, error) { } return "", ErrBadTypeCast{} } - return "", ErrEmptyStack{action: "pop"} + return "", ErrEmptyStack{action: "PopString"} } func (s Stack) Empty() bool { diff --git a/tuf/utils/stack_test.go b/tuf/utils/stack_test.go new file mode 100644 index 0000000000..330b06b0b8 --- /dev/null +++ b/tuf/utils/stack_test.go @@ -0,0 +1,69 @@ +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, 1) + assert.Equal(t, "foo", (*s)[0]) +} + +func TestPop(t *testing.T) { + s := NewStack() + s.Push("foo") + i, err := s.Pop() + assert.NoError(t, err) + assert.Len(t, *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, 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) +} + +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()) +}