import { describe, it, expect } from "vitest"; import { EMPTY, displayValue } from "./placeholder"; describe("displayValue", () => { it("returns the canonical placeholder for null and undefined", () => { expect(displayValue(null)).toBe(EMPTY); expect(displayValue(undefined)).toBe(EMPTY); }); it("treats empty and whitespace-only strings as no value", () => { expect(displayValue("")).toBe(EMPTY); expect(displayValue(" ")).toBe(EMPTY); expect(displayValue("\t\n ")).toBe(EMPTY); }); it("returns non-blank strings verbatim (including surrounding content)", () => { expect(displayValue("hello")).toBe("hello"); expect(displayValue(" padded ")).toBe(" padded "); expect(displayValue("0")).toBe("0"); }); it("stringifies finite numbers, including zero and negatives", () => { expect(displayValue(0)).toBe("0"); expect(displayValue(42)).toBe("42"); expect(displayValue(-1.5)).toBe("-1.5"); }); it("returns the placeholder for non-finite numbers", () => { expect(displayValue(NaN)).toBe(EMPTY); expect(displayValue(Infinity)).toBe(EMPTY); expect(displayValue(-Infinity)).toBe(EMPTY); }); it("stringifies booleans and bigints", () => { expect(displayValue(true)).toBe("true"); expect(displayValue(false)).toBe("false"); expect(displayValue(10n)).toBe("10"); }); it("falls back to the placeholder for non-primitive values", () => { expect(displayValue({})).toBe(EMPTY); expect(displayValue([])).toBe(EMPTY); expect(displayValue(() => "x")).toBe(EMPTY); expect(displayValue(Symbol("s"))).toBe(EMPTY); }); });