X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Futil%2FColorUtilsTest.java;h=9a5d093046e385741c2b5e2b9bda83f24837dd4b;hb=refs%2Fheads%2Ffeatures%2FJAL-2326_JOptionPane-refactoring;hp=6d8ddeddeb626fa4feb882565b6633dde4ec3d61;hpb=ab22918ab8fc67d30dad1fb1ae0f37e51f49df95;p=jalview.git diff --git a/test/jalview/util/ColorUtilsTest.java b/test/jalview/util/ColorUtilsTest.java index 6d8dded..9a5d093 100644 --- a/test/jalview/util/ColorUtilsTest.java +++ b/test/jalview/util/ColorUtilsTest.java @@ -1,22 +1,53 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.util; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertNull; +import static org.testng.AssertJUnit.assertSame; + +import jalview.gui.JvOptionPane; import java.awt.Color; +import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; public class ColorUtilsTest { + @BeforeClass(alwaysRun = true) + public void setUpJvOptionPane() + { + JvOptionPane.setInteractiveMode(false); + JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION); + } + Color paleColour = new Color(97, 203, 111); // pale green Color midColour = new Color(135, 57, 41); // mid red Color darkColour = new Color(11, 30, 50); // dark blue - @Test(groups ={ "Functional" }) + @Test(groups = { "Functional" }) public void testDarkerThan() { assertEquals("Wrong darker shade", new Color(32, 69, 37), @@ -28,7 +59,7 @@ public class ColorUtilsTest assertNull(ColorUtils.darkerThan(null)); } - @Test(groups ={ "Functional" }) + @Test(groups = { "Functional" }) public void testBrighterThan() { assertEquals("Wrong brighter shade", new Color(255, 255, 255), // white @@ -43,7 +74,7 @@ public class ColorUtilsTest /** * @see http://www.rtapo.com/notes/named_colors.html */ - @Test(groups ={ "Functional" }) + @Test(groups = { "Functional" }) public void testToTkCode() { assertEquals("#fffafa", ColorUtils.toTkCode(new Color(255, 250, 250))); // snow @@ -52,4 +83,87 @@ public class ColorUtilsTest assertEquals("#800080", ColorUtils.toTkCode(new Color(128, 0, 128))); // purple assertEquals("#00ff00", ColorUtils.toTkCode(new Color(0, 255, 0))); // lime } + + @Test(groups = { "Functional" }) + public void testGetGraduatedColour() + { + Color minColour = new Color(100, 100, 100); + Color maxColour = new Color(180, 200, 220); + + /* + * value half-way between min and max + */ + Color col = ColorUtils.getGraduatedColour(20f, 10f, minColour, 30f, + maxColour); + assertEquals(140, col.getRed()); + assertEquals(150, col.getGreen()); + assertEquals(160, col.getBlue()); + + /* + * value two-thirds of the way between min and max + */ + col = ColorUtils + .getGraduatedColour(30f, 10f, minColour, 40f, maxColour); + assertEquals(153, col.getRed()); + // Color constructor rounds float value to nearest int + assertEquals(167, col.getGreen()); + assertEquals(180, col.getBlue()); + + /* + * value = min + */ + col = ColorUtils + .getGraduatedColour(10f, 10f, minColour, 30f, maxColour); + assertEquals(minColour, col); + + /* + * value = max + */ + col = ColorUtils + .getGraduatedColour(30f, 10f, minColour, 30f, maxColour); + assertEquals(maxColour, col); + + /* + * value < min + */ + col = ColorUtils.getGraduatedColour(0f, 10f, minColour, 30f, maxColour); + assertEquals(minColour, col); + + /* + * value > max + */ + col = ColorUtils + .getGraduatedColour(40f, 10f, minColour, 30f, maxColour); + assertEquals(maxColour, col); + + /* + * min = max + */ + col = ColorUtils + .getGraduatedColour(40f, 10f, minColour, 10f, maxColour); + assertEquals(minColour, col); + } + + @Test(groups = { "Functional" }) + public void testBleachColour() + { + Color colour = new Color(155, 105, 55); + assertSame(colour, ColorUtils.bleachColour(colour, 0)); + assertEquals(Color.WHITE, ColorUtils.bleachColour(colour, 1)); + assertEquals(Color.WHITE, ColorUtils.bleachColour(colour, 2)); + assertEquals(new Color(175, 135, 95), + ColorUtils.bleachColour(colour, 0.2f)); + assertEquals(new Color(225, 210, 195), + ColorUtils.bleachColour(colour, 0.7f)); + + /* + * and some 'negative fade' + */ + assertEquals(Color.BLACK, ColorUtils.bleachColour(colour, -1)); + assertEquals(Color.BLACK, ColorUtils.bleachColour(colour, -2)); + assertEquals(new Color(124, 84, 44), + ColorUtils.bleachColour(colour, -0.2f)); + assertEquals(new Color(46, 31, 16), // with rounding down + ColorUtils.bleachColour(colour, -0.7f)); + } }