/*******************************************************************************
* Copyright (c) 2007, 2014 Innoopract Informationssysteme GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Innoopract Informationssysteme GmbH - initial API and implementation
* EclipseSource - ongoing development
******************************************************************************/
package org.eclipse.rap.rwt.internal.theme;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.util.Locale;
import org.eclipse.rap.rwt.testfixture.TestContext;
import org.eclipse.swt.graphics.Color;
import org.junit.Rule;
import org.junit.Test;
public class CssColor_Test {
@Rule
public TestContext context = new TestContext();
@Test( expected = IllegalArgumentException.class )
public void testValueOf_invalidHexColorFormat() {
CssColor.valueOf( "#0000" );
}
@Test( expected = IllegalArgumentException.class )
public void testValueOf_invalidHexColor() {
CssColor.valueOf( "#xyz" );
}
@Test( expected = IllegalArgumentException.class )
public void testValueOf_invalidNamedColor() {
CssColor.valueOf( "grey" );
}
@Test( expected = IllegalArgumentException.class )
public void testValueOf_outOfRangeAlpha() {
CssColor.valueOf( "1, 2, 3, 1.01" );
}
@Test( expected = IllegalArgumentException.class )
public void testValueOf_negativeAlpha() {
CssColor.valueOf( "1, 2, 3, -0.01" );
}
@Test
public void test6HexNotation() {
CssColor color1 = CssColor.valueOf( "#0023ff" );
assertEquals( 0, color1.red );
assertEquals( 35, color1.green );
assertEquals( 255, color1.blue );
assertEquals( 1f, color1.alpha, 0 );
CssColor color2 = CssColor.valueOf( "#efeFEF" );
assertEquals( 239, color2.red );
assertEquals( 239, color2.green );
assertEquals( 239, color2.blue );
}
@Test
public void test3HexNotation() {
CssColor color1 = CssColor.valueOf( "#03f" );
assertEquals( 0, color1.red );
assertEquals( 51, color1.green );
assertEquals( 255, color1.blue );
assertEquals( 1f, color1.alpha, 0 );
CssColor color2 = CssColor.valueOf( "#ccc" );
assertEquals( 204, color2.red );
assertEquals( 204, color2.green );
assertEquals( 204, color2.blue );
assertEquals( CssColor.valueOf( "#ffffff"), CssColor.valueOf( "#fff" ) );
}
@Test
public void testNamedColors() {
CssColor color1 = CssColor.valueOf( "red" );
assertEquals( 255, color1.red );
assertEquals( 0, color1.green );
assertEquals( 0, color1.blue );
assertEquals( 1f, color1.alpha, 0 );
CssColor color2 = CssColor.valueOf( "blue" );
assertEquals( 0, color2.red );
assertEquals( 0, color2.green );
assertEquals( 255, color2.blue );
}
@Test
public void testCommaSeparatedValues() {
CssColor color = CssColor.valueOf( "100, 23, 42" );
assertEquals( 100, color.red );
assertEquals( 23, color.green );
assertEquals( 42, color.blue );
assertEquals( 1f, color.alpha, 0 );
}
@Test
public void testCommaSeparatedValues_WithAlpha() {
CssColor color = CssColor.valueOf( "100, 23, 42, 0.5" );
assertEquals( 100, color.red );
assertEquals( 23, color.green );
assertEquals( 42, color.blue );
assertEquals( 0.5, color.alpha, 0 );
}
@Test
public void testTransparent() {
assertTrue( CssColor.TRANSPARENT.isTransparent() );
}
@Test
public void testShared() {
assertSame( CssColor.WHITE, CssColor.valueOf( "white" ) );
assertSame( CssColor.WHITE, CssColor.valueOf( "255, 255, 255" ) );
assertSame( CssColor.WHITE, CssColor.valueOf( "#ffffff" ) );
assertSame( CssColor.BLACK, CssColor.valueOf( "Black" ) );
assertSame( CssColor.BLACK, CssColor.valueOf( "0, 0, 0" ) );
assertSame( CssColor.BLACK, CssColor.valueOf( "#000" ) );
assertSame( CssColor.TRANSPARENT, CssColor.valueOf( "transparent" ) );
}
@Test
public void testToString() {
CssColor color = CssColor.valueOf( "100, 23, 42" );
assertEquals( "CssColor{ 100, 23, 42, 1.0 }", color.toString() );
}
@Test
public void testToString_WithAlpha() {
CssColor color = CssColor.valueOf( "100, 23, 42, 0.5" );
assertEquals( "CssColor{ 100, 23, 42, 0.5 }", color.toString() );
}
@Test
public void testDefaultString() {
CssColor color = CssColor.valueOf( "100, 23, 42" );
assertEquals( "#64172a", color.toDefaultString() );
}
@Test
public void testDefaultString_Transparent() {
CssColor color = CssColor.valueOf( "100, 23, 42, 0" );
assertEquals( "transparent", color.toDefaultString() );
}
@Test
public void testDefaultString_WithAlpha() {
CssColor color = CssColor.valueOf( "100, 23, 42, 0.5" );
assertEquals( "rgba(100,23,42,0.5)", color.toDefaultString() );
}
@Test
public void testWithTurkishLocale() {
Locale originalLocale = Locale.getDefault();
try {
Locale.setDefault( new Locale( "tr", "TR" ) );
assertSame( CssColor.WHITE, CssColor.valueOf( "WHITE" ) );
} finally {
Locale.setDefault( originalLocale );
}
}
@Test
public void testCreateColor_WithoutAlpha() {
CssColor color = CssColor.valueOf( "100, 23, 42" );
Color result = CssColor.createColor( color );
assertNotNull( result );
assertEquals( 100, result.getRed() );
assertEquals( 23, result.getGreen() );
assertEquals( 42, result.getBlue() );
}
@Test
public void testCreateColor_WithAlpha() {
CssColor color = CssColor.valueOf( "100, 23, 42, 0.5" );
Color result = CssColor.createColor( color );
assertNotNull( result );
assertEquals( 100, result.getRed() );
assertEquals( 23, result.getGreen() );
assertEquals( 42, result.getBlue() );
}
@Test
public void testCreateColor_FullyTransparent() {
CssColor color = CssColor.valueOf( "100, 23, 42, 0" );
Color result = CssColor.createColor( color );
assertNull( result );
}
}