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 }