From fe8f23a25989b3ae287975d08e7e5a47ec5ff1e8 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 19 Apr 2016 16:48:18 +0200 Subject: Test Peek --- stack.go | 7 +++++-- stack_test.go | 16 ++++++++++++++++ 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++ { -- cgit v1.2.3