/** * hardware-compat 單元測試(flash UI 契約層) * * 驗證重點(契約差異 C:targetChip 單值 + 寧鬆勿嚴): * - device.type 各種變體正規化成小寫晶片代號 * - 相容比對:相同晶片 → true、不同晶片 → false * - 寧鬆勿嚴:targetChip=unknown / device 無法辨識 → true(不擋,交 agent 把關) */ import { describe, expect, it } from "vitest"; import { getChipFromDeviceType, getHardwareLabel, isModelCompatible, } from "./hardware-compat"; describe("getChipFromDeviceType", () => { it.each([ ["kneron_kl520", "kl520"], ["kneron_kl720", "kl720"], ["KL520", "kl520"], ["kl630", "kl630"], ["KL-730", "kl730"], ["kl_520", "kl520"], ])("正規化 %s → %s", (input, expected) => { expect(getChipFromDeviceType(input)).toBe(expected); }); it("空字串回空字串", () => { expect(getChipFromDeviceType("")).toBe(""); }); it("無法辨識時回小寫原字串", () => { expect(getChipFromDeviceType("SomeUnknownDevice")).toBe("someunknowndevice"); }); }); describe("isModelCompatible", () => { it("相同晶片 → 相容", () => { expect(isModelCompatible("kl520", "kneron_kl520")).toBe(true); expect(isModelCompatible("kl720", "KL720")).toBe(true); }); it("不同晶片 → 不相容", () => { expect(isModelCompatible("kl520", "kneron_kl720")).toBe(false); expect(isModelCompatible("kl730", "KL520")).toBe(false); }); it("寧鬆勿嚴:targetChip=unknown → 相容(不擋)", () => { expect(isModelCompatible("unknown", "kneron_kl520")).toBe(true); }); it("寧鬆勿嚴:device 無法辨識晶片 → 相容(不擋,交 agent 把關)", () => { expect(isModelCompatible("kl520", "some-weird-device")).toBe(true); expect(isModelCompatible("kl520", "")).toBe(true); }); }); describe("getHardwareLabel", () => { it("辨識到晶片 → 回大寫代號", () => { expect(getHardwareLabel("kneron_kl520")).toBe("KL520"); expect(getHardwareLabel("kl720")).toBe("KL720"); }); it("無法辨識 → 回原字串", () => { expect(getHardwareLabel("weird")).toBe("weird"); expect(getHardwareLabel("")).toBe(""); }); });