-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathlist_test.go
More file actions
39 lines (31 loc) · 1.04 KB
/
list_test.go
File metadata and controls
39 lines (31 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package bogo
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestListEncoding(t *testing.T) {
expected := []any{1, true, nil, "yes", 0.5, uint16(120), []any{7, 8, 9}, -98.0005}
res, err := encodeList(expected)
require.NoError(t, err)
assert.Equal(t, TypeUntypedList, int(res[0]))
arrLen := uint64(res[1])
size, err := decodeUint(res[2 : 2+arrLen])
require.NoError(t, err)
assert.Equal(t, size, uint64(len(res[2+arrLen:])))
var actual []any
err = decodeList(res[3:], &actual)
require.NoError(t, err)
assert.Equal(t, int64(expected[0].(int)), actual[0])
assert.Equal(t, expected[1], actual[1])
assert.Equal(t, expected[2], actual[2])
assert.Equal(t, expected[3], actual[3])
assert.Equal(t, expected[4], actual[4])
assert.Equal(t, uint64(expected[5].(uint16)), actual[5])
expInner := expected[6].([]interface{})
actInner := actual[6].([]interface{})
for i := range expInner {
assert.Equal(t, int64(expInner[i].(int)), actInner[i])
}
assert.Equal(t, expected[7], actual[7])
}