github.com/10XDev/rclone@v1.52.3-0.20200626220027-16af9ab76b2a/backend/jottacloud/jottacloud_internal_test.go (about) 1 package jottacloud 2 3 import ( 4 "crypto/md5" 5 "fmt" 6 "io" 7 "testing" 8 9 "github.com/rclone/rclone/lib/readers" 10 "github.com/stretchr/testify/assert" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestReadMD5(t *testing.T) { 15 // Check readMD5 for different size and threshold 16 for _, size := range []int64{0, 1024, 10 * 1024, 100 * 1024} { 17 t.Run(fmt.Sprintf("%d", size), func(t *testing.T) { 18 hasher := md5.New() 19 n, err := io.Copy(hasher, readers.NewPatternReader(size)) 20 require.NoError(t, err) 21 assert.Equal(t, n, size) 22 wantMD5 := fmt.Sprintf("%x", hasher.Sum(nil)) 23 for _, threshold := range []int64{512, 1024, 10 * 1024, 20 * 1024} { 24 t.Run(fmt.Sprintf("%d", threshold), func(t *testing.T) { 25 in := readers.NewPatternReader(size) 26 gotMD5, out, cleanup, err := readMD5(in, size, threshold) 27 defer cleanup() 28 require.NoError(t, err) 29 assert.Equal(t, wantMD5, gotMD5) 30 31 // check md5hash of out 32 hasher := md5.New() 33 n, err := io.Copy(hasher, out) 34 require.NoError(t, err) 35 assert.Equal(t, n, size) 36 outMD5 := fmt.Sprintf("%x", hasher.Sum(nil)) 37 assert.Equal(t, wantMD5, outMD5) 38 }) 39 } 40 }) 41 } 42 }