@@ -95,11 +95,41 @@ if buffer.String() != "1234567890" { t.Error("Unexpected value in wrapped writer", buffer.String()) } } -func TestSizedWriterError(t *testing.T) { +func TestSizeWriterLarger(t *testing.T) { + var ( + input []byte = []byte("0123456789AB") + buffer bytes.Buffer + writer = SizedWriter(&buffer, 8) + ) + + count, err := writer.Write(input) + if count != 12 { + t.Error("Unexpected write count from SizedWriter", count) + } + if err != nil { + t.Error("Unexpected error from SizedWriter", err) + } + if buffer.String() != "01234567" { + t.Error("Unexpected value in wrapped writer", buffer.String()) + } + + count, err = writer.Write(nil) + if count != 0 { + t.Error("Unexpected write count from SizedWriter", count) + } + if err != nil { + t.Error("Unexpected error from SizedWriter", err) + } + if buffer.String() != "0123456789AB" { + t.Error("Unexpected value in wrapped writer", buffer.String()) + } +} + +func TestSizedWriterError1(t *testing.T) { var ( errorWriter io.Writer = WriterFunc(func([]byte) (int, error) { return 1, errors.New("Invalid write") }) writer io.Writer = SizedWriter(errorWriter, 2) @@ -112,10 +142,27 @@ if err != nil { t.Error("Unexpected error from SizedWriter", err) } count, err = writer.Write([]byte("2")) + if count != 1 { + t.Error("Unexpected write count from SizedWriter", count) + } + if err == nil { + t.Error("Unexpected lack of error from SizedWriter") + } +} + +func TestSizedWriterError2(t *testing.T) { + var ( + errorWriter io.Writer = WriterFunc(func([]byte) (int, error) { + return 1, errors.New("Invalid write") + }) + writer io.Writer = SizedWriter(errorWriter, 1) + ) + + count, err := writer.Write([]byte("12")) if count != 1 { t.Error("Unexpected write count from SizedWriter", count) } if err == nil { t.Error("Unexpected lack of error from SizedWriter")