From 0810956e88ab3546b140212c3dc4de8f617b87d0 Mon Sep 17 00:00:00 2001 From: capossele <angelocapossele@gmail.com> Date: Wed, 18 Mar 2020 20:42:07 +0000 Subject: [PATCH] :recycle: improves parsing --- .../collectiveBeacon/collective_beacon.go | 9 +++++++++ .../collectiveBeacon/collective_beacon_test.go | 16 +++++++--------- packages/binary/drng/payload/payload.go | 9 +++++++++ packages/binary/drng/payload/payload_test.go | 10 ++++------ 4 files changed, 29 insertions(+), 15 deletions(-) diff --git a/packages/binary/drng/payload/collectiveBeacon/collective_beacon.go b/packages/binary/drng/payload/collectiveBeacon/collective_beacon.go index 56013c99..8682758a 100644 --- a/packages/binary/drng/payload/collectiveBeacon/collective_beacon.go +++ b/packages/binary/drng/payload/collectiveBeacon/collective_beacon.go @@ -58,6 +58,15 @@ func (payload *Payload) DistributedPK() []byte { return payload.dpk } +// Parse is a wrapper for simplified unmarshaling in a byte stream using the marshalUtil package. +func Parse(marshalUtil *marshalutil.MarshalUtil) (*Payload, error) { + if payload, err := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return FromBytes(data) }); err != nil { + return &Payload{}, err + } else { + return payload.(*Payload), nil + } +} + // FromBytes parses the marshaled version of a Payload into an object. // It either returns a new Payload or fills an optionally provided Payload with the parsed information. func FromBytes(bytes []byte, optionalTargetObject ...*Payload) (result *Payload, err error, consumedBytes int) { diff --git a/packages/binary/drng/payload/collectiveBeacon/collective_beacon_test.go b/packages/binary/drng/payload/collectiveBeacon/collective_beacon_test.go index aaf92bf3..8bcb69a2 100644 --- a/packages/binary/drng/payload/collectiveBeacon/collective_beacon_test.go +++ b/packages/binary/drng/payload/collectiveBeacon/collective_beacon_test.go @@ -18,15 +18,13 @@ func TestParse(t *testing.T) { bytes := payload.Bytes() marshalUtil := marshalutil.New(bytes) - parsedpayload, err := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return FromBytes(data) }) + parsedPayload, err := Parse(marshalUtil) require.NoError(t, err) - cb := parsedpayload.(*Payload) - - require.Equal(t, payload.SubType(), cb.SubType()) - require.Equal(t, payload.Instance(), cb.Instance()) - require.Equal(t, payload.Round(), cb.Round()) - require.Equal(t, payload.PrevSignature(), cb.PrevSignature()) - require.Equal(t, payload.Signature(), cb.Signature()) - require.Equal(t, payload.DistributedPK(), cb.DistributedPK()) + require.Equal(t, payload.SubType(), parsedPayload.SubType()) + require.Equal(t, payload.Instance(), parsedPayload.Instance()) + require.Equal(t, payload.Round(), parsedPayload.Round()) + require.Equal(t, payload.PrevSignature(), parsedPayload.PrevSignature()) + require.Equal(t, payload.Signature(), parsedPayload.Signature()) + require.Equal(t, payload.DistributedPK(), parsedPayload.DistributedPK()) } diff --git a/packages/binary/drng/payload/payload.go b/packages/binary/drng/payload/payload.go index 9637cbcb..aaf75527 100644 --- a/packages/binary/drng/payload/payload.go +++ b/packages/binary/drng/payload/payload.go @@ -36,6 +36,15 @@ func (payload *Payload) Data() []byte { return payload.data } +// Parse is a wrapper for simplified unmarshaling in a byte stream using the marshalUtil package. +func Parse(marshalUtil *marshalutil.MarshalUtil) (*Payload, error) { + if payload, err := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return FromBytes(data) }); err != nil { + return &Payload{}, err + } else { + return payload.(*Payload), nil + } +} + // FromBytes parses the marshaled version of a Payload into an object. // It either returns a new Payload or fills an optionally provided Payload with the parsed information. func FromBytes(bytes []byte, optionalTargetObject ...*Payload) (result *Payload, err error, consumedBytes int) { diff --git a/packages/binary/drng/payload/payload_test.go b/packages/binary/drng/payload/payload_test.go index 16aa567b..ad811340 100644 --- a/packages/binary/drng/payload/payload_test.go +++ b/packages/binary/drng/payload/payload_test.go @@ -15,12 +15,10 @@ func TestParse(t *testing.T) { bytes := payload.Bytes() marshalUtil := marshalutil.New(bytes) - parsedpayload, err := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return FromBytes(data) }) + parsedPayload, err := Parse(marshalUtil) require.NoError(t, err) - cb := parsedpayload.(*Payload) - - require.Equal(t, payload.SubType(), cb.SubType()) - require.Equal(t, payload.Instance(), cb.Instance()) - require.Equal(t, payload.Data(), cb.Data()) + require.Equal(t, payload.SubType(), parsedPayload.SubType()) + require.Equal(t, payload.Instance(), parsedPayload.Instance()) + require.Equal(t, payload.Data(), parsedPayload.Data()) } -- GitLab