adding stack tests

Signed-off-by: David Lawrence <david.lawrence@docker.com> (github: endophage)
This commit is contained in:
David Lawrence 2015-12-15 15:27:34 -08:00
parent 33d39afdf5
commit 4982cc7c42
2 changed files with 71 additions and 2 deletions

View File

@ -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 {

69
tuf/utils/stack_test.go Normal file
View File

@ -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())
}