aboutsummaryrefslogtreecommitdiffstats
path: root/codec/msg_codec_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'codec/msg_codec_test.go')
-rw-r--r--codec/msg_codec_test.go63
1 files changed, 63 insertions, 0 deletions
diff --git a/codec/msg_codec_test.go b/codec/msg_codec_test.go
new file mode 100644
index 0000000..cd1240e
--- /dev/null
+++ b/codec/msg_codec_test.go
@@ -0,0 +1,63 @@
+package codec
+
+import (
+ "bytes"
+ "testing"
+
+ "git.fd.io/govpp.git/api"
+)
+
+type MyMsg struct {
+ Index uint16
+ Label []byte `struc:"[16]byte"`
+ Port uint16
+}
+
+func (*MyMsg) GetMessageName() string {
+ return "my_msg"
+}
+func (*MyMsg) GetCrcString() string {
+ return "xxxxx"
+}
+func (*MyMsg) GetMessageType() api.MessageType {
+ return api.OtherMessage
+}
+
+func TestEncode(t *testing.T) {
+ tests := []struct {
+ name string
+ msg api.Message
+ msgID uint16
+ expData []byte
+ }{
+ {name: "basic",
+ msg: &MyMsg{Index: 1, Label: []byte("Abcdef"), Port: 1000},
+ msgID: 100,
+ expData: []byte{0x00, 0x64, 0x00, 0x01, 0x41, 0x62, 0x63, 0x64, 0x65, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE8},
+ },
+ }
+ for _, test := range tests {
+ t.Run(test.name, func(t *testing.T) {
+ c := &MsgCodec{}
+
+ data, err := c.EncodeMsg(test.msg, test.msgID)
+ if err != nil {
+ t.Fatalf("expected nil error, got: %v", err)
+ }
+ if !bytes.Equal(data, test.expData) {
+ t.Fatalf("expected data: % 0X, got: % 0X", test.expData, data)
+ }
+ })
+ }
+}
+
+func TestEncodePanic(t *testing.T) {
+ c := &MsgCodec{}
+
+ msg := &MyMsg{Index: 1, Label: []byte("thisIsLongerThan16Bytes"), Port: 1000}
+
+ _, err := c.EncodeMsg(msg, 100)
+ if err == nil {
+ t.Fatalf("expected non-nil error, got: %v", err)
+ }
+}