package buffer import ( "bytes" "testing" ) func TestAppendByte(t *testing.T) { var b Buffer var want []byte for i := 0; i < 1000; i++ { b.AppendByte(1) b.AppendByte(2) want = append(want, 1, 2) } got := b.BuildBytes() if !bytes.Equal(got, want) { t.Errorf("BuildBytes() = %v; want %v", got, want) } } func TestAppendBytes(t *testing.T) { var b Buffer var want []byte for i := 0; i < 1000; i++ { b.AppendBytes([]byte{1, 2}) want = append(want, 1, 2) } got := b.BuildBytes() if !bytes.Equal(got, want) { t.Errorf("BuildBytes() = %v; want %v", got, want) } } func TestAppendString(t *testing.T) { var b Buffer var want []byte s := "test" for i := 0; i < 1000; i++ { b.AppendBytes([]byte(s)) want = append(want, s...) } got := b.BuildBytes() if !bytes.Equal(got, want) { t.Errorf("BuildBytes() = %v; want %v", got, want) } } func TestDumpTo(t *testing.T) { var b Buffer var want []byte s := "test" for i := 0; i < 1000; i++ { b.AppendBytes([]byte(s)) want = append(want, s...) } out := &bytes.Buffer{} n, err := b.DumpTo(out) if err != nil { t.Errorf("DumpTo() error: %v", err) } got := out.Bytes() if !bytes.Equal(got, want) { t.Errorf("DumpTo(): got %v; want %v", got, want) } if n != len(want) { t.Errorf("DumpTo() = %v; want %v", n, len(want)) } } func TestReadCloser(t *testing.T) { var b Buffer var want []byte s := "test" for i := 0; i < 1000; i++ { b.AppendBytes([]byte(s)) want = append(want, s...) } out := &bytes.Buffer{} rc := b.ReadCloser() n, err := out.ReadFrom(rc) if err != nil { t.Errorf("ReadCloser() error: %v", err) } rc.Close() // Will always return nil got := out.Bytes() if !bytes.Equal(got, want) { t.Errorf("DumpTo(): got %v; want %v", got, want) } if n != int64(len(want)) { t.Errorf("DumpTo() = %v; want %v", n, len(want)) } }