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 = BlockReader(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[:4]) if count != 0 { t.Error("Invalid read count from MinReader", count) } if err != io.EOF { t.Error("Unexpected error from MinReader", err) } }