UNPKG

onboardsync-react-native

Version:

Expo SDK for OnboardSync - Remote onboarding configuration platform with A/B testing

53 lines (45 loc) 2.07 kB
import { ColorUtils } from '../colorUtils'; describe('ColorUtils', () => { describe('hexToRgb', () => { it('should convert valid hex colors to RGB', () => { expect(ColorUtils.hexToRgb('#FFFFFF')).toEqual({ r: 255, g: 255, b: 255 }); expect(ColorUtils.hexToRgb('#000000')).toEqual({ r: 0, g: 0, b: 0 }); expect(ColorUtils.hexToRgb('#FF0000')).toEqual({ r: 255, g: 0, b: 0 }); expect(ColorUtils.hexToRgb('#00FF00')).toEqual({ r: 0, g: 255, b: 0 }); expect(ColorUtils.hexToRgb('#0000FF')).toEqual({ r: 0, g: 0, b: 255 }); }); it('should handle hex without #', () => { expect(ColorUtils.hexToRgb('FFFFFF')).toEqual({ r: 255, g: 255, b: 255 }); }); it('should return null for invalid hex', () => { expect(ColorUtils.hexToRgb('#GGG')).toBeNull(); expect(ColorUtils.hexToRgb('#12345')).toBeNull(); expect(ColorUtils.hexToRgb('')).toBeNull(); }); }); describe('isColorDark', () => { it('should identify dark colors', () => { expect(ColorUtils.isColorDark('#000000')).toBe(true); expect(ColorUtils.isColorDark('#333333')).toBe(true); expect(ColorUtils.isColorDark('#0000FF')).toBe(true); // Dark blue }); it('should identify light colors', () => { expect(ColorUtils.isColorDark('#FFFFFF')).toBe(false); expect(ColorUtils.isColorDark('#EEEEEE')).toBe(false); expect(ColorUtils.isColorDark('#FFFF00')).toBe(false); // Yellow }); it('should handle invalid colors', () => { expect(ColorUtils.isColorDark('#INVALID')).toBe(false); }); }); describe('getContrastColor', () => { it('should return white for dark backgrounds', () => { expect(ColorUtils.getContrastColor('#000000')).toBe('#FFFFFF'); expect(ColorUtils.getContrastColor('#333333')).toBe('#FFFFFF'); }); it('should return black for light backgrounds', () => { expect(ColorUtils.getContrastColor('#FFFFFF')).toBe('#000000'); expect(ColorUtils.getContrastColor('#EEEEEE')).toBe('#000000'); }); }); });