Spaces:
Sleeping
Sleeping
File size: 2,292 Bytes
7dc28be | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | import { describe, it, expect } from 'vitest';
import { hexToRgbColor, validateHexColor } from './types.js';
describe('Color Validation and Conversion', () => {
describe('validateHexColor', () => {
it('should validate correct hex colors with hash', () => {
expect(validateHexColor('#FF0000')).toBe(true);
expect(validateHexColor('#F00')).toBe(true);
expect(validateHexColor('#00FF00')).toBe(true);
expect(validateHexColor('#0F0')).toBe(true);
});
it('should validate correct hex colors without hash', () => {
expect(validateHexColor('FF0000')).toBe(true);
expect(validateHexColor('F00')).toBe(true);
expect(validateHexColor('00FF00')).toBe(true);
expect(validateHexColor('0F0')).toBe(true);
});
it('should reject invalid hex colors', () => {
expect(validateHexColor('')).toBe(false);
expect(validateHexColor('#XYZ')).toBe(false);
expect(validateHexColor('#12345')).toBe(false);
expect(validateHexColor('#1234567')).toBe(false);
expect(validateHexColor('invalid')).toBe(false);
expect(validateHexColor('#12')).toBe(false);
});
});
describe('hexToRgbColor', () => {
it('should convert 6-digit hex colors with hash correctly', () => {
expect(hexToRgbColor('#FF0000')).toEqual({ red: 1, green: 0, blue: 0 });
expect(hexToRgbColor('#00FF00')).toEqual({ red: 0, green: 1, blue: 0 });
expect(hexToRgbColor('#0000FF')).toEqual({ red: 0, green: 0, blue: 1 });
expect(hexToRgbColor('#800080')).toEqual({
red: 0.5019607843137255,
green: 0,
blue: 0.5019607843137255,
});
});
it('should convert 3-digit hex colors correctly', () => {
expect(hexToRgbColor('#F00')).toEqual({ red: 1, green: 0, blue: 0 });
expect(hexToRgbColor('#FFF')).toEqual({ red: 1, green: 1, blue: 1 });
});
it('should convert hex colors without hash correctly', () => {
expect(hexToRgbColor('FF0000')).toEqual({ red: 1, green: 0, blue: 0 });
});
it('should return null for invalid hex colors', () => {
expect(hexToRgbColor('')).toBeNull();
expect(hexToRgbColor('#XYZ')).toBeNull();
expect(hexToRgbColor('#12345')).toBeNull();
expect(hexToRgbColor('invalid')).toBeNull();
});
});
});
|