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  }