Added io.WriterTo implementation to ByteBuffer

This commit is contained in:
Aliaksandr Valialkin
2016-06-29 17:48:49 +03:00
parent bf51c4698b
commit 18b5603df3
2 changed files with 34 additions and 0 deletions
+8
View File
@@ -1,5 +1,7 @@
package bytebufferpool
import "io"
// ByteBuffer provides byte buffer, which can be used for minimizing
// memory allocations.
//
@@ -14,6 +16,12 @@ type ByteBuffer struct {
B []byte
}
// WriteTo implements io.WriterTo
func (b *ByteBuffer) WriteTo(w io.Writer) (int64, error) {
n, err := w.Write(b.B)
return int64(n), err
}
// Bytes returns b.B, i.e. all the bytes accumulated in the buffer.
//
// The purpose of this function is bytes.Buffer compatibility.
+26
View File
@@ -1,11 +1,37 @@
package bytebufferpool
import (
"bytes"
"fmt"
"io"
"testing"
"time"
)
func TestByteBufferWriteTo(t *testing.T) {
expectedS := "foobarbaz"
var bb ByteBuffer
bb.WriteString(expectedS[:3])
bb.WriteString(expectedS[3:])
wt := (io.WriterTo)(&bb)
var w bytes.Buffer
for i := 0; i < 10; i++ {
n, err := wt.WriteTo(&w)
if n != int64(len(expectedS)) {
t.Fatalf("unexpected n returned from WriteTo: %d. Expecting %d", n, len(expectedS))
}
if err != nil {
t.Fatalf("unexpected error: %s", err)
}
s := string(w.Bytes())
if s != expectedS {
t.Fatalf("unexpected string written %q. Expecting %q", s, expectedS)
}
w.Reset()
}
}
func TestByteBufferGetPutSerial(t *testing.T) {
testByteBufferGetPut(t)
}