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 }