JAL-2589 correct colour for Gap in Score and User Defined schemes
[jalview.git] / test / jalview / schemes / UserColourSchemeTest.java
index f4875ee..2a482ee 100644 (file)
@@ -21,8 +21,6 @@
 package jalview.schemes;
 
 import static org.testng.AssertJUnit.assertEquals;
-import static org.testng.AssertJUnit.assertNull;
-import static org.testng.AssertJUnit.assertSame;
 
 import jalview.gui.JvOptionPane;
 
@@ -42,54 +40,6 @@ public class UserColourSchemeTest
   }
 
   @Test(groups = "Functional")
-  public void testGetColourFromString()
-  {
-    /*
-     * by colour name - if known to AWT, and included in
-     * 
-     * @see ColourSchemeProperty.getAWTColorFromName()
-     */
-    assertSame(Color.RED, UserColourScheme.getColourFromString("red"));
-    assertSame(Color.RED, UserColourScheme.getColourFromString("Red"));
-    assertSame(Color.RED, UserColourScheme.getColourFromString(" RED "));
-
-    /*
-     * 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
-     */
-    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
-     */
-    assertNull(UserColourScheme.getColourFromString(null));
-    assertNull(UserColourScheme.getColourFromString("rubbish"));
-    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");
@@ -104,9 +54,13 @@ public class UserColourSchemeTest
     assertEquals(c1, cs.findColour('h'));
     Color c2 = new Color(10, 20, 30);
     assertEquals(c2, cs.findColour('c'));
+    assertEquals(Color.WHITE, cs.findColour('G'));
+    assertEquals(Color.WHITE, cs.findColour('-'));
+    assertEquals(Color.WHITE, cs.findColour('.'));
+    assertEquals(Color.WHITE, cs.findColour(' '));
 
     cs = new UserColourScheme("white");
-    cs.parseAppletParameter("D,E=red; K,R,H=0022FF; c=10 , 20,30;lowercase=blue;s=pink");
+    cs.parseAppletParameter("D,E=red; K,R,H=0022FF; c=10 , 20,30;t=orange;lowercase=blue;s=pink");
     assertEquals(Color.RED, cs.findColour('D'));
     assertEquals(Color.blue, cs.findColour('d'));
     assertEquals(Color.RED, cs.findColour('E'));
@@ -116,8 +70,43 @@ public class UserColourSchemeTest
     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.orange, cs.findColour('t'));
     assertEquals(Color.blue, cs.findColour('k'));
     assertEquals(Color.blue, cs.findColour('a'));
     assertEquals(Color.pink, cs.findColour('s'));
   }
+
+  @Test(groups = "Functional")
+  public void testToAppletParameter()
+  {
+    UserColourScheme cs = new UserColourScheme(
+            "E,D=red; K,R,H=0022FF; c=10 , 20,30");
+    String param = cs.toAppletParameter();
+    assertEquals("D,E=ff0000;H,K,R=0022ff;c=0a141e", param);
+  }
+
+  /**
+   * Test for user colour scheme constructed with a colour per residue,
+   * including gap. Note this can currently be done from the User Defined
+   * Colours dialog, but not by parsing a colours parameter, as
+   * parseAppletParameter only recognises amino acid codes.
+   */
+  @Test(groups = "Functional")
+  public void testConstructor_coloursArray()
+  {
+    Color g = Color.green;
+    Color y = Color.yellow;
+    Color b = Color.blue;
+    Color r = Color.red;
+    // colours for ARNDCQEGHILKMFPSTWYVBZ and gap
+    Color[] colours = new Color[] { g, y, b, r, g, y, r, b, g, y, r, b, g,
+        y, r, b, g, y, r, b, g, y, r, g };
+    UserColourScheme cs = new UserColourScheme(colours);
+
+    assertEquals(g, cs.findColour('A'));
+    assertEquals(b, cs.findColour('n'));
+    assertEquals(g, cs.findColour('-'));
+    assertEquals(g, cs.findColour('.'));
+    assertEquals(g, cs.findColour(' '));
+  }
 }