const assert = require("node:assert/strict"); const { getSleepLevel, getStatusTone, pickReportRecord } = require("../../tmp/report-tests/report-utils.js"); const { resolveReportBackAction } = require("../../tmp/report-tests/navigation.js"); const { computeAppBarMetrics, resolveBackNavigation } = require("../../tmp/report-tests/utils/app-bar-metrics.js"); function run(name, fn) { try { fn(); console.log(`PASS ${name}`); } catch (error) { console.error(`FAIL ${name}`); throw error; } } run("getSleepLevel maps score 65 to 合格", () => { assert.deepEqual(getSleepLevel(65), { label: "合格", tone: "warning" }); }); run("getStatusTone maps 异常 to danger", () => { assert.equal(getStatusTone("异常"), "danger"); }); run("pickReportRecord falls back to first device record", () => { const record = pickReportRecord( { "2026-05-08": { roomA: { deviceA: { score: 65 }, deviceB: { score: 79 } } } }, "2026-05-08", "roomA", "missing-device" ); assert.equal(record.score, 65); }); run("resolveReportBackAction returns navigateBack when there is history", () => { assert.equal(resolveReportBackAction(2), "navigateBack"); }); run("resolveReportBackAction falls back to home when report page has no history", () => { assert.equal(resolveReportBackAction(1), "redirectHome"); }); run("computeAppBarMetrics uses menu button metrics when available", () => { assert.deepEqual( computeAppBarMetrics({ statusBarHeight: 24, windowWidth: 390, menuButtonRect: { top: 30, left: 300, height: 32 } }), { topInset: 24, menuTop: 30, menuHeight: 32, capsuleSafeWidth: 96 } ); }); run("resolveBackNavigation falls back when stack has no previous page", () => { assert.equal(resolveBackNavigation(1), "redirectHome"); });