import assert from "assert"; // Basic tests to make sure that we do not push something obviously broken console.log("importing binaryen"); const binaryen = (await import("../index.js")).default; assert(binaryen); console.log("constructing a module"); var mod = new binaryen.Module(); assert(mod); console.log("creating an expression"); var expr = mod.i32.const(0); assert(expr); console.log("creating a statement"); var stmt = mod.return(expr); assert(stmt); console.log("adding a function"); var func = mod.addFunction("main", binaryen.none, binaryen.i32, [], stmt); assert(func); console.log("creating a multi-value type"); var mvtype = binaryen.createType([ binaryen.i32, binaryen.f64 ]); assert(mvtype); console.log("adding a function import"); mod.addFunctionImport("func", "env", "func", mvtype, binaryen.i32); console.log("adding a function export"); mod.addFunctionExport("main", "main"); console.log("adding a memory import"); mod.addMemoryImport("0", "env", "memory"); console.log("adding a memory export"); mod.addMemoryExport("0", "memory"); console.log("validating the module"); assert(mod.validate()); console.log("emitting text"); var text = mod.emitText(); assert(typeof text === "string" && text.length); console.log(text); console.log("optimizing the module"); assert.doesNotThrow(() => mod.optimize()); console.log("emitting text (again)"); text = mod.emitText(); assert(typeof text === "string" && text.length); console.log(text); console.log("emitting a binary"); var binary = mod.emitBinary(); assert(binary && binary.length); console.log(Array.from(binary)); console.log("emitting js"); var js = mod.emitAsmjs(); assert(typeof js === "string" && js.length); console.log("wrapping an existing module"); var wrapped = binaryen.wrapModule(mod.ptr); assert(wrapped.getFunction("main"));