From df4d610fad0b2b397d5cfeef62f952ed37bff700 Mon Sep 17 00:00:00 2001 From: Pavel Karpy Date: Tue, 8 Jun 2021 18:06:03 +0300 Subject: [PATCH] [#302] pkg/netmap: Document default values set in `NewNodeInfo` and `NewNodeAttribute` Document field values of instance constructed via `NewNodeInfo` and `NewNodeAttribute`. Assert the values in corresponding unit test. Signed-off-by: Pavel Karpy --- pkg/netmap/node_info.go | 19 ++++++++++++++++++ pkg/netmap/node_info_test.go | 38 ++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) diff --git a/pkg/netmap/node_info.go b/pkg/netmap/node_info.go index 935f9d2..cd81358 100644 --- a/pkg/netmap/node_info.go +++ b/pkg/netmap/node_info.go @@ -188,6 +188,11 @@ func (s NodeState) String() string { } // NewNodeAttribute creates and returns new NodeAttribute instance. +// +// Defaults: +// - key: ""; +// - value: ""; +// - parents: nil. func NewNodeAttribute() *NodeAttribute { return NewNodeAttributeFromV2(new(netmap.Attribute)) } @@ -275,6 +280,12 @@ func (a *NodeAttribute) UnmarshalJSON(data []byte) error { } // NewNodeInfo creates and returns new NodeInfo instance. +// +// Defaults: +// - publicKey: nil; +// - address: ""; +// - attributes nil; +// - state: 0. func NewNodeInfo() *NodeInfo { return NewNodeInfoFromV2(new(netmap.NodeInfo)) } @@ -319,9 +330,17 @@ func (i *NodeInfo) SetAddress(addr string) { // Attributes returns list of the node attributes. func (i *NodeInfo) Attributes() []*NodeAttribute { + if i == nil { + return nil + } + as := (*netmap.NodeInfo)(i). GetAttributes() + if as == nil { + return nil + } + res := make([]*NodeAttribute, 0, len(as)) for i := range as { diff --git a/pkg/netmap/node_info_test.go b/pkg/netmap/node_info_test.go index ea80656..e380561 100644 --- a/pkg/netmap/node_info_test.go +++ b/pkg/netmap/node_info_test.go @@ -202,3 +202,41 @@ func TestNodeInfoEncoding(t *testing.T) { require.Equal(t, i, i2) }) } + +func TestNewNodeAttribute(t *testing.T) { + t.Run("default values", func(t *testing.T) { + attr := NewNodeAttribute() + + // check initial values + require.Empty(t, attr.Key()) + require.Empty(t, attr.Value()) + require.Nil(t, attr.ParentKeys()) + + // convert to v2 message + attrV2 := attr.ToV2() + + require.Empty(t, attrV2.GetKey()) + require.Empty(t, attrV2.GetValue()) + require.Nil(t, attrV2.GetParents()) + }) +} + +func TestNewNodeInfo(t *testing.T) { + t.Run("default values", func(t *testing.T) { + ni := NewNodeInfo() + + // check initial values + require.Nil(t, ni.PublicKey()) + require.Empty(t, ni.Address()) + require.Nil(t, ni.Attributes()) + require.Zero(t, ni.State()) + + // convert to v2 message + niV2 := ni.ToV2() + + require.Nil(t, niV2.GetPublicKey()) + require.Empty(t, niV2.GetAddress()) + require.Nil(t, niV2.GetAttributes()) + require.EqualValues(t, netmap.UnspecifiedState, niV2.GetState()) + }) +}