git.frostfs.info/TrueCloudLab/frostfs-sdk-go@v0.0.0-20241022124111-5361f0ecebd3/object/attribute_test.go (about)

     1  package object
     2  
     3  import (
     4  	"testing"
     5  
     6  	"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/object"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestAttribute(t *testing.T) {
    11  	key, val := "some key", "some value"
    12  
    13  	a := NewAttribute()
    14  	a.SetKey(key)
    15  	a.SetValue(val)
    16  
    17  	require.Equal(t, key, a.Key())
    18  	require.Equal(t, val, a.Value())
    19  
    20  	aV2 := a.ToV2()
    21  
    22  	require.Equal(t, key, aV2.GetKey())
    23  	require.Equal(t, val, aV2.GetValue())
    24  }
    25  
    26  func TestAttributeEncoding(t *testing.T) {
    27  	a := NewAttribute()
    28  	a.SetKey("key")
    29  	a.SetValue("value")
    30  
    31  	t.Run("binary", func(t *testing.T) {
    32  		data, err := a.Marshal()
    33  		require.NoError(t, err)
    34  
    35  		a2 := NewAttribute()
    36  		require.NoError(t, a2.Unmarshal(data))
    37  
    38  		require.Equal(t, a, a2)
    39  	})
    40  
    41  	t.Run("json", func(t *testing.T) {
    42  		data, err := a.MarshalJSON()
    43  		require.NoError(t, err)
    44  
    45  		a2 := NewAttribute()
    46  		require.NoError(t, a2.UnmarshalJSON(data))
    47  
    48  		require.Equal(t, a, a2)
    49  	})
    50  }
    51  
    52  func TestNewAttributeFromV2(t *testing.T) {
    53  	t.Run("from nil", func(t *testing.T) {
    54  		var x *object.Attribute
    55  
    56  		require.Nil(t, NewAttributeFromV2(x))
    57  	})
    58  }
    59  
    60  func TestAttribute_ToV2(t *testing.T) {
    61  	t.Run("nil", func(t *testing.T) {
    62  		var x *Attribute
    63  
    64  		require.Nil(t, x.ToV2())
    65  	})
    66  }
    67  
    68  func TestNewAttribute(t *testing.T) {
    69  	t.Run("default values", func(t *testing.T) {
    70  		a := NewAttribute()
    71  
    72  		// check initial values
    73  		require.Empty(t, a.Key())
    74  		require.Empty(t, a.Value())
    75  
    76  		// convert to v2 message
    77  		aV2 := a.ToV2()
    78  
    79  		require.Empty(t, aV2.GetKey())
    80  		require.Empty(t, aV2.GetValue())
    81  	})
    82  }