Files
wazero/internal/testing/binaryencoding/value_test.go
Edoardo Vacchi 117474c477 refactor binary encoding to its own package (#1187)
move binary encoder to its own package

Signed-off-by: Edoardo Vacchi <evacchi@users.noreply.github.com>
2023-03-03 07:21:22 +08:00

113 lines
2.8 KiB
Go

package binaryencoding
import (
"testing"
"github.com/tetratelabs/wazero/internal/testing/require"
"github.com/tetratelabs/wazero/internal/wasm"
)
func TestEncodeValTypes(t *testing.T) {
i32, i64, f32, f64, ext, fref := wasm.ValueTypeI32, wasm.ValueTypeI64, wasm.ValueTypeF32, wasm.ValueTypeF64, wasm.ValueTypeExternref, wasm.ValueTypeFuncref
tests := []struct {
name string
input []wasm.ValueType
expected []byte
}{
{
name: "empty",
input: []wasm.ValueType{},
expected: []byte{0},
},
{
name: "undefined", // ensure future spec changes don't panic
input: []wasm.ValueType{0x6f},
expected: []byte{1, 0x6f},
},
{
name: "funcref",
input: []wasm.ValueType{fref},
expected: []byte{1, fref},
},
{
name: "externref",
input: []wasm.ValueType{ext},
expected: []byte{1, ext},
},
{
name: "i32",
input: []wasm.ValueType{i32},
expected: []byte{1, i32},
},
{
name: "i64",
input: []wasm.ValueType{i64},
expected: []byte{1, i64},
},
{
name: "f32",
input: []wasm.ValueType{f32},
expected: []byte{1, f32},
},
{
name: "f64",
input: []wasm.ValueType{f64},
expected: []byte{1, f64},
},
{
name: "i32i64",
input: []wasm.ValueType{i32, i64},
expected: []byte{2, i32, i64},
},
{
name: "i32i64f32",
input: []wasm.ValueType{i32, i64, f32},
expected: []byte{3, i32, i64, f32},
},
{
name: "i32i64f32f64",
input: []wasm.ValueType{i32, i64, f32, f64},
expected: []byte{4, i32, i64, f32, f64},
},
{
name: "i32i64f32f64i32",
input: []wasm.ValueType{i32, i64, f32, f64, i32},
expected: []byte{5, i32, i64, f32, f64, i32},
},
{
name: "i32i64f32f64i32i64",
input: []wasm.ValueType{i32, i64, f32, f64, i32, i64},
expected: []byte{6, i32, i64, f32, f64, i32, i64},
},
{
name: "i32i64f32f64i32i64f32",
input: []wasm.ValueType{i32, i64, f32, f64, i32, i64, f32},
expected: []byte{7, i32, i64, f32, f64, i32, i64, f32},
},
{
name: "i32i64f32f64i32i64f32f64",
input: []wasm.ValueType{i32, i64, f32, f64, i32, i64, f32, f64},
expected: []byte{8, i32, i64, f32, f64, i32, i64, f32, f64},
},
{
name: "i32i64f32f64i32i64f32f64i32",
input: []wasm.ValueType{i32, i64, f32, f64, i32, i64, f32, f64, i32},
expected: []byte{9, i32, i64, f32, f64, i32, i64, f32, f64, i32},
},
{
name: "i32i64f32f64i32i64f32f64i32i64",
input: []wasm.ValueType{i32, i64, f32, f64, i32, i64, f32, f64, i32, i64},
expected: []byte{10, i32, i64, f32, f64, i32, i64, f32, f64, i32, i64},
},
}
for _, tt := range tests {
tc := tt
t.Run(tc.name, func(t *testing.T) {
bytes := EncodeValTypes(tc.input)
require.Equal(t, tc.expected, bytes)
})
}
}