#!/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.");