|
@@ -0,0 +1,81 @@
|
|
|
|
+package ioutils
|
|
|
|
+
|
|
|
|
+import "testing"
|
|
|
|
+
|
|
|
|
+func TestBytesPipeRead(t *testing.T) {
|
|
|
|
+ buf := NewBytesPipe(nil)
|
|
|
|
+ buf.Write([]byte("12"))
|
|
|
|
+ buf.Write([]byte("34"))
|
|
|
|
+ buf.Write([]byte("56"))
|
|
|
|
+ buf.Write([]byte("78"))
|
|
|
|
+ buf.Write([]byte("90"))
|
|
|
|
+ rd := make([]byte, 4)
|
|
|
|
+ n, err := buf.Read(rd)
|
|
|
|
+ if err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ if n != 4 {
|
|
|
|
+ t.Fatalf("Wrong number of bytes read: %d, should be %d", n, 4)
|
|
|
|
+ }
|
|
|
|
+ if string(rd) != "1234" {
|
|
|
|
+ t.Fatalf("Read %s, but must be %s", rd, "1234")
|
|
|
|
+ }
|
|
|
|
+ n, err = buf.Read(rd)
|
|
|
|
+ if err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ if n != 4 {
|
|
|
|
+ t.Fatalf("Wrong number of bytes read: %d, should be %d", n, 4)
|
|
|
|
+ }
|
|
|
|
+ if string(rd) != "5678" {
|
|
|
|
+ t.Fatalf("Read %s, but must be %s", rd, "5679")
|
|
|
|
+ }
|
|
|
|
+ n, err = buf.Read(rd)
|
|
|
|
+ if err != nil {
|
|
|
|
+ t.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ if n != 2 {
|
|
|
|
+ t.Fatalf("Wrong number of bytes read: %d, should be %d", n, 2)
|
|
|
|
+ }
|
|
|
|
+ if string(rd[:n]) != "90" {
|
|
|
|
+ t.Fatalf("Read %s, but must be %s", rd, "90")
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func TestBytesPipeWrite(t *testing.T) {
|
|
|
|
+ buf := NewBytesPipe(nil)
|
|
|
|
+ buf.Write([]byte("12"))
|
|
|
|
+ buf.Write([]byte("34"))
|
|
|
|
+ buf.Write([]byte("56"))
|
|
|
|
+ buf.Write([]byte("78"))
|
|
|
|
+ buf.Write([]byte("90"))
|
|
|
|
+ if string(buf.buf) != "1234567890" {
|
|
|
|
+ t.Fatalf("Buffer %s, must be %s", buf.buf, "1234567890")
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func BenchmarkBytesPipeWrite(b *testing.B) {
|
|
|
|
+ for i := 0; i < b.N; i++ {
|
|
|
|
+ buf := NewBytesPipe(nil)
|
|
|
|
+ for j := 0; j < 1000; j++ {
|
|
|
|
+ buf.Write([]byte("pretty short line, because why not?"))
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func BenchmarkBytesPipeRead(b *testing.B) {
|
|
|
|
+ rd := make([]byte, 1024)
|
|
|
|
+ for i := 0; i < b.N; i++ {
|
|
|
|
+ b.StopTimer()
|
|
|
|
+ buf := NewBytesPipe(nil)
|
|
|
|
+ for j := 0; j < 1000; j++ {
|
|
|
|
+ buf.Write(make([]byte, 1024))
|
|
|
|
+ }
|
|
|
|
+ b.StartTimer()
|
|
|
|
+ for j := 0; j < 1000; j++ {
|
|
|
|
+ if n, _ := buf.Read(rd); n != 1024 {
|
|
|
|
+ b.Fatalf("Wrong number of bytes: %d", n)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|