github.com/aavshr/aws-sdk-go@v1.41.3/service/s3/s3manager/writer_read_from_test.go (about) 1 package s3manager 2 3 import ( 4 "fmt" 5 "io" 6 "reflect" 7 "testing" 8 ) 9 10 type testBufioWriter struct { 11 ReadFromN int64 12 ReadFromErr error 13 FlushReturn error 14 } 15 16 func (t testBufioWriter) Write(p []byte) (n int, err error) { 17 panic("unused") 18 } 19 20 func (t testBufioWriter) ReadFrom(r io.Reader) (n int64, err error) { 21 return t.ReadFromN, t.ReadFromErr 22 } 23 24 func (t testBufioWriter) Flush() error { 25 return t.FlushReturn 26 } 27 28 func (t *testBufioWriter) Reset(io.Writer) { 29 panic("unused") 30 } 31 32 func TestBufferedReadFromFlusher_ReadFrom(t *testing.T) { 33 cases := map[string]struct { 34 w testBufioWriter 35 expectedErr error 36 }{ 37 "no errors": {}, 38 "error returned from underlying ReadFrom": { 39 w: testBufioWriter{ 40 ReadFromN: 42, 41 ReadFromErr: fmt.Errorf("readfrom"), 42 }, 43 expectedErr: fmt.Errorf("readfrom"), 44 }, 45 "error returned from Flush": { 46 w: testBufioWriter{ 47 ReadFromN: 7, 48 FlushReturn: fmt.Errorf("flush"), 49 }, 50 expectedErr: fmt.Errorf("flush"), 51 }, 52 "error returned from ReadFrom and Flush": { 53 w: testBufioWriter{ 54 ReadFromN: 1337, 55 ReadFromErr: fmt.Errorf("readfrom"), 56 FlushReturn: fmt.Errorf("flush"), 57 }, 58 expectedErr: fmt.Errorf("readfrom"), 59 }, 60 } 61 62 for name, tCase := range cases { 63 t.Log(name) 64 readFromFlusher := bufferedReadFrom{bufferedWriter: &tCase.w} 65 n, err := readFromFlusher.ReadFrom(nil) 66 if e, a := tCase.w.ReadFromN, n; e != a { 67 t.Errorf("expected %v bytes, got %v", e, a) 68 } 69 if e, a := tCase.expectedErr, err; !reflect.DeepEqual(e, a) { 70 t.Errorf("expected error %v. got %v", e, a) 71 } 72 } 73 }