Skip to content

Commit

Permalink
wire: Modify MsgSerializerTest
Browse files Browse the repository at this point in the history
- Previously MsgSerializerTest tests were using the (En|De)codeMsg
  functions directly.

- But, after introducing wire serialization abstraction, these functions
  should be used directly, as they do not use the wire serializer.

- Modify the MsgSerializerTest function to use (En|De)codeEnvelope
  instead.

- Also, remove encode/decode test for envelope type. Because this is
  already done using MsgSerializerTest for each Message type.

Signed-off-by: Manoranjith <[email protected]>
  • Loading branch information
Manoranjith committed Jan 17, 2022
1 parent 3cb4ff6 commit 71957fe
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 13 deletions.
6 changes: 0 additions & 6 deletions wire/msg_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import (
"github.com/stretchr/testify/assert"

"perun.network/go-perun/wire"
wiretest "perun.network/go-perun/wire/test"
"polycry.pt/poly-go/test"
)

Expand Down Expand Up @@ -58,8 +57,3 @@ func TestRegisterExternalDecoder(t *testing.T) {
"registration of internal type should fail",
)
}

func TestEnvelope_EncodeDecode(t *testing.T) {
ping := wiretest.NewRandomEnvelope(test.Prng(t), wire.NewPingMsg())
wiretest.GenericSerializerTest(t, ping)
}
25 changes: 18 additions & 7 deletions wire/test/msgtest.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,37 @@ package test

import (
"io"
"math/rand"
"testing"

"perun.network/go-perun/wire"
pkgtest "polycry.pt/poly-go/test"
)

type serializerMsg struct {
Msg wire.Msg
// serializableEnvelope implements perunio serializer for wire.Envelope, so
// that generic serialzer tests can be run for envelopes.
type serializableEnvelope struct {
env *wire.Envelope
}

func (msg *serializerMsg) Encode(writer io.Writer) error {
return wire.EncodeMsg(msg.Msg, writer)
func (e *serializableEnvelope) Encode(writer io.Writer) error {
return wire.EncodeEnvelope(writer, e.env)
}

func (msg *serializerMsg) Decode(reader io.Reader) (err error) {
msg.Msg, err = wire.DecodeMsg(reader)
func (e *serializableEnvelope) Decode(reader io.Reader) (err error) {
e.env, err = wire.DecodeEnvelope(reader)
return err
}

func newSerializableEnvelope(rng *rand.Rand, msg wire.Msg) *serializableEnvelope {
return &serializableEnvelope{env: NewRandomEnvelope(rng, msg)}
}

// MsgSerializerTest performs generic serializer tests on a wire.Msg object.
// It tests the perunio encoder/decoder implementations on the individual types
// and the registration of the corresponding decoders.
func MsgSerializerTest(t *testing.T, msg wire.Msg) {
t.Helper()
GenericSerializerTest(t, &serializerMsg{msg})

GenericSerializerTest(t, newSerializableEnvelope(pkgtest.Prng(t), msg))
}

0 comments on commit 71957fe

Please sign in to comment.