Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
import { describe, it, expect } from 'vitest'
|
||||
import { rgbToHex, rgbToHsl, hexToRgb, hslToRgb } from '../../src/utils/color.js'
|
||||
|
||||
describe('color conversion', () => {
|
||||
it('converts RGB to hex', () => {
|
||||
expect(rgbToHex(255, 0, 0)).toBe('FF0000')
|
||||
expect(rgbToHex(0, 255, 0)).toBe('00FF00')
|
||||
expect(rgbToHex(0, 0, 255)).toBe('0000FF')
|
||||
})
|
||||
|
||||
it('pads single-digit hex values', () => {
|
||||
expect(rgbToHex(1, 2, 3)).toBe('010203')
|
||||
})
|
||||
|
||||
it('clamps RGB values to 0-255', () => {
|
||||
expect(rgbToHex(300, -10, 128)).toBe('FF0080')
|
||||
})
|
||||
|
||||
it('converts hex to RGB', () => {
|
||||
expect(hexToRgb('FF0000')).toEqual({ r: 255, g: 0, b: 0 })
|
||||
expect(hexToRgb('invalid')).toBeNull()
|
||||
})
|
||||
|
||||
it('converts RGB to HSL and back (gray)', () => {
|
||||
const hsl = rgbToHsl(128, 128, 128)
|
||||
expect(hsl.s).toBe(0)
|
||||
const rgb = hslToRgb(hsl.h, hsl.s, hsl.l)
|
||||
expect(rgb.r).toBeCloseTo(128, 0)
|
||||
expect(rgb.g).toBeCloseTo(128, 0)
|
||||
expect(rgb.b).toBeCloseTo(128, 0)
|
||||
})
|
||||
|
||||
it('converts pure red RGB <-> HSL', () => {
|
||||
const hsl = rgbToHsl(255, 0, 0)
|
||||
expect(hsl.h).toBe(0)
|
||||
expect(hsl.s).toBe(100)
|
||||
const rgb = hslToRgb(0, 100, 50)
|
||||
expect(rgb.r).toBe(255)
|
||||
expect(rgb.g).toBe(0)
|
||||
expect(rgb.b).toBe(0)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user