github.com/rclone/rclone@v1.66.1-0.20240517100346-7b89735ae726/fs/accounting/transfer_test.go (about) 1 package accounting 2 3 import ( 4 "context" 5 "errors" 6 "io" 7 "testing" 8 9 "github.com/rclone/rclone/fs/rc" 10 "github.com/rclone/rclone/fstest/mockfs" 11 "github.com/rclone/rclone/fstest/mockobject" 12 "github.com/stretchr/testify/assert" 13 "github.com/stretchr/testify/require" 14 ) 15 16 func TestTransfer(t *testing.T) { 17 ctx := context.Background() 18 s := NewStats(ctx) 19 20 o := mockobject.Object("obj") 21 srcFs, err := mockfs.NewFs(ctx, "srcFs", "srcFs", nil) 22 require.NoError(t, err) 23 dstFs, err := mockfs.NewFs(ctx, "dstFs", "dstFs", nil) 24 require.NoError(t, err) 25 26 tr := newTransfer(s, o, srcFs, dstFs) 27 28 t.Run("Snapshot", func(t *testing.T) { 29 snap := tr.Snapshot() 30 assert.Equal(t, "obj", snap.Name) 31 assert.Equal(t, int64(0), snap.Size) 32 assert.Equal(t, int64(0), snap.Bytes) 33 assert.Equal(t, false, snap.Checked) 34 assert.Equal(t, false, snap.StartedAt.IsZero()) 35 assert.Equal(t, true, snap.CompletedAt.IsZero()) 36 assert.Equal(t, nil, snap.Error) 37 assert.Equal(t, "", snap.Group) 38 assert.Equal(t, "srcFs:srcFs", snap.SrcFs) 39 assert.Equal(t, "dstFs:dstFs", snap.DstFs) 40 }) 41 42 t.Run("Done", func(t *testing.T) { 43 tr.Done(ctx, io.EOF) 44 snap := tr.Snapshot() 45 assert.Equal(t, "obj", snap.Name) 46 assert.Equal(t, int64(0), snap.Size) 47 assert.Equal(t, int64(0), snap.Bytes) 48 assert.Equal(t, false, snap.Checked) 49 assert.Equal(t, false, snap.StartedAt.IsZero()) 50 assert.Equal(t, false, snap.CompletedAt.IsZero()) 51 assert.Equal(t, true, errors.Is(snap.Error, io.EOF)) 52 assert.Equal(t, "", snap.Group) 53 assert.Equal(t, "srcFs:srcFs", snap.SrcFs) 54 assert.Equal(t, "dstFs:dstFs", snap.DstFs) 55 }) 56 57 t.Run("rcStats", func(t *testing.T) { 58 out := tr.rcStats() 59 assert.Equal(t, rc.Params{ 60 "name": "obj", 61 "size": int64(0), 62 "srcFs": "srcFs:srcFs", 63 "dstFs": "dstFs:dstFs", 64 }, out) 65 }) 66 }