github.com/TrueCloudLab/frostfs-api-go/v2@v2.0.0-20230228134343-196241c4e79a/refs/types_test.go (about)

     1  package refs_test
     2  
     3  import (
     4  	"math"
     5  	"strconv"
     6  	"testing"
     7  
     8  	"github.com/TrueCloudLab/frostfs-api-go/v2/refs"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  func TestZeroSubnet(t *testing.T) {
    13  	id := new(refs.SubnetID)
    14  
    15  	require.True(t, refs.IsZeroSubnet(id))
    16  
    17  	id.SetValue(1)
    18  	require.False(t, refs.IsZeroSubnet(id))
    19  
    20  	refs.MakeZeroSubnet(id)
    21  	require.True(t, refs.IsZeroSubnet(id))
    22  }
    23  
    24  func TestSubnetID_MarshalText(t *testing.T) {
    25  	var id refs.SubnetID
    26  
    27  	const val = 15
    28  
    29  	id.SetValue(val)
    30  
    31  	txt, err := id.MarshalText()
    32  	require.NoError(t, err)
    33  
    34  	res, err := strconv.ParseUint(string(txt), 10, 32)
    35  	require.NoError(t, err)
    36  
    37  	require.EqualValues(t, val, res)
    38  
    39  	t.Run("nil", func(t *testing.T) {
    40  		var id *refs.SubnetID
    41  
    42  		txt, err := id.MarshalText()
    43  		require.NoError(t, err)
    44  
    45  		res, err := strconv.ParseUint(string(txt), 10, 32)
    46  		require.NoError(t, err)
    47  
    48  		require.Zero(t, res)
    49  	})
    50  }
    51  
    52  func TestSubnetID_UnmarshalText(t *testing.T) {
    53  	const val = 15
    54  
    55  	str := strconv.FormatUint(val, 10)
    56  
    57  	var id refs.SubnetID
    58  
    59  	err := id.UnmarshalText([]byte(str))
    60  	require.NoError(t, err)
    61  
    62  	require.EqualValues(t, val, id.GetValue())
    63  
    64  	t.Run("uint32 overflow", func(t *testing.T) {
    65  		txt := strconv.FormatUint(math.MaxUint32+1, 10)
    66  
    67  		var id refs.SubnetID
    68  
    69  		err := id.UnmarshalText([]byte(txt))
    70  		require.ErrorIs(t, err, strconv.ErrRange)
    71  	})
    72  }