onboardsync-react-native
Version:
Expo SDK for OnboardSync - Remote onboarding configuration platform with A/B testing
53 lines (45 loc) • 2.07 kB
text/typescript
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');
});
});
});