Advance N-023 through N-026 audited parity
This commit is contained in:
46
tools/web/check-library-main-reader.mjs
Normal file
46
tools/web/check-library-main-reader.mjs
Normal file
@@ -0,0 +1,46 @@
|
||||
import assert from "node:assert/strict";
|
||||
import fs from "node:fs";
|
||||
import factory from "../../web/app/src/vendor/blender/web_engine.js";
|
||||
|
||||
const root = new URL("../../", import.meta.url);
|
||||
const wasmBinary = fs.readFileSync(new URL("web/app/src/vendor/blender/web_engine.wasm", root));
|
||||
const fixture = fs.readFileSync(new URL("tests/files/web/image_resource_matrix.blend", root));
|
||||
|
||||
function open(engine, handle, bytes) {
|
||||
const pointer = engine._malloc(bytes.byteLength);
|
||||
try {
|
||||
engine.HEAPU8.set(bytes, pointer);
|
||||
assert.equal(engine._web_engine_open_blend(handle, pointer, bytes.byteLength), 0,
|
||||
engine.UTF8ToString(engine._web_engine_last_error_message()));
|
||||
}
|
||||
finally { engine._free(pointer); }
|
||||
}
|
||||
|
||||
function snapshot(engine, handle) {
|
||||
const dataOut = engine._malloc(4), lengthOut = engine._malloc(4);
|
||||
try {
|
||||
assert.equal(engine._web_engine_get_scene_snapshot(handle, dataOut, lengthOut), 0,
|
||||
engine.UTF8ToString(engine._web_engine_last_error_message()));
|
||||
const pointer = engine.HEAPU32[dataOut >>> 2], length = engine.HEAPU32[lengthOut >>> 2];
|
||||
return JSON.parse(new TextDecoder().decode(engine.HEAPU8.slice(pointer, pointer + length)));
|
||||
}
|
||||
finally { engine._free(dataOut); engine._free(lengthOut); }
|
||||
}
|
||||
|
||||
const engine = await factory({ wasmBinary: wasmBinary.slice() });
|
||||
const handle = engine._web_engine_create();
|
||||
open(engine, handle, fixture);
|
||||
const scene = snapshot(engine, handle);
|
||||
assert.equal(scene.libraryStatus, "AVAILABLE");
|
||||
assert.equal(scene.libraries.length, 1);
|
||||
const library = scene.libraries[0];
|
||||
assert.equal(library.id, "library:image_resource_library.blend");
|
||||
assert.equal(library.name, "image_resource_library.blend");
|
||||
assert.equal(library.sourcePath, "//resources/image_resource_library.blend");
|
||||
assert.equal(library.packed, false);
|
||||
assert.equal(library.status, "EXTERNAL_REQUIRED");
|
||||
assert.equal(library.errorCode, "LINKED_LIBRARY_RESOURCE_REQUIRED");
|
||||
assert.deepEqual(library.dependencyIds, []);
|
||||
assert.equal(library.readOnly, true);
|
||||
engine._web_engine_destroy(handle);
|
||||
process.stdout.write("library-main-reader-ok relative-path=passed readonly=passed dependency-inventory=passed\n");
|
||||
Reference in New Issue
Block a user