diff --git a/metadaptb_test.go b/metadaptb_test.go new file mode 100644 index 0000000..416f5fd --- /dev/null +++ b/metadaptb_test.go @@ -0,0 +1,62 @@ +package hopp + +import "io" +import "bytes" +import "errors" +import "slices" +import "testing" + +func TestEncodeMessageB(test *testing.T) { + buffer := new(bytes.Buffer) + payload := []byte { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 } + err := encodeMessageB(buffer, 0x6B12, payload) + correct := []byte { + 0x6B, 0x12, + 0x00, 0x06, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + } + if err != nil { + test.Fatal(err) + } + if got, correct := buffer.Bytes(), correct; !slices.Equal(got, correct) { + test.Fatalf("not equal: %v %v", got, correct) + } +} + +func TestEncodeMessageBErr(test *testing.T) { + buffer := new(bytes.Buffer) + payload := make([]byte, 0x10000) + err := encodeMessageB(buffer, 0x6B12, payload) + if !errors.Is(err, ErrPayloadTooLarge) { + test.Fatalf("wrong error: %v", err) + } +} + +func TestDecodeMessageB(test *testing.T) { + method, payload, err := decodeMessageB(bytes.NewReader([]byte { + 0x6B, 0x12, + 0x00, 0x06, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + })) + if err != nil { + test.Fatal(err) + } + if got, correct := method, uint16(0x6B12); got != correct { + test.Fatalf("not equal: %v %v", got, correct) + } + correctPayload := []byte { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 } + if got, correct := payload, correctPayload; !slices.Equal(got, correct) { + test.Fatalf("not equal: %v %v", got, correct) + } +} + +func TestDecodeMessageBErr(test *testing.T) { + _, _, err := decodeMessageB(bytes.NewReader([]byte { + 0x6B, 0x12, + 0x01, 0x06, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + })) + if !errors.Is(err, io.ErrUnexpectedEOF) { + test.Fatalf("wrong error: %v", err) + } +}