64 lines
2.7 KiB
JavaScript
64 lines
2.7 KiB
JavaScript
import assert from "node:assert/strict";
|
|
import { access, readFile } from "node:fs/promises";
|
|
import { join } from "node:path";
|
|
|
|
import {
|
|
GMOCAPY_ICON_REGISTRY_BOUNDARY,
|
|
getGmoccapyIcon,
|
|
listGmoccapyIconRegistryEntries,
|
|
} from "../../app/src/ui/gmoccapy-icon-registry.js";
|
|
|
|
const repoRoot = new URL("../../..", import.meta.url).pathname.replace(/\/$/, "");
|
|
const manifestPath = join(repoRoot, "web-rtcp-5axis-sim-plan/app/src/ui-reference/gmoccapy-button-icons.json");
|
|
const manifest = JSON.parse(await readFile(manifestPath, "utf8"));
|
|
const manifestIconNames = new Set(manifest.entries.map((entry) => entry.iconName).filter(Boolean));
|
|
const registryEntries = listGmoccapyIconRegistryEntries();
|
|
|
|
assert.equal(GMOCAPY_ICON_REGISTRY_BOUNDARY, "gmoccapy_icon_registry_from_working3_manifest_core_ui_subset");
|
|
assert.equal(registryEntries.length >= 40, true);
|
|
|
|
const required = [
|
|
["tbtn_estop", "active", "main_switch_on"],
|
|
["tbtn_estop", "inactive", "main_switch_off"],
|
|
["tbtn_on", "active", "power_on"],
|
|
["rbt_manual", "active", "mode_manual_active"],
|
|
["rbt_mdi", "active", "mode_mdi_active"],
|
|
["rbt_auto", "active", "mode_auto_active"],
|
|
["btn_load", "default", "open_file"],
|
|
["btn_reload", "default", "refresh"],
|
|
["btn_run", "default", "play"],
|
|
["btn_stop", "default", "stop"],
|
|
["tbtn_pause", "active", "pause_active"],
|
|
["btn_step", "default", "step"],
|
|
["btn_homing", "default", "ref_all"],
|
|
["btn_tool", "default", "hsk_mill_tool"],
|
|
["btn_touch", "default", "touch_off"],
|
|
["rbt_forward", "active", "spindle_right_on"],
|
|
["rbt_reverse", "active", "spindle_left_on"],
|
|
["rbt_stop", "active", "spindle_stop_on"],
|
|
["tbtn_flood", "active", "coolant_flood_active"],
|
|
["tbtn_mist", "inactive", "coolant_mist_inactive"],
|
|
["rbt_view_x", "default", "tool_axis_x"],
|
|
["rbt_view_y", "default", "tool_axis_y"],
|
|
["rbt_view_z", "default", "tool_axis_z"],
|
|
["rbt_view_p", "default", "tool_axis_p"],
|
|
["tbtn_view_tool_path", "default", "toolpath"],
|
|
["tbtn_view_dimension", "default", "dimensions"],
|
|
];
|
|
|
|
for (const [buttonId, variant, expectedIconName] of required) {
|
|
const icon = getGmoccapyIcon(buttonId, variant);
|
|
assert.equal(icon.iconName, expectedIconName, `${buttonId}/${variant}`);
|
|
assert.equal(icon.fallback, false, `${buttonId}/${variant} should use an asset`);
|
|
assert.equal(icon.semanticBoundary, GMOCAPY_ICON_REGISTRY_BOUNDARY);
|
|
assert.equal(manifestIconNames.has(icon.iconName), true, `${icon.iconName} missing from manifest`);
|
|
assert.match(icon.path, /\/assets\/gmoccapy-icons\//);
|
|
await access(new URL(icon.path));
|
|
}
|
|
|
|
const fallback = getGmoccapyIcon("unknown_button", "active");
|
|
assert.equal(fallback.iconName, "text_fallback");
|
|
assert.equal(fallback.fallback, true);
|
|
|
|
console.log("gmoccapy_icon_registry_smoke=ok");
|