45 lines
1.7 KiB
TypeScript
45 lines
1.7 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { colorSpectrum, drawGrid, randomColorBlocks } from "./gen-tools";
|
|
|
|
describe("colorSpectrum", () => {
|
|
it("горизонтальный: левый край красный (hue 0)", () => {
|
|
const img = colorSpectrum(100, 10, "horizontal", 100, 50);
|
|
expect(img.data[0]).toBeGreaterThan(200);
|
|
expect(img.data[1]).toBeLessThan(60);
|
|
});
|
|
|
|
it("вертикальный: зелёный максимум около hue 120°", () => {
|
|
const img = colorSpectrum(10, 100, "vertical", 100, 50);
|
|
const rowHue120 = Math.round((120 / 360) * 99);
|
|
const g = img.data[(rowHue120 * 10 + 5) * 4 + 1];
|
|
expect(g).toBeGreaterThan(200);
|
|
});
|
|
});
|
|
|
|
describe("randomColorBlocks", () => {
|
|
it("детерминирован по seed и блоки однотонные", () => {
|
|
const a = randomColorBlocks(64, 64, 16, 7);
|
|
const b = randomColorBlocks(64, 64, 16, 7);
|
|
expect([...a.data]).toEqual([...b.data]);
|
|
const c = randomColorBlocks(64, 64, 16, 8);
|
|
expect([...a.data]).not.toEqual([...c.data]);
|
|
expect(a.data[3]).toBe(255);
|
|
});
|
|
});
|
|
|
|
describe("drawGrid", () => {
|
|
it("линии на пересечениях непрозрачны, фон прозрачен", () => {
|
|
const out = drawGrid(100, 100, 4, 4, 2, "#000000", true);
|
|
expect(out.data[0]).toBe(0);
|
|
expect(out.data[3]).toBe(255); // (0,0) на линии
|
|
const mid = (53 * 100 + 53) * 4;
|
|
expect(out.data[mid + 3]).toBe(0); // между линиями прозрачн
|
|
});
|
|
|
|
it("белый непрозрачный фон при transparentBg=false", () => {
|
|
const out = drawGrid(20, 20, 2, 2, 1, "#000000", false);
|
|
const mid = (5 * 20 + 5) * 4;
|
|
expect(out.data[mid]).toBe(255);
|
|
});
|
|
});
|