1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 12:32:21 +00:00
2018-01-13 15:51:22 +08:00

48 lines
998 B
Go
Executable File

// Copyright © 2017 ChaiShushan <chaishushan{AT}gmail.com>.
// License: https://creativecommons.org/licenses/by-nc-sa/4.0/
package stackmap
import (
"bytes"
"testing"
)
func TestX(t *testing.T) {
b := make([]byte, 0, 3)
for _, want := range [][]byte{
mkSlice(3, 3),
mkSlice(3, 3, 3),
mkSlice(3, 3, 3, 3),
mkSlice(10, 3, 3, 3, 3),
mkSlice(10, 3, 3, 3, 3, 3),
mkSlice(10, 3, 3, 3, 3, 3, 3),
mkSlice(10, 3, 3, 3, 3, 3, 3, 3),
mkSlice(10, 3, 3, 3, 3, 3, 3, 3, 3),
mkSlice(10, 3, 3, 3, 3, 3, 3, 3, 3, 3),
mkSlice(10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3),
mkSlice(20, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3),
} {
b = X(b)
if !slicesEqual(b, want) {
t.Fatalf("got %v[cap=%d]; want %v[cap=%d]",
b, cap(b), want, cap(want))
}
}
}
func mkSlice(cap int, vs ...byte) []byte {
b1 := make([]byte, 0, cap)
for _, v := range vs {
b1 = append(b1, v)
}
return b1
}
func slicesEqual(b0, b1 []byte) bool {
if cap(b0) != cap(b1) {
return false
}
return bytes.Equal(b0, b1)
}