2018-08-14 22:36:43 +02:00
|
|
|
#!/usr/bin/env node
|
|
|
|
|
2019-06-17 19:00:16 +02:00
|
|
|
var fs = require('fs');
|
2020-06-21 12:31:03 +02:00
|
|
|
require("wabt")().then(wabt => {
|
2018-08-14 22:36:43 +02:00
|
|
|
|
2020-06-13 17:18:21 +02:00
|
|
|
const wasmImports = require( "./{test}.wasm.js" );
|
|
|
|
var filename = '{test}.wat';
|
2019-06-17 19:00:16 +02:00
|
|
|
var text = fs.readFileSync(filename, "utf8");
|
|
|
|
var testData = JSON.parse( fs.readFileSync( "testdata.json", "utf8" ) );
|
2018-08-14 22:36:43 +02:00
|
|
|
|
2020-06-20 11:37:22 +02:00
|
|
|
var features = {'sat_float_to_int':true, 'sign_extension':true, 'exceptions':true, 'reference_types':true, 'gc':true};
|
2019-06-17 19:00:16 +02:00
|
|
|
var wasm = wabt.parseWat(filename, text, features);
|
|
|
|
wasm = wasm.toBinary({}).buffer;
|
2018-08-14 22:36:43 +02:00
|
|
|
|
2019-11-02 18:09:35 +01:00
|
|
|
// save the test result
|
|
|
|
function saveResults(result) {
|
|
|
|
fs.writeFileSync( "testresult.json", JSON.stringify(result) );
|
|
|
|
}
|
|
|
|
|
|
|
|
function callExport( instance, wasmImports ) {
|
|
|
|
wasmImports.exports = instance.exports;
|
2019-06-17 19:00:16 +02:00
|
|
|
var result = {};
|
|
|
|
for (var method in testData) {
|
|
|
|
try{
|
2019-10-20 14:43:05 +02:00
|
|
|
result[method] = String(instance.exports[method]( ...testData[method] ));
|
2019-06-17 19:00:16 +02:00
|
|
|
}catch(err){
|
2020-02-28 10:00:44 +01:00
|
|
|
result[method] = err.stack;
|
2019-06-17 19:00:16 +02:00
|
|
|
}
|
2018-08-14 22:36:43 +02:00
|
|
|
}
|
2019-11-02 18:09:35 +01:00
|
|
|
saveResults(result);
|
2018-08-14 22:36:43 +02:00
|
|
|
}
|
|
|
|
|
2019-07-03 20:09:22 +02:00
|
|
|
WebAssembly.instantiate( wasm, wasmImports ).then(
|
2019-11-02 18:09:35 +01:00
|
|
|
obj => callExport( obj.instance, wasmImports ),
|
2018-08-14 22:36:43 +02:00
|
|
|
reason => console.log(reason)
|
|
|
|
);
|
2020-06-21 12:31:03 +02:00
|
|
|
|
|
|
|
}); // wabt
|