func TestStack(t *testing.T) { count := 1 var aStack stack.Stack assertTrue(t, aStack.Len() == 0, "expected empty Stack", count) // 1 count++ assertTrue(t, aStack.Cap() == 0, "expected empty Stack", count) // 2 count++ assertTrue(t, aStack.IsEmpty(), "expected empty Stack", count) // 3 count++ value, err := aStack.Pop() assertTrue(t, value == nil, "expected nil value", count) // 4 count++ assertTrue(t, err != nil, "expected error", count) // 5 count++ value1, err := aStack.Top() assertTrue(t, value1 == nil, "expected nil value", count) // 6 count++ assertTrue(t, err != nil, "expected error", count) // 7 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("111") for { item, err := haystack.Pop() if err != nil { break } fmt.Println(item) } }
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) } }
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) }
func main() { var hi stack.Stack hi.Push("hi") hi.Push("hello") hi.Push(22) hi.Push([]string{"good", "morning", "bye"}) hi.Push(-12.3) for { item, err := hi.Pop() if err != nil { break } fmt.Println(item) } var ho stack.Stack ho.Push("Xiaomi") ho.Push("Huawei") ho.Push(1999) x, err := ho.Top() fmt.Println(x) ho.Push(-6e-4) ho.Push("Apple") ho.Push("MS") x, err = ho.Top() fmt.Println(x) ho.Push(11.11) fmt.Println("stack is empty?", ho.IsEmpty()) fmt.Printf("Len() == %d Cap == %d\n", ho.Len(), ho.Cap()) diff := ho.Cap() - ho.Len() for i := 0; i < diff; i++ { ho.Push(strings.Repeat("*", diff-i)) } fmt.Printf("Len() == %d Cap() == %d\n", ho.Len(), ho.Cap()) for ho.Len() > 0 { x, _ := ho.Pop() fmt.Printf("%T %v\n", x, x) } fmt.Println("stack is empty?", ho.IsEmpty()) x, err = ho.Pop() fmt.Println(x, err) x, err = ho.Pop() fmt.Println(x, err) }