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) } }