Files
easy-png-tools2/web/src/lib/core/effects.test.ts
T

36 lines
1.1 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { vignette, vignetteMask } from "./effects";
import { makeImage } from "./test-helpers";
describe("vignette", () => {
it("strength 0 - identity transform", () => {
const img = makeImage(3, 3, new Array(9).fill([200, 100, 50, 255]));
expect([...vignette(img, 0).data]).toEqual([...img.data]);
});
it("corners darker than center", () => {
const img = makeImage(7, 7, new Array(49).fill([200, 200, 200, 255]));
const out = vignette(img, 80);
const centerR = out.data[(3 * 7 + 3) * 4];
const cornerR = out.data[0];
expect(cornerR).toBeLessThan(centerR);
expect(centerR).toBeGreaterThan(150);
});
});
describe("vignetteMask", () => {
it("white at corners, black at center, opaque", () => {
const out = vignetteMask(7, 7, 80);
const center = out.data[(3 * 7 + 3) * 4];
const corner = out.data[0];
expect(corner).toBeGreaterThan(center);
expect(corner).toBeGreaterThan(100);
expect(out.data[3]).toBe(255);
});
it("zero strength -> all black", () => {
const out = vignetteMask(3, 3, 0);
expect(Math.max(...out.data.filter((_, i) => i % 4 !== 3))).toBe(0);
});
});