github.com/xhghs/rclone@v1.51.1-0.20200430155106-e186a28cced8/fs/operations/operations_internal_test.go (about)

     1  // Internal tests for operations
     2  
     3  package operations
     4  
     5  import (
     6  	"fmt"
     7  	"testing"
     8  	"time"
     9  
    10  	"github.com/rclone/rclone/fs"
    11  	"github.com/rclone/rclone/fs/object"
    12  	"github.com/stretchr/testify/assert"
    13  )
    14  
    15  func TestSizeDiffers(t *testing.T) {
    16  	when := time.Now()
    17  	for _, test := range []struct {
    18  		ignoreSize bool
    19  		srcSize    int64
    20  		dstSize    int64
    21  		want       bool
    22  	}{
    23  		{false, 0, 0, false},
    24  		{false, 1, 2, true},
    25  		{false, 1, -1, false},
    26  		{false, -1, 1, false},
    27  		{true, 0, 0, false},
    28  		{true, 1, 2, false},
    29  		{true, 1, -1, false},
    30  		{true, -1, 1, false},
    31  	} {
    32  		src := object.NewStaticObjectInfo("a", when, test.srcSize, true, nil, nil)
    33  		dst := object.NewStaticObjectInfo("a", when, test.dstSize, true, nil, nil)
    34  		oldIgnoreSize := fs.Config.IgnoreSize
    35  		fs.Config.IgnoreSize = test.ignoreSize
    36  		got := sizeDiffers(src, dst)
    37  		fs.Config.IgnoreSize = oldIgnoreSize
    38  		assert.Equal(t, test.want, got, fmt.Sprintf("ignoreSize=%v, srcSize=%v, dstSize=%v", test.ignoreSize, test.srcSize, test.dstSize))
    39  	}
    40  }