@@ -1,10 +1,11 @@ package ioutil import ( diff "0dev.org/diff" "bytes" + "io" "testing" ) func TestWriter(t *testing.T) { var ( @@ -43,5 +44,51 @@ 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 TestMinReader(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 = MinReader(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) + } +}