33 lines
1.3 KiB
JavaScript
33 lines
1.3 KiB
JavaScript
#!/usr/bin/env node
|
|
"use strict";
|
|
|
|
const assert = require("assert");
|
|
const fs = require("fs");
|
|
const os = require("os");
|
|
const path = require("path");
|
|
const { writeCompressedMetadata } = require("./compress-glb");
|
|
|
|
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "compress-glb-"));
|
|
const source = path.join(tempDir, "scene.json");
|
|
const output = path.join(tempDir, "scene-compressed.json");
|
|
const compressedGlb = path.join(tempDir, "scene-compressed.glb");
|
|
|
|
fs.writeFileSync(source, `${JSON.stringify({
|
|
asset: "scene.glb",
|
|
assets: [
|
|
{ id: "main", label: "Scene", type: "model", url: "scene.glb", enabled: true },
|
|
{ id: "roads", label: "道路", type: "model", url: "scene-roads.glb", enabled: false, category: "semantic" },
|
|
],
|
|
}, null, 2)}\n`);
|
|
|
|
writeCompressedMetadata(source, compressedGlb, output);
|
|
const metadata = JSON.parse(fs.readFileSync(output, "utf8"));
|
|
assert.equal(metadata.asset, "scene-compressed.glb");
|
|
assert.deepEqual(metadata.assets.map((asset) => asset.id), ["main", "roads"]);
|
|
assert.equal(metadata.assets[0].url, "scene-compressed.glb");
|
|
assert.equal(metadata.assets[1].url, "scene-roads.glb");
|
|
assert.equal(metadata.assets[1].category, "semantic");
|
|
|
|
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
console.log("GLB compression metadata tests passed.");
|