diff --git a/metadapta_test.go b/metadapta_test.go new file mode 100644 index 0000000..c4c8f9b --- /dev/null +++ b/metadapta_test.go @@ -0,0 +1,27 @@ +package hopp + +import "bytes" +import "slices" +import "testing" + +func TestDecodeMessageA(test *testing.T) { + transID, method, payload, err := decodeMessageA(bytes.NewReader([]byte { + 0x58, 0x00, 0xFE, 0xAB, 0xC3, 0x10, 0x4F, 0x04, + 0x6B, 0x12, + 0x00, 0x06, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + })) + if err != nil { + test.Fatal(err) + } + if got, correct := transID, int64(0x5800FEABC3104F04); got != correct { + test.Fatalf("not equal: %v %v", got, correct) + } + 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) + } +} diff --git a/tape/types_test.go b/tape/types_test.go index 71d938c..994a586 100644 --- a/tape/types_test.go +++ b/tape/types_test.go @@ -246,6 +246,23 @@ func TestStringArray(test *testing.T) { } } +func TestU16CastSafe(test *testing.T) { + number, ok := U16CastSafe(90_000) + if ok { test.Fatalf("false positive: %v, %v", number, ok) } + number, ok = U16CastSafe(-478) + if ok { test.Fatalf("false positive: %v, %v", number, ok) } + number, ok = U16CastSafe(3870) + if !ok { test.Fatalf("false negative: %v, %v", number, ok) } + if got, correct := number, uint16(3870); got != correct { + test.Fatalf("not equal: %v %v", got, correct) + } + number, ok = U16CastSafe(0) + if !ok { test.Fatalf("false negative: %v, %v", number, ok) } + if got, correct := number, uint16(0); got != correct { + test.Fatalf("not equal: %v %v", got, correct) + } +} + func randString(length int) string { buffer := make([]byte, length) for index := range buffer {