func TestStack(t *testing.T) { count := 1 var aStack stack.Stack assertTrue(t, aStack.Len() == 0, "expected empty Stack", count) count++ assertTrue(t, aStack.Cap() == 0, "expected empty Stack", count) count++ assertTrue(t, aStack.IsEmpty(), "expected empty Stack", count) count++ value, err := aStack.Pop() assertTrue(t, value == nil, "expected nil value", count) count++ assertTrue(t, err != nil, "expected error", count) count++ value1, err := aStack.Top() assertTrue(t, value1 == nil, "expected nil value", count) count++ assertTrue(t, err != nil, "expected error", count) count++ aStack.Push(1) aStack.Push(2) aStack.Push("three") assertTrue(t, aStack.Len() == 3, "expected nonempty Stack", count) // 8 count++ assertTrue(t, aStack.IsEmpty() == false, "expected nonempty Stack", count) // 9 count++ value2, err := aStack.Pop() assertEqualString(t, value2.(string), "three", "unexpected text", count) // 10 count++ assertTrue(t, err == nil, "no error expected", count) // 11 count++ value3, err := aStack.Top() assertTrue(t, value3 == 2, "unexpected number", count) // 12 count++ assertTrue(t, err == nil, "no error expected", count) // 13 count++ aStack.Pop() assertTrue(t, aStack.Len() == 1, "expected nonempty Stack", count) //14 count++ assertTrue(t, aStack.IsEmpty() == false, "expected nonempty Stack", count) // 15 count++ value4, err := aStack.Pop() assertTrue(t, value4 == 1, "unexpected number", count) // 16 count++ assertTrue(t, err == nil, "no error expected", count) // 17 count++ assertTrue(t, aStack.Len() == 0, "expected empty Stack", count) // 18 count++ assertTrue(t, aStack.IsEmpty(), "expected empty Stack", count) // 19 count++ }
func main() { var haystack stack.Stack haystack.Push("hay") haystack.Push(-15) haystack.Push([]string{"pin", "clip", "needle"}) haystack.Push(81.52) for { item, err := haystack.Pop() if err != nil { break } fmt.Println(item) } var aStack stack.Stack aStack.Push("Aarvark") aStack.Push(5) aStack.Push(19) x, err := aStack.Top() fmt.Println(x) aStack.Push(-6e-4) aStack.Push("Baker") aStack.Push(-3) aStack.Push("Cake") aStack.Push("Dancer") x, err = aStack.Top() fmt.Println(x) aStack.Push(11.7) fmt.Println("stack is empty", aStack.IsEmpty()) fmt.Printf("Len() == %d Cap == %d\n", aStack.Len(), aStack.Cap()) difference := aStack.Cap() - aStack.Len() for i := 0; i < difference; i++ { aStack.Push(strings.Repeat("*", difference-i)) } fmt.Printf("Len() == %d Cap == %d\n", aStack.Len(), aStack.Cap()) for aStack.Len() > 0 { x, _ = aStack.Pop() fmt.Printf("%T %v\n", x, x) } fmt.Println("stack is empty", aStack.IsEmpty()) x, err = aStack.Pop() fmt.Println(x, err) x, err = aStack.Top() fmt.Println(x, err) }