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 }