From 332d978bd0c8593cc0bcabbd05ec94d6d76db10b Mon Sep 17 00:00:00 2001 From: nasa9084 Date: Wed, 12 Feb 2020 19:39:33 +0900 Subject: [PATCH 1/2] add test for Stack --- stack_test.go | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 stack_test.go diff --git a/stack_test.go b/stack_test.go new file mode 100644 index 0000000..9a8a677 --- /dev/null +++ b/stack_test.go @@ -0,0 +1,54 @@ +package stack + +import ( + "reflect" + "testing" +) + +func TestPush(t *testing.T) { + s := Stack{} + s.Push("foo") + s.Push("bar") + + want := Stack([]string{"foo", "bar"}) + if !reflect.DeepEqual(s, want) { + // TODO: more detail message + t.Error("error") + return + } +} + +func TestPop(t *testing.T) { + s := Stack([]string{"foo", "bar"}) + t.Run("pop 1", func(t *testing.T) { + got := s.Pop() + wantVal := "bar" + if got != wantVal { + // TODO: more detail message + t.Error("error on 1 val") + return + } + want := Stack([]string{"foo"}) + if !reflect.DeepEqual(s, want) { + // TODO: more detail message + t.Error("error on 1") + return + } + }) + + t.Run("pop 2", func(t *testing.T) { + got := s.Pop() + wantVal := "foo" + if got != wantVal { + // TODO: more detail message + t.Error("error on 2 val") + return + } + want := Stack{} + if !reflect.DeepEqual(s, want) { + // TODO: more detail message + t.Error("error on 2") + return + } + }) +} From f15869ca9e0b14459dd7205b67a3507b0180cdb8 Mon Sep 17 00:00:00 2001 From: nasa9084 Date: Wed, 12 Feb 2020 19:50:16 +0900 Subject: [PATCH 2/2] add testcase and fix panic when there's no elements --- stack.go | 3 +++ stack_test.go | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/stack.go b/stack.go index 0598fd8..185f3d9 100644 --- a/stack.go +++ b/stack.go @@ -10,6 +10,9 @@ func (stack *Stack) Push(s string) { // Pop do pop from the top of stack and remove it. func (stack *Stack) Pop() string { + if len(*stack) == 0 { + return "" + } ret := (*stack)[len(*stack)-1] *stack = (*stack)[:len(*stack)-1] return ret diff --git a/stack_test.go b/stack_test.go index 9a8a677..bc9f3b5 100644 --- a/stack_test.go +++ b/stack_test.go @@ -51,4 +51,20 @@ func TestPop(t *testing.T) { return } }) + + t.Run("pop 3", func(t *testing.T) { + got := s.Pop() + wantVal := "" + if got != wantVal { + // TODO: more detail message + t.Error("error on 3 val") + return + } + want := Stack{} + if !reflect.DeepEqual(s, want) { + // TODO: more detail message + t.Error("error on 3") + return + } + }) }