github.com/aavshr/aws-sdk-go@v1.41.3/service/s3/s3manager/buffered_read_seeker_test.go (about)

     1  package s3manager
     2  
     3  import (
     4  	"bytes"
     5  	"io"
     6  	"testing"
     7  
     8  	"github.com/aavshr/aws-sdk-go/internal/sdkio"
     9  )
    10  
    11  func 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  
    36  func 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  
    66  func 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  }