storj.io/uplink@v1.13.0/private/storage/streams/size_test.go (about)

     1  // Copyright (C) 2019 Storj Labs, Inc.
     2  // See LICENSE for copying information.
     3  
     4  package streams_test
     5  
     6  import (
     7  	"bytes"
     8  	"io"
     9  	"testing"
    10  
    11  	"github.com/stretchr/testify/assert"
    12  
    13  	"storj.io/uplink/private/storage/streams"
    14  )
    15  
    16  func TestSizeReader(t *testing.T) {
    17  	data := "abcdefgh"
    18  	r := bytes.NewReader([]byte(data))
    19  	sr := streams.SizeReader(r)
    20  
    21  	// Nothing has been read yet - size is 0
    22  	assert.EqualValues(t, 0, sr.Size())
    23  
    24  	// Read 2 bytes - Size is now 2
    25  	buf := make([]byte, 2)
    26  	_, err := io.ReadFull(sr, buf)
    27  	assert.NoError(t, err)
    28  	assert.EqualValues(t, 2, sr.Size())
    29  
    30  	// Read 2 bytes again - Size is now 4
    31  	_, err = io.ReadFull(sr, buf)
    32  	assert.NoError(t, err)
    33  	assert.EqualValues(t, 4, sr.Size())
    34  
    35  	// Read all the rest - Size is now len(data)
    36  	_, err = io.Copy(io.Discard, sr)
    37  	assert.NoError(t, err)
    38  	assert.EqualValues(t, len(data), sr.Size())
    39  }