github.com/divyam234/rclone@v1.64.1/fs/metadata_test.go (about) 1 package fs 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestMetadataSet(t *testing.T) { 11 var m Metadata 12 assert.Nil(t, m) 13 m.Set("key", "value") 14 assert.NotNil(t, m) 15 assert.Equal(t, "value", m["key"]) 16 m.Set("key", "value2") 17 assert.Equal(t, "value2", m["key"]) 18 } 19 20 func TestMetadataMerge(t *testing.T) { 21 for _, test := range []struct { 22 in Metadata 23 merge Metadata 24 want Metadata 25 }{ 26 { 27 in: Metadata{}, 28 merge: Metadata{}, 29 want: Metadata{}, 30 }, { 31 in: nil, 32 merge: nil, 33 want: nil, 34 }, { 35 in: nil, 36 merge: Metadata{}, 37 want: nil, 38 }, { 39 in: nil, 40 merge: Metadata{"a": "1", "b": "2"}, 41 want: Metadata{"a": "1", "b": "2"}, 42 }, { 43 in: Metadata{"a": "1", "b": "2"}, 44 merge: nil, 45 want: Metadata{"a": "1", "b": "2"}, 46 }, { 47 in: Metadata{"a": "1", "b": "2"}, 48 merge: Metadata{"b": "B", "c": "3"}, 49 want: Metadata{"a": "1", "b": "B", "c": "3"}, 50 }, 51 } { 52 what := fmt.Sprintf("in=%v, merge=%v", test.in, test.merge) 53 test.in.Merge(test.merge) 54 assert.Equal(t, test.want, test.in, what) 55 } 56 } 57 58 func TestMetadataMergeOptions(t *testing.T) { 59 for _, test := range []struct { 60 in Metadata 61 opts []OpenOption 62 want Metadata 63 }{ 64 { 65 opts: []OpenOption{}, 66 want: nil, 67 }, { 68 opts: []OpenOption{&HTTPOption{}}, 69 want: nil, 70 }, { 71 opts: []OpenOption{MetadataOption{"a": "1", "b": "2"}}, 72 want: Metadata{"a": "1", "b": "2"}, 73 }, { 74 opts: []OpenOption{ 75 &HTTPOption{}, 76 MetadataOption{"a": "1", "b": "2"}, 77 MetadataOption{"b": "B", "c": "3"}, 78 &HTTPOption{}, 79 }, 80 want: Metadata{"a": "1", "b": "B", "c": "3"}, 81 }, { 82 in: Metadata{"a": "first", "z": "OK"}, 83 opts: []OpenOption{ 84 &HTTPOption{}, 85 MetadataOption{"a": "1", "b": "2"}, 86 MetadataOption{"b": "B", "c": "3"}, 87 &HTTPOption{}, 88 }, 89 want: Metadata{"a": "1", "b": "B", "c": "3", "z": "OK"}, 90 }, 91 } { 92 what := fmt.Sprintf("in=%v, opts=%v", test.in, test.opts) 93 test.in.MergeOptions(test.opts) 94 assert.Equal(t, test.want, test.in, what) 95 } 96 }