package ioutil
import (
diff "0dev.org/diff"
"bytes"
"io"
"testing"
)
func TestWriter(t *testing.T) {
var (
input []byte = []byte{0, 1, 2, 3, 4, 5, 6, 7}
output []byte
reader *bytes.Reader = bytes.NewReader(input)
buffer bytes.Buffer
)
reader.WriteTo(WriterFunc(buffer.Write))
output = buffer.Bytes()
// Diff the result against the initial input
delta := diff.Diff(diff.D{len(input), len(output),
func(i, j int) bool { return input[i] == output[j] }})
if len(delta.Added) > 0 || len(delta.Removed) > 0 {
t.Error("Differences detected ", delta)
}
}
func TestReader(t *testing.T) {
var (
input []byte = []byte{0, 1, 2, 3, 4, 5, 6, 7}
output []byte
reader *bytes.Reader = bytes.NewReader(input)
buffer bytes.Buffer
)
buffer.ReadFrom(ReaderFunc(reader.Read))
output = buffer.Bytes()
// Diff the result against the initial input
delta := diff.Diff(diff.D{len(input), len(output),
func(i, j int) bool { return input[i] == output[j] }})
if len(delta.Added) > 0 || len(delta.Removed) > 0 {
t.Error("Differences detected ", delta)
}
}
func TestBlockReader(t *testing.T) {
var (
input []byte = []byte{0, 1, 2, 3, 4, 5, 6, 7}
output []byte = make([]byte, 16)
reader *bytes.Reader = bytes.NewReader(input)
min io.Reader = SizedReader(reader, 4)
)
// Expecting a read count of 2
count, err := min.Read(output[:2])
if count != 2 {
t.Error("Invalid read count from MinReader", count)
}
if err != nil {
t.Error("Unexpected error from MinReader", err)
}
// Expecting a read count of 2 as it should have 2 bytes in its buffer
count, err = min.Read(output[:3])
if count != 2 {
t.Error("Invalid read count from MinReader", count)
}
if err != nil {
t.Error("Unexpected error from MinReader", err)
}
// Expecting a read count of 4 as the buffer should be empty
count, err = min.Read(output[:4])
if count != 4 {
t.Error("Invalid read count from MinReader", count)
}
if err != nil {
t.Error("Unexpected error from MinReader", err)
}
// Expecting a read count of 0 with an EOF as the buffer should be empty
count, err = min.Read(output[:1])
if count != 0 {
t.Error("Invalid read count from MinReader", count)
}
if err != io.EOF {
t.Error("Unexpected error from MinReader", err)
}
}