Files
wazero/internal/integration_test/vs/bench_factorial.go
2022-08-26 07:32:05 +09:00

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)
}