summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-04-19 16:48:18 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-04-19 16:48:18 +0200
commitfe8f23a25989b3ae287975d08e7e5a47ec5ff1e8 (patch)
treeabb66c87fef65638bcaecbbbe31aa5c41e5511b8
parent6491f45cfd5671ffff53068444aa3a3f9dba94d6 (diff)
Test Peek
-rw-r--r--stack.go7
-rw-r--r--stack_test.go16
2 files changed, 21 insertions, 2 deletions
diff --git a/stack.go b/stack.go
index 3c54937..1d5cdb0 100644
--- a/stack.go
+++ b/stack.go
@@ -28,8 +28,11 @@ func (s *Stack) Pop() (v interface{}) {
}
// Peek a top value on Stack
-func (s Stack) Peek() interface{} {
- return s[len(s)-1]
+func (s Stack) Peek() (v interface{}) {
+ if size := len(s); size > 0 {
+ v = s[size-1]
+ }
+ return v
}
// Swap two top values
diff --git a/stack_test.go b/stack_test.go
index 32637fa..4f3bfce 100644
--- a/stack_test.go
+++ b/stack_test.go
@@ -69,6 +69,22 @@ func TestInsert(t *testing.T) {
}
}
+func TestPeek(t *testing.T) {
+ s := New()
+ v := s.Peek()
+ if v != nil {
+ t.Error("Expected nil")
+ }
+ s.Push(1)
+ v = s.Peek()
+ if v != 1 {
+ t.Error("Expected 1")
+ }
+ if s.Depth() != 1 {
+ t.Error("Expected depth of 1")
+ }
+}
+
func BenchmarkPushPopSingle(b *testing.B) {
s := New()
for i := 0; i < b.N; i++ {