1package s3manager 2 3import ( 4 "bytes" 5 "io" 6 "testing" 7 8 "github.com/aws/aws-sdk-go/internal/sdkio" 9) 10 11func TestBufferedReadSeekerRead(t *testing.T) { 12 expected := []byte("testData") 13 14 readSeeker := NewBufferedReadSeeker(bytes.NewReader(expected), make([]byte, 4)) 15 16 var ( 17 actual []byte 18 buffer = make([]byte, 2) 19 ) 20 21 for { 22 n, err := readSeeker.Read(buffer) 23 actual = append(actual, buffer[:n]...) 24 if err != nil && err == io.EOF { 25 break 26 } else if err != nil { 27 t.Fatalf("failed to read from reader: %v", err) 28 } 29 } 30 31 if !bytes.Equal(expected, actual) { 32 t.Errorf("expected %v, got %v", expected, actual) 33 } 34} 35 36func TestBufferedReadSeekerSeek(t *testing.T) { 37 content := []byte("testData") 38 39 readSeeker := NewBufferedReadSeeker(bytes.NewReader(content), make([]byte, 4)) 40 41 _, err := readSeeker.Seek(4, sdkio.SeekStart) 42 if err != nil { 43 t.Fatalf("failed to seek reader: %v", err) 44 } 45 46 var ( 47 actual []byte 48 buffer = make([]byte, 4) 49 ) 50 51 for { 52 n, err := readSeeker.Read(buffer) 53 actual = append(actual, buffer[:n]...) 54 if err != nil && err == io.EOF { 55 break 56 } else if err != nil { 57 t.Fatalf("failed to read from reader: %v", err) 58 } 59 } 60 61 if e := []byte("Data"); !bytes.Equal(e, actual) { 62 t.Errorf("expected %v, got %v", e, actual) 63 } 64} 65 66func TestBufferedReadSeekerReadAt(t *testing.T) { 67 content := []byte("testData") 68 69 readSeeker := NewBufferedReadSeeker(bytes.NewReader(content), make([]byte, 2)) 70 71 buffer := make([]byte, 4) 72 73 _, err := readSeeker.ReadAt(buffer, 0) 74 if err != nil { 75 t.Fatalf("failed to seek reader: %v", err) 76 } 77 78 if e := content[:4]; !bytes.Equal(e, buffer) { 79 t.Errorf("expected %v, got %v", e, buffer) 80 } 81} 82