Files
ToolBox/tests/unit/color.test.js
T
renjue f1502ed08c
CI / docker (push) Successful in 11m42s
初始化 ToolBox 开发者工具箱。
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-25 11:15:38 +08:00

43 lines
1.2 KiB
JavaScript

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)
})
})