tests/eyeComfort.test.ts
Rama main · réplica de lectura del repositorio original.
// The eye-comfort sheet's levels (client/eyeComfort.ts normalizeLevel): what a
// stored, typed or dragged value becomes before it reaches the page.
import assert from "node:assert/strict";
import { describe, it } from "node:test";
import { DIM_MAX, WARMTH_MAX, normalizeLevel } from "../client/eyeComfort.ts";
describe("an eye-comfort level", () => {
it("reads a stored string or a dragged number as a whole percentage", () => {
assert.equal(normalizeLevel("45", WARMTH_MAX), 45);
assert.equal(normalizeLevel(45.6, WARMTH_MAX), 46);
});
it("clamps to the layer's own ceiling — dim stops short of black", () => {
assert.equal(normalizeLevel(140, WARMTH_MAX), 100);
assert.equal(normalizeLevel(100, DIM_MAX), DIM_MAX);
assert.equal(normalizeLevel(-3, DIM_MAX), 0);
});
it("reads nothing, and anything that is not a number, as off", () => {
assert.equal(normalizeLevel(null, WARMTH_MAX), 0);
assert.equal(normalizeLevel("", WARMTH_MAX), 0);
assert.equal(normalizeLevel("warm", WARMTH_MAX), 0);
assert.equal(normalizeLevel(NaN, WARMTH_MAX), 0);
});
});