github.com/divyam234/rclone@v1.64.1/fs/fingerprint_test.go (about)

     1  package fs_test
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"testing"
     7  
     8  	"github.com/divyam234/rclone/fs"
     9  	"github.com/divyam234/rclone/fs/hash"
    10  	"github.com/divyam234/rclone/fstest/mockfs"
    11  	"github.com/divyam234/rclone/fstest/mockobject"
    12  	"github.com/stretchr/testify/assert"
    13  	"github.com/stretchr/testify/require"
    14  )
    15  
    16  func TestFingerprint(t *testing.T) {
    17  	ctx := context.Background()
    18  	fMock, err := mockfs.NewFs(ctx, "test", "root", nil)
    19  	require.NoError(t, err)
    20  	f := fMock.(*mockfs.Fs)
    21  	f.SetHashes(hash.NewHashSet(hash.MD5))
    22  
    23  	for i, test := range []struct {
    24  		fast        bool
    25  		slowModTime bool
    26  		slowHash    bool
    27  		want        string
    28  	}{
    29  		{fast: false, slowModTime: false, slowHash: false, want: "4,0001-01-01 00:00:00 +0000 UTC,8d777f385d3dfec8815d20f7496026dc"},
    30  		{fast: false, slowModTime: false, slowHash: true, want: "4,0001-01-01 00:00:00 +0000 UTC,8d777f385d3dfec8815d20f7496026dc"},
    31  		{fast: false, slowModTime: true, slowHash: false, want: "4,0001-01-01 00:00:00 +0000 UTC,8d777f385d3dfec8815d20f7496026dc"},
    32  		{fast: false, slowModTime: true, slowHash: true, want: "4,0001-01-01 00:00:00 +0000 UTC,8d777f385d3dfec8815d20f7496026dc"},
    33  		{fast: true, slowModTime: false, slowHash: false, want: "4,0001-01-01 00:00:00 +0000 UTC,8d777f385d3dfec8815d20f7496026dc"},
    34  		{fast: true, slowModTime: false, slowHash: true, want: "4,0001-01-01 00:00:00 +0000 UTC"},
    35  		{fast: true, slowModTime: true, slowHash: false, want: "4,8d777f385d3dfec8815d20f7496026dc"},
    36  		{fast: true, slowModTime: true, slowHash: true, want: "4"},
    37  	} {
    38  		what := fmt.Sprintf("#%d fast=%v,slowModTime=%v,slowHash=%v", i, test.fast, test.slowModTime, test.slowHash)
    39  		o := mockobject.New("potato").WithContent([]byte("data"), mockobject.SeekModeRegular)
    40  		o.SetFs(f)
    41  		f.Features().SlowModTime = test.slowModTime
    42  		f.Features().SlowHash = test.slowHash
    43  		got := fs.Fingerprint(ctx, o, test.fast)
    44  		assert.Equal(t, test.want, got, what)
    45  	}
    46  }