1 package binary
2
3 import (
4 "bytes"
5 "fmt"
6 "math"
7 "testing"
8
9 "github.com/tetratelabs/wazero/internal/testing/binaryencoding"
10 "github.com/tetratelabs/wazero/internal/testing/require"
11 )
12
13 func TestLimitsType(t *testing.T) {
14 zero := uint32(0)
15 largest := uint32(math.MaxUint32)
16
17 tests := []struct {
18 name string
19 min uint32
20 max *uint32
21 expected []byte
22 }{
23 {
24 name: "min 0",
25 expected: []byte{0x0, 0},
26 },
27 {
28 name: "min 0, max 0",
29 max: &zero,
30 expected: []byte{0x1, 0, 0},
31 },
32 {
33 name: "min largest",
34 min: largest,
35 expected: []byte{0x0, 0xff, 0xff, 0xff, 0xff, 0xf},
36 },
37 {
38 name: "min 0, max largest",
39 max: &largest,
40 expected: []byte{0x1, 0, 0xff, 0xff, 0xff, 0xff, 0xf},
41 },
42 {
43 name: "min largest max largest",
44 min: largest,
45 max: &largest,
46 expected: []byte{0x1, 0xff, 0xff, 0xff, 0xff, 0xf, 0xff, 0xff, 0xff, 0xff, 0xf},
47 },
48 }
49
50 for _, tt := range tests {
51 tc := tt
52
53 b := binaryencoding.EncodeLimitsType(tc.min, tc.max)
54 t.Run(fmt.Sprintf("encode - %s", tc.name), func(t *testing.T) {
55 require.Equal(t, tc.expected, b)
56 })
57
58 t.Run(fmt.Sprintf("decode - %s", tc.name), func(t *testing.T) {
59 min, max, err := decodeLimitsType(bytes.NewReader(b))
60 require.NoError(t, err)
61 require.Equal(t, min, tc.min)
62 require.Equal(t, max, tc.max)
63 })
64 }
65 }
66
View as plain text