Files
ausboss-ComfyUI-AusBoss/tests/fill_color.test.mjs
T

55 lines
2.3 KiB
JavaScript

import assert from "node:assert/strict";
import test from "node:test";
import { FALLBACK_FILL, normalizeFillColor, parseFillColor } from "../js/shared/fill_color.mjs";
test("hex forms normalize to #rrggbb", () => {
assert.equal(parseFillColor("#123456"), "#123456");
assert.equal(parseFillColor("#FA8"), "#ffaa88");
assert.equal(parseFillColor(" #808080 "), "#808080");
// Bare hex stays supported when unambiguous.
assert.equal(parseFillColor("808080"), "#808080");
assert.equal(parseFillColor("fa8"), "#ffaa88");
});
test("csv integers clamp to 0-255", () => {
assert.equal(parseFillColor("10, 20, 30"), "#0a141e");
assert.equal(parseFillColor("10 20 30"), "#0a141e");
assert.equal(parseFillColor("300, -5, 128"), "#ff0080");
});
test("csv floats are auto-detected when all values <= 1", () => {
assert.equal(parseFillColor("0.5, 0.5, 0.5"), "#808080");
assert.equal(parseFillColor("1, 1, 1"), "#ffffff");
assert.equal(parseFillColor("0, 0, 0"), "#000000");
// One value above 1 switches the whole triple to 0-255.
assert.equal(parseFillColor("0.5, 128, 0.5"), "#018001");
});
test("bare grayscale numbers", () => {
assert.equal(parseFillColor("128"), "#808080");
assert.equal(parseFillColor("255"), "#ffffff");
assert.equal(parseFillColor("0.5"), "#808080");
assert.equal(parseFillColor("0"), "#000000");
});
test("named colors go through the injected resolver", () => {
const resolver = (name) => (name === "teal" ? "#008080" : null);
assert.equal(parseFillColor("teal", resolver), "#008080");
assert.equal(parseFillColor("Teal", resolver), "#008080");
assert.equal(parseFillColor("nonsense", resolver), null);
// Numeric and hex forms never reach the resolver.
assert.equal(parseFillColor("128", () => "#ff0000"), "#808080");
assert.equal(parseFillColor("#fff", () => "#ff0000"), "#ffffff");
// A resolver returning junk is ignored.
assert.equal(parseFillColor("teal", () => "junk"), null);
});
test("normalize falls back to mid-gray", () => {
assert.equal(normalizeFillColor("not a color"), FALLBACK_FILL);
assert.equal(normalizeFillColor(""), FALLBACK_FILL);
assert.equal(normalizeFillColor(null), FALLBACK_FILL);
assert.equal(normalizeFillColor("1, 2"), FALLBACK_FILL);
assert.equal(normalizeFillColor("teal", (name) => (name === "teal" ? "#008080" : null)), "#008080");
});