2 * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3 * Copyright (C) $$Year-Rel$$ The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
21 package jalview.schemes;
23 import static org.testng.AssertJUnit.assertEquals;
24 import static org.testng.AssertJUnit.assertNull;
25 import static org.testng.AssertJUnit.assertSame;
27 import jalview.gui.JvOptionPane;
29 import java.awt.Color;
31 import org.testng.annotations.BeforeClass;
32 import org.testng.annotations.Test;
34 public class UserColourSchemeTest
37 @BeforeClass(alwaysRun = true)
38 public void setUpJvOptionPane()
40 JvOptionPane.setInteractiveMode(false);
41 JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
44 @Test(groups = "Functional")
45 public void testGetColourFromString()
48 * by colour name - if known to AWT, and included in
50 * @see ColourSchemeProperty.getAWTColorFromName()
52 assertSame(Color.RED, UserColourScheme.getColourFromString("red"));
53 assertSame(Color.RED, UserColourScheme.getColourFromString("Red"));
54 assertSame(Color.RED, UserColourScheme.getColourFromString(" RED "));
59 String hexColour = Integer.toHexString(Color.RED.getRGB() & 0xffffff);
60 assertEquals("ff0000", hexColour);
61 assertEquals(Color.RED, UserColourScheme.getColourFromString(hexColour));
62 // 'hex' prefixes _not_ wanted here
63 assertNull(UserColourScheme.getColourFromString("0x" + hexColour));
64 assertNull(UserColourScheme.getColourFromString("#" + hexColour));
65 // out of range, but Color constructor just or's the rgb value with 0
66 assertEquals(Color.black,
67 UserColourScheme.getColourFromString("1000000"));
73 String rgb = String.format("%d,%d,%d", c.getRed(), c.getGreen(),
75 assertEquals("255,175,175", rgb);
76 assertEquals(c, UserColourScheme.getColourFromString(rgb));
77 assertEquals(c, UserColourScheme.getColourFromString("255, 175 , 175"));
82 assertNull(UserColourScheme.getColourFromString(null));
83 assertNull(UserColourScheme.getColourFromString("rubbish"));
84 assertEquals(Color.WHITE, UserColourScheme.getColourFromString("-1"));
85 assertNull(UserColourScheme.getColourFromString(String
86 .valueOf(Integer.MAX_VALUE)));
87 assertNull(UserColourScheme.getColourFromString("100,200,300"));
88 assertNull(UserColourScheme.getColourFromString("100,200"));
89 assertNull(UserColourScheme.getColourFromString("100,200,100,200"));
92 @Test(groups = "Functional")
93 public void testParseAppletParameter()
95 UserColourScheme cs = new UserColourScheme("white");
96 cs.parseAppletParameter("D,E=red; K,R,H=0022FF; c=10 , 20,30");
97 assertEquals(Color.RED, cs.findColour('D'));
98 assertEquals(Color.RED, cs.findColour('d'));
99 assertEquals(Color.RED, cs.findColour('E'));
100 assertEquals(Color.RED, cs.findColour('e'));
101 Color c1 = new Color(0x0022ff);
102 assertEquals(c1, cs.findColour('K'));
103 assertEquals(c1, cs.findColour('R'));
104 assertEquals(c1, cs.findColour('h'));
105 Color c2 = new Color(10, 20, 30);
106 assertEquals(c2, cs.findColour('c'));
108 cs = new UserColourScheme("white");
109 cs.parseAppletParameter("D,E=red; K,R,H=0022FF; c=10 , 20,30;lowercase=blue;s=pink");
110 assertEquals(Color.RED, cs.findColour('D'));
111 assertEquals(Color.blue, cs.findColour('d'));
112 assertEquals(Color.RED, cs.findColour('E'));
113 assertEquals(Color.blue, cs.findColour('e'));
114 assertEquals(c1, cs.findColour('K'));
115 assertEquals(c1, cs.findColour('R'));
116 assertEquals(Color.blue, cs.findColour('h'));
117 assertEquals(c2, cs.findColour('c'));
118 // 'lowercase' sets all lower-case not already set to the given colour
119 assertEquals(Color.blue, cs.findColour('k'));
120 assertEquals(Color.blue, cs.findColour('a'));
121 assertEquals(Color.pink, cs.findColour('s'));