From 260ad0e1bd0931956cf8c689e81fffc59d12e2aa Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Tue, 15 Oct 2024 21:59:08 +0300 Subject: feat: communication using custom packet protocol --- internal/packet/packet_test.go | 50 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 internal/packet/packet_test.go (limited to 'internal/packet/packet_test.go') diff --git a/internal/packet/packet_test.go b/internal/packet/packet_test.go new file mode 100644 index 0000000..20370af --- /dev/null +++ b/internal/packet/packet_test.go @@ -0,0 +1,50 @@ +package packet + +import ( + "testing" + + "github.com/vmihailenco/msgpack/v5" +) + +func TestMsgPackEncoding(t *testing.T) { + request := EkoMessage{Message: "test"} + data, err := msgpack.Marshal(&request) + if err != nil { + t.Errorf("encoding error: %v", err) + return + } + var response EkoMessage + err = msgpack.Unmarshal(data, &response) + if err != nil { + t.Errorf("decoding error: %v", err) + return + } + if request.Message != response.Message { + t.Errorf("%v != %v", request.Message, response.Message) + return + } +} + +func TestPacketMsgPackEncoding(t *testing.T) { + request := EkoMessage{Message: "test"} + encoder1, err := NewMsgPackEncoder(&request) + encoder2, _ := NewMsgPackEncoder(&request) + if err != nil { + t.Errorf("encoding error: %v", err) + return + } + encodedBytes := make([]byte, PACKET_MAX_SIZE) + n, _ := encoder2.Read(encodedBytes[HEADER_SIZE:]) + + packet := NewPacket(encoder1) + var response EkoMessage + err = packet.DecodePayload(&response) + if err != nil { + t.Errorf("decoding error: %#v: packet: %v encoder: %v", err, packet.Payload(), encodedBytes[HEADER_SIZE:HEADER_SIZE+n]) + return + } + if request.Message != response.Message { + t.Errorf("%v != %v", request.Message, response.Message) + return + } +} -- cgit v1.3.1