diff --git a/internal/integration_test/engine/adhoc_test.go b/internal/integration_test/engine/adhoc_test.go index 178d61bd24..729fddf68e 100644 --- a/internal/integration_test/engine/adhoc_test.go +++ b/internal/integration_test/engine/adhoc_test.go @@ -502,9 +502,15 @@ func testHostFunctionNumericParameter(t *testing.T, r wazero.Runtime) { "i32": func(ctx context.Context, p uint32) uint32 { return p + 1 }, + "i32n": func(ctx context.Context, p int32) int32 { + return p - 1 + }, "i64": func(ctx context.Context, p uint64) uint64 { return p + 1 }, + "i64n": func(ctx context.Context, p int64) int64 { + return p - 1 + }, "f32": func(ctx context.Context, p float32) float32 { return p + 1 }, @@ -524,12 +530,24 @@ func testHostFunctionNumericParameter(t *testing.T, r wazero.Runtime) { input: math.MaxUint32 - 1, expected: math.MaxUint32, }, + { + name: "i32n", + vt: i32, + input: api.EncodeI32(math.MinInt32 + 1), + expected: api.EncodeI32(math.MinInt32), + }, { name: "i64", vt: i64, input: math.MaxUint64 - 1, expected: math.MaxUint64, }, + { + name: "i64n", + vt: i64, + input: api.EncodeI64(math.MinInt64 + 1), + expected: api.EncodeI64(math.MinInt64), + }, { name: "f32", vt: wasm.ValueTypeF32, @@ -562,7 +580,12 @@ func testHostFunctionNumericParameter(t *testing.T, r wazero.Runtime) { results, err := importing.ExportedFunction("call_return_input").Call(testCtx, test.input) require.NoError(t, err) - require.Equal(t, test.expected, results[0]) + switch test.vt { + case i32, f32: + require.Equal(t, uint32(test.expected), uint32(results[0])) + case i64, f64: + require.Equal(t, test.expected, results[0]) + } }) } }