49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package vs
|
|
|
|
import (
|
|
_ "embed"
|
|
"testing"
|
|
|
|
"github.com/tetratelabs/wazero/internal/testing/require"
|
|
)
|
|
|
|
var (
|
|
// catFS is an embedded filesystem limited to test.txt
|
|
//go:embed testdata/fac.wasm
|
|
factorialWasm []byte
|
|
factorialParam = uint64(30)
|
|
factorialResult = uint64(9682165104862298112)
|
|
factorialConfig *RuntimeConfig
|
|
)
|
|
|
|
func init() {
|
|
factorialConfig = &RuntimeConfig{
|
|
ModuleName: "math",
|
|
ModuleWasm: factorialWasm,
|
|
FuncNames: []string{"fac-ssa"},
|
|
}
|
|
}
|
|
|
|
func factorialCall(m Module, _ int) error {
|
|
_, err := m.CallI64_I64(testCtx, "fac-ssa", factorialParam)
|
|
return err
|
|
}
|
|
|
|
func RunTestFactorial(t *testing.T, runtime func() Runtime) {
|
|
testCall(t, runtime, factorialConfig, testFactorialCall)
|
|
}
|
|
|
|
func testFactorialCall(t *testing.T, m Module, instantiation, iteration int) {
|
|
res, err := m.CallI64_I64(testCtx, "fac-ssa", factorialParam)
|
|
require.NoError(t, err, "instantiation[%d] iteration[%d] failed", instantiation, iteration)
|
|
require.Equal(t, factorialResult, res)
|
|
}
|
|
|
|
func RunTestBenchmarkFactorial_Call_CompilerFastest(t *testing.T, vsRuntime Runtime) {
|
|
runTestBenchmark_Call_CompilerFastest(t, factorialConfig, "Factorial", factorialCall, vsRuntime)
|
|
}
|
|
|
|
func RunBenchmarkFactorial(b *testing.B, runtime func() Runtime) {
|
|
benchmark(b, runtime, factorialConfig, factorialCall)
|
|
}
|