From bbd651767e25ae557e19714baba4b429388c86df Mon Sep 17 00:00:00 2001 From: Pavel Karpy Date: Wed, 9 Jun 2021 16:18:56 +0300 Subject: [PATCH] [#302] pkg/object: Convert nil `SplitID` to nil message Document that `SplitID.ToV2` method return `nil` when called on `nil`. Document that `NewSplitIDFromV2` function return `nil` when called on `nil`. Write corresponding unit tests. Signed-off-by: Pavel Karpy --- pkg/object/splitid.go | 8 ++++++++ pkg/object/splitid_test.go | 15 +++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/pkg/object/splitid.go b/pkg/object/splitid.go index 8e9eaa2..e495e8d 100644 --- a/pkg/object/splitid.go +++ b/pkg/object/splitid.go @@ -18,7 +18,13 @@ func NewSplitID() *SplitID { // NewSplitIDFromV2 returns parsed UUID from bytes. // If v is invalid UUIDv4 byte sequence, then function returns nil. +// +// Nil converts to nil. func NewSplitIDFromV2(v []byte) *SplitID { + if v == nil { + return nil + } + id := uuid.New() err := id.UnmarshalBinary(v) @@ -58,6 +64,8 @@ func (id *SplitID) SetUUID(v uuid.UUID) { } // ToV2 converts SplitID to a representation of SplitID in neofs-api v2. +// +// Nil SplitID converts to nil. func (id *SplitID) ToV2() []byte { if id == nil { return nil diff --git a/pkg/object/splitid_test.go b/pkg/object/splitid_test.go index 04b40f7..7371ed3 100644 --- a/pkg/object/splitid_test.go +++ b/pkg/object/splitid_test.go @@ -46,3 +46,18 @@ func TestSplitID(t *testing.T) { }) } +func TestSplitID_ToV2(t *testing.T) { + t.Run("nil", func(t *testing.T) { + var x *object.SplitID + + require.Nil(t, x.ToV2()) + }) +} + +func TestNewIDFromV2(t *testing.T) { + t.Run("from nil", func(t *testing.T) { + var x []byte + + require.Nil(t, object.NewSplitIDFromV2(x)) + }) +}