mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-09-14 21:46:35 +00:00
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);
|
|
});
|
|
});
|