package org.projectusus.ui.colors; import static org.junit.Assert.assertEquals; import static org.projectusus.ui.colors.UsusColors.MIN_SATURATION; import static org.projectusus.ui.colors.UsusColors.getSharedColors; import org.eclipse.swt.graphics.Color; import org.junit.Test; public class UsusColorsTest { @Test public void toHueIsBetween0And360() { assertEquals( 0, getSharedColors().toHue( Integer.MIN_VALUE ) ); assertEquals( 90, getSharedColors().toHue( Integer.MIN_VALUE / 2 ) ); assertEquals( 180, getSharedColors().toHue( 0 ) ); assertEquals( 270, getSharedColors().toHue( Integer.MAX_VALUE / 2 ) ); assertEquals( 360, getSharedColors().toHue( Integer.MAX_VALUE ) ); } @Test public void onlyAdjustTheSaturation() { Color darkRed = getSharedColors().getColor( UsusColors.DARK_RED ); float[] hsbDarkRed = darkRed.getRGB().getHSB(); Color newColor = getSharedColors().adjustSaturation( UsusColors.DARK_RED, 0.5f ); float[] hsbNewColor = newColor.getRGB().getHSB(); assertEquals( getSaturation( newColor ), 0.5, 0 ); assertEquals( hsbNewColor[0], hsbDarkRed[0], 0 ); assertEquals( hsbNewColor[2], hsbDarkRed[2], 0 ); } @Test public void adjustSaturationBetweenMinAndMax() { Color starkRed = getSharedColors().adjustSaturation( UsusColors.DARK_RED, 1 ); assertEquals( 1, getSaturation( starkRed ), 0.01 ); Color fadingRed = getSharedColors().adjustSaturation( UsusColors.DARK_RED, 0 ); assertEquals( MIN_SATURATION, getSaturation( fadingRed ), 0.01 ); Color mediumRed = getSharedColors().adjustSaturation( UsusColors.DARK_RED, 0.6f ); assertEquals( 0.6, getSaturation( mediumRed ), 0.01 ); } @Test( expected = IllegalArgumentException.class ) public void saturationMustNotBeGreaterThanOne() { getSharedColors().adjustSaturation( UsusColors.BLACK, 1.1f ); } @Test public void saturationIsRoundedToTwoDigitsAfterDecimalPoint() { float saturation = getSharedColors().restrictSaturation( 0.449f ); assertEquals( 0.45f, saturation, 0.0f ); saturation = getSharedColors().restrictSaturation( 0.45f ); assertEquals( 0.45f, saturation, 0.0f ); saturation = getSharedColors().restrictSaturation( 0.45454545f ); assertEquals( 0.45f, saturation, 0.0f ); } private float getSaturation( Color color ) { return color.getRGB().getHSB()[1]; } }