From 831b36ef76692ef64a6548e044d96990a89e5118 Mon Sep 17 00:00:00 2001 From: wdvxdr Date: Sun, 5 Jun 2022 17:32:11 +0800 Subject: [PATCH] feat: add a debug mode for internal/proto.Marshal --- internal/proto/wrapper.go | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/internal/proto/wrapper.go b/internal/proto/wrapper.go index 7b21dbff..b71046b5 100644 --- a/internal/proto/wrapper.go +++ b/internal/proto/wrapper.go @@ -1,11 +1,33 @@ package proto -import "github.com/RomiChan/protobuf/proto" +import ( + "reflect" + + "github.com/RomiChan/protobuf/proto" +) + +// TODO: move to a new package +const debug = false type Message = any func Marshal(m Message) ([]byte, error) { - return proto.Marshal(m) + b, err := proto.Marshal(m) + if err != nil { + return b, err + } + if debug { + t := reflect.TypeOf(m).Elem() + n := reflect.New(t) + err = Unmarshal(b, n.Interface()) + if err != nil { + panic(err) + } + if reflect.DeepEqual(m, n) { + panic("not equal") + } + } + return b, err } func Unmarshal(b []byte, m Message) error {