42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { hsl } from './hsl';
|
|
|
|
describe('hsl', () => {
|
|
it('produces pure red at hue 0', () => {
|
|
const [r, g, b] = hsl(0, 100, 50);
|
|
expect(r).toBeCloseTo(1);
|
|
expect(g).toBeCloseTo(0);
|
|
expect(b).toBeCloseTo(0);
|
|
});
|
|
it('produces pure green at hue 120', () => {
|
|
const [r, g, b] = hsl(120, 100, 50);
|
|
expect(r).toBeCloseTo(0);
|
|
expect(g).toBeCloseTo(1);
|
|
expect(b).toBeCloseTo(0);
|
|
});
|
|
it('produces pure blue at hue 240', () => {
|
|
const [r, g, b] = hsl(240, 100, 50);
|
|
expect(r).toBeCloseTo(0);
|
|
expect(g).toBeCloseTo(0);
|
|
expect(b).toBeCloseTo(1);
|
|
});
|
|
it('produces gray at saturation 0', () => {
|
|
const [r, g, b] = hsl(180, 0, 50);
|
|
expect(r).toBeCloseTo(0.5);
|
|
expect(g).toBeCloseTo(0.5);
|
|
expect(b).toBeCloseTo(0.5);
|
|
});
|
|
it('produces black at lightness 0', () => {
|
|
const [r, g, b] = hsl(0, 100, 0);
|
|
expect(r).toBe(0);
|
|
expect(g).toBe(0);
|
|
expect(b).toBe(0);
|
|
});
|
|
it('produces white at lightness 100', () => {
|
|
const [r, g, b] = hsl(0, 100, 100);
|
|
expect(r).toBeCloseTo(1);
|
|
expect(g).toBeCloseTo(1);
|
|
expect(b).toBeCloseTo(1);
|
|
});
|
|
});
|