diff --git a/free_d_test.go b/free_d_test.go index 4f8e134..36e974e 100644 --- a/free_d_test.go +++ b/free_d_test.go @@ -9,12 +9,12 @@ import ( func TestMessageDecoding(t *testing.T) { testCases := []struct { description string - bytes []byte + bytes [29]byte expected FreeDPosition }{ { description: "simple position message", - bytes: []byte{0xd1, 0x01, 0x5a, 0x00, 0x00, 0x2d, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x7f, 0xff, 0x40, 0x7f, 0xff, 0x80, 0x7f, 0xff, + bytes: [29]byte{0xd1, 0x01, 0x5a, 0x00, 0x00, 0x2d, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x7f, 0xff, 0x40, 0x7f, 0xff, 0x80, 0x7f, 0xff, 0xc0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00, 0x00, 50, }, expected: FreeDPosition{ @@ -48,15 +48,15 @@ func TestMessageDecoding(t *testing.T) { } } -func TestMessageEncoding(t *testing.T) { +func TestGoodMessageEncoding(t *testing.T) { testCases := []struct { description string - expected []byte + expected [29]byte message FreeDPosition }{ { description: "simple position message", - expected: []byte{0xd1, 0x01, 0x5a, 0x00, 0x00, 0x2d, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x7f, 0xff, 0x40, 0x7f, 0xff, 0x80, 0x7f, 0xff, + expected: [29]byte{0xd1, 0x01, 0x5a, 0x00, 0x00, 0x2d, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x7f, 0xff, 0x40, 0x7f, 0xff, 0x80, 0x7f, 0xff, 0xc0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00, 0x00, 50, }, message: FreeDPosition{ @@ -86,7 +86,7 @@ func TestMessageEncoding(t *testing.T) { } func BenchmarkMessageDecoding(b *testing.B) { - data := []byte{0xd1, 0x01, 0x5a, 0x00, 0x00, 0x2d, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x7f, 0xff, 0x40, 0x7f, 0xff, 0x80, 0x7f, 0xff, + data := [29]byte{0xd1, 0x01, 0x5a, 0x00, 0x00, 0x2d, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x7f, 0xff, 0x40, 0x7f, 0xff, 0x80, 0x7f, 0xff, 0xc0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00, 0x00, 50, } for b.Loop() { @@ -110,3 +110,17 @@ func BenchmarkMessageEncoding(b *testing.B) { Encode(message) } } + +func FuzzMessageDecoding(f *testing.F) { + f.Add([]byte{0xd1, 0x01, 0x5a, 0x00, 0x00, 0x2d, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x7f, 0xff, 0x40, 0x7f, 0xff, 0x80, 0x7f, 0xff, + 0xc0, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x00, 0x00, 50, + }) + f.Fuzz(func(t *testing.T, data []byte) { + if len(data) != 29 { + return + } + var dataArray [29]byte + copy(dataArray[:], data) + Decode(dataArray) + }) +}