blob: 4801a1a2572b01d9b34e733de4347fd50e93c324 [file] [log] [blame]
/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.graphics.cts;
import static org.junit.Assert.assertEquals;
import android.graphics.Color;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
@SmallTest
@RunWith(AndroidJUnit4.class)
public class ColorTest {
@Test
public void testAlpha() {
assertEquals(0xff, Color.alpha(Color.RED));
assertEquals(0xff, Color.alpha(Color.YELLOW));
}
@Test
public void testArgb() {
assertEquals(Color.RED, Color.argb(0xff, 0xff, 0x00, 0x00));
assertEquals(Color.YELLOW, Color.argb(0xff, 0xff, 0xff, 0x00));
assertEquals(Color.RED, Color.argb(1.0f, 1.0f, 0.0f, 0.0f));
assertEquals(Color.YELLOW, Color.argb(1.0f, 1.0f, 1.0f, 0.0f));
}
@Test
public void testBlue() {
assertEquals(0x00, Color.blue(Color.RED));
assertEquals(0x00, Color.blue(Color.YELLOW));
}
@Test
public void testGreen() {
assertEquals(0x00, Color.green(Color.RED));
assertEquals(0xff, Color.green(Color.GREEN));
}
@Test(expected=RuntimeException.class)
public void testHSVToColorArrayTooShort() {
// abnormal case: hsv length less than 3
float[] hsv = new float[2];
Color.HSVToColor(hsv);
}
@Test
public void testHSVToColor() {
float[] hsv = new float[3];
Color.colorToHSV(Color.RED, hsv);
assertEquals(Color.RED, Color.HSVToColor(hsv));
}
@Test
public void testHSVToColorWithAlpha() {
float[] hsv = new float[3];
Color.colorToHSV(Color.RED, hsv);
assertEquals(Color.RED, Color.HSVToColor(0xff, hsv));
}
@Test(expected=IllegalArgumentException.class)
public void testParseColorStringOfInvalidLength() {
// abnormal case: colorString starts with '#' but length is neither 7 nor 9
Color.parseColor("#ff00ff0");
}
@Test
public void testParseColor() {
assertEquals(Color.RED, Color.parseColor("#ff0000"));
assertEquals(Color.RED, Color.parseColor("#ffff0000"));
assertEquals(Color.BLACK, Color.parseColor("black"));
assertEquals(Color.DKGRAY, Color.parseColor("darkgray"));
assertEquals(Color.GRAY, Color.parseColor("gray"));
assertEquals(Color.LTGRAY, Color.parseColor("lightgray"));
assertEquals(Color.WHITE, Color.parseColor("white"));
assertEquals(Color.RED, Color.parseColor("red"));
assertEquals(Color.GREEN, Color.parseColor("green"));
assertEquals(Color.BLUE, Color.parseColor("blue"));
assertEquals(Color.YELLOW, Color.parseColor("yellow"));
assertEquals(Color.CYAN, Color.parseColor("cyan"));
assertEquals(Color.MAGENTA, Color.parseColor("magenta"));
}
@Test(expected=IllegalArgumentException.class)
public void testParseColorUnsupportedFormat() {
// abnormal case: colorString doesn't start with '#' and is unknown color
Color.parseColor("hello");
}
@Test
public void testRed() {
assertEquals(0xff, Color.red(Color.RED));
assertEquals(0xff, Color.red(Color.YELLOW));
}
@Test
public void testRgb() {
assertEquals(Color.RED, Color.rgb(0xff, 0x00, 0x00));
assertEquals(Color.YELLOW, Color.rgb(0xff, 0xff, 0x00));
assertEquals(Color.RED, Color.rgb(1.0f, 0.0f, 0.0f));
assertEquals(Color.YELLOW, Color.rgb(1.0f, 1.0f, 0.0f));
}
@Test(expected=RuntimeException.class)
public void testRGBToHSVArrayTooShort() {
// abnormal case: hsv length less than 3
float[] hsv = new float[2];
Color.RGBToHSV(0xff, 0x00, 0x00, hsv);
}
@Test
public void testRGBToHSV() {
float[] hsv = new float[3];
Color.RGBToHSV(0xff, 0x00, 0x00, hsv);
assertEquals(Color.RED, Color.HSVToColor(hsv));
}
@Test
public void testLuminance() {
assertEquals(0, Color.luminance(Color.BLACK), 0);
float eps = 0.000001f;
assertEquals(0.0722, Color.luminance(Color.BLUE), eps);
assertEquals(0.2126, Color.luminance(Color.RED), eps);
assertEquals(0.7152, Color.luminance(Color.GREEN), eps);
assertEquals(1, Color.luminance(Color.WHITE), 0);
}
}