JAL-2362 return correct lower-case colour; Javadoc; unit test
[jalview.git] / test / jalview / schemes / UserColourSchemeTest.java
index 645d5b8..f4875ee 100644 (file)
@@ -57,17 +57,24 @@ public class UserColourSchemeTest
      * by RGB hex code
      */
     String hexColour = Integer.toHexString(Color.RED.getRGB() & 0xffffff);
+    assertEquals("ff0000", hexColour);
     assertEquals(Color.RED, UserColourScheme.getColourFromString(hexColour));
     // 'hex' prefixes _not_ wanted here
     assertNull(UserColourScheme.getColourFromString("0x" + hexColour));
     assertNull(UserColourScheme.getColourFromString("#" + hexColour));
+    // out of range, but Color constructor just or's the rgb value with 0
+    assertEquals(Color.black,
+            UserColourScheme.getColourFromString("1000000"));
 
     /*
      * by RGB triplet
      */
-    String rgb = String.format("%d,%d,%d", Color.red.getRed(),
-            Color.red.getGreen(), Color.red.getBlue());
-    assertEquals(Color.RED, UserColourScheme.getColourFromString(rgb));
+    Color c = Color.pink;
+    String rgb = String.format("%d,%d,%d", c.getRed(), c.getGreen(),
+            c.getBlue());
+    assertEquals("255,175,175", rgb);
+    assertEquals(c, UserColourScheme.getColourFromString(rgb));
+    assertEquals(c, UserColourScheme.getColourFromString("255, 175 , 175"));
 
     /*
      * odds and ends
@@ -77,5 +84,40 @@ public class UserColourSchemeTest
     assertEquals(Color.WHITE, UserColourScheme.getColourFromString("-1"));
     assertNull(UserColourScheme.getColourFromString(String
             .valueOf(Integer.MAX_VALUE)));
+    assertNull(UserColourScheme.getColourFromString("100,200,300"));
+    assertNull(UserColourScheme.getColourFromString("100,200"));
+    assertNull(UserColourScheme.getColourFromString("100,200,100,200"));
+  }
+
+  @Test(groups = "Functional")
+  public void testParseAppletParameter()
+  {
+    UserColourScheme cs = new UserColourScheme("white");
+    cs.parseAppletParameter("D,E=red; K,R,H=0022FF; c=10 , 20,30");
+    assertEquals(Color.RED, cs.findColour('D'));
+    assertEquals(Color.RED, cs.findColour('d'));
+    assertEquals(Color.RED, cs.findColour('E'));
+    assertEquals(Color.RED, cs.findColour('e'));
+    Color c1 = new Color(0x0022ff);
+    assertEquals(c1, cs.findColour('K'));
+    assertEquals(c1, cs.findColour('R'));
+    assertEquals(c1, cs.findColour('h'));
+    Color c2 = new Color(10, 20, 30);
+    assertEquals(c2, cs.findColour('c'));
+
+    cs = new UserColourScheme("white");
+    cs.parseAppletParameter("D,E=red; K,R,H=0022FF; c=10 , 20,30;lowercase=blue;s=pink");
+    assertEquals(Color.RED, cs.findColour('D'));
+    assertEquals(Color.blue, cs.findColour('d'));
+    assertEquals(Color.RED, cs.findColour('E'));
+    assertEquals(Color.blue, cs.findColour('e'));
+    assertEquals(c1, cs.findColour('K'));
+    assertEquals(c1, cs.findColour('R'));
+    assertEquals(Color.blue, cs.findColour('h'));
+    assertEquals(c2, cs.findColour('c'));
+    // 'lowercase' sets all lower-case not already set to the given colour
+    assertEquals(Color.blue, cs.findColour('k'));
+    assertEquals(Color.blue, cs.findColour('a'));
+    assertEquals(Color.pink, cs.findColour('s'));
   }
 }