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

     1  package oid_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs"
     7  	cidtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container/id/test"
     8  	oid "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/id"
     9  	oidtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/id/test"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestAddress_SetContainer(t *testing.T) {
    14  	var x oid.Address
    15  
    16  	require.Zero(t, x.Container())
    17  
    18  	cnr := cidtest.ID()
    19  
    20  	x.SetContainer(cnr)
    21  	require.Equal(t, cnr, x.Container())
    22  }
    23  
    24  func TestAddress_SetObject(t *testing.T) {
    25  	var x oid.Address
    26  
    27  	require.Zero(t, x.Object())
    28  
    29  	obj := oidtest.ID()
    30  
    31  	x.SetObject(obj)
    32  	require.Equal(t, obj, x.Object())
    33  }
    34  
    35  func TestAddress_ReadFromV2(t *testing.T) {
    36  	var x oid.Address
    37  	var xV2 refs.Address
    38  
    39  	require.Error(t, x.ReadFromV2(xV2))
    40  
    41  	var cnrV2 refs.ContainerID
    42  	xV2.SetContainerID(&cnrV2)
    43  
    44  	require.Error(t, x.ReadFromV2(xV2))
    45  
    46  	cnr := cidtest.ID()
    47  	cnr.WriteToV2(&cnrV2)
    48  
    49  	require.Error(t, x.ReadFromV2(xV2))
    50  
    51  	var objV2 refs.ObjectID
    52  	xV2.SetObjectID(&objV2)
    53  
    54  	require.Error(t, x.ReadFromV2(xV2))
    55  
    56  	obj := oidtest.ID()
    57  	obj.WriteToV2(&objV2)
    58  
    59  	require.NoError(t, x.ReadFromV2(xV2))
    60  	require.Equal(t, cnr, x.Container())
    61  	require.Equal(t, obj, x.Object())
    62  
    63  	var xV2To refs.Address
    64  	x.WriteToV2(&xV2To)
    65  
    66  	require.Equal(t, xV2, xV2To)
    67  }
    68  
    69  func TestAddress_DecodeString(t *testing.T) {
    70  	var x, x2 oid.Address
    71  
    72  	require.NoError(t, x2.DecodeString(x.EncodeToString()))
    73  	require.Equal(t, x, x2)
    74  
    75  	cnr := cidtest.ID()
    76  	obj := oidtest.ID()
    77  
    78  	x.SetContainer(cnr)
    79  	x.SetObject(obj)
    80  
    81  	require.NoError(t, x2.DecodeString(x.EncodeToString()))
    82  	require.Equal(t, x, x2)
    83  
    84  	strCnr := cnr.EncodeToString()
    85  	strObj := obj.EncodeToString()
    86  
    87  	require.Error(t, x2.DecodeString(""))
    88  	require.Error(t, x2.DecodeString("/"))
    89  	require.Error(t, x2.DecodeString(strCnr))
    90  	require.Error(t, x2.DecodeString(strCnr+"/"))
    91  	require.Error(t, x2.DecodeString("/"+strCnr))
    92  	require.Error(t, x2.DecodeString(strCnr+strObj))
    93  	require.Error(t, x2.DecodeString(strCnr+"\\"+strObj))
    94  	require.NoError(t, x2.DecodeString(strCnr+"/"+strObj))
    95  }
    96  
    97  func TestAddressEncoding(t *testing.T) {
    98  	v := oidtest.Address()
    99  
   100  	t.Run("json", func(t *testing.T) {
   101  		data, err := v.MarshalJSON()
   102  		require.NoError(t, err)
   103  
   104  		var v2 oid.Address
   105  		require.NoError(t, v2.UnmarshalJSON(data))
   106  
   107  		require.Equal(t, v, v2)
   108  	})
   109  }