51 lines
2.0 KiB
JavaScript
51 lines
2.0 KiB
JavaScript
// SPDX-License-Identifier: LGPL-2.1-or-later
|
|
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
const { pathToFileURL } = require("url");
|
|
|
|
const buildDirectory = path.resolve(process.argv[2] || "build-web/configure/bin");
|
|
|
|
async function main()
|
|
{
|
|
globalThis.__dirname = `${buildDirectory}${path.sep}`;
|
|
globalThis.require = require;
|
|
const moduleUrl = pathToFileURL(path.join(buildDirectory, "FreeCADWebSpreadsheetRuntimeProbe.js")).href;
|
|
const module = await import(moduleUrl);
|
|
const probe = await module.default({
|
|
wasmBinary: fs.readFileSync(path.join(buildDirectory, "FreeCADWebSpreadsheetRuntimeProbe.wasm")),
|
|
});
|
|
const call = (name, returnType = "number", argTypes = [], args = []) => probe.ccall(name, returnType, argTypes, args);
|
|
const result = {
|
|
initialize: call("fc_web_spreadsheet_initialize"),
|
|
createRecompute: call("fc_web_spreadsheet_create_recompute"),
|
|
typeName: call("fc_web_spreadsheet_type_name", "string"),
|
|
objectCount: call("fc_web_spreadsheet_object_count"),
|
|
recomputeCount: call("fc_web_spreadsheet_recompute_count"),
|
|
recomputeHasError: call("fc_web_spreadsheet_recompute_has_error"),
|
|
cellA1: call("fc_web_spreadsheet_cell_a1", "string"),
|
|
cellB1: call("fc_web_spreadsheet_cell_b1", "string"),
|
|
resourcesReleased: call("fc_web_spreadsheet_create_resources_released"),
|
|
error: call("fc_web_spreadsheet_last_error", "string"),
|
|
};
|
|
const valid = result.initialize === 1
|
|
&& result.createRecompute === 1
|
|
&& result.typeName === "Spreadsheet::Sheet"
|
|
&& result.objectCount === 1
|
|
&& result.recomputeCount === 1
|
|
&& result.recomputeHasError === 0
|
|
&& result.cellA1 === "21"
|
|
&& result.cellB1 === "=A1*2"
|
|
&& result.resourcesReleased === 1
|
|
&& result.error === "";
|
|
if (!valid) {
|
|
throw new Error(JSON.stringify(result));
|
|
}
|
|
console.log(JSON.stringify(result));
|
|
}
|
|
|
|
main().catch((error) => {
|
|
console.error(error);
|
|
process.exitCode = 1;
|
|
});
|