Merge branch 'develop' into patch/JAL-4281_idwidthandannotHeight_in_project
[jalview.git] / test / jalview / schemes / FeatureColourTest.java
index 8f7ac7c..42b898d 100644 (file)
@@ -173,6 +173,13 @@ public class FeatureColourTest
     assertEquals(Color.yellow, fc1.getColour());
     assertEquals(10f, fc1.getMin());
     assertEquals(20f, fc1.getMax());
+
+    /*
+     * modify original attribute label and check that copy doesn't change
+     */
+    fc.setAttributeName("MAF", "AF");
+    assertArrayEquals(new String[] { "AF" }, fc1.getAttributeName());
+
   }
 
   @Test(groups = { "Functional" })
@@ -274,8 +281,9 @@ public class FeatureColourTest
     fc = new FeatureColour();
     fc.setColourByLabel(true);
     fc.setAttributeName("CLIN_SIG");
-    assertEquals("domain\tattribute|CLIN_SIG", fc.toJalviewFormat("domain"));
-    
+    assertEquals("domain\tattribute|CLIN_SIG",
+            fc.toJalviewFormat("domain"));
+
     /*
      * colour by label (autoscaled) (an odd state you can reach by selecting
      * 'above threshold', then deselecting 'threshold is min/max' then 'colour
@@ -341,7 +349,7 @@ public class FeatureColourTest
             "domain\tscore|%s|%s|noValueMax|abso|12.0|25.0|none", greenHex,
             redHex);
     assertEquals(expected, fc.toJalviewFormat("domain"));
-    
+
     /*
      * colour ranges over the actual score ranges (not min/max)
      */
@@ -357,8 +365,8 @@ public class FeatureColourTest
     fc.setThreshold(12.5f);
     fc.setBelowThreshold(true);
     expected = String.format(
-            "domain\tscore|%s|%s|noValueMax|12.0|25.0|below|12.5",
-            greenHex, redHex);
+            "domain\tscore|%s|%s|noValueMax|12.0|25.0|below|12.5", greenHex,
+            redHex);
     assertEquals(expected, fc.toJalviewFormat("domain"));
 
     /*
@@ -400,8 +408,8 @@ public class FeatureColourTest
     /*
      * simple colour by hex code
      */
-    fc = FeatureColour.parseJalviewFeatureColour(Format
-            .getHexString(Color.RED));
+    fc = FeatureColour
+            .parseJalviewFeatureColour(Format.getHexString(Color.RED));
     assertTrue(fc.isSimpleColour());
     assertEquals(Color.RED, fc.getColour());
 
@@ -664,7 +672,8 @@ public class FeatureColourTest
   public void testIsOutwithThreshold()
   {
     FeatureColourI fc = new FeatureColour(Color.red);
-    SequenceFeature sf = new SequenceFeature("METAL", "desc", 10, 12, 1.2f, "grp");
+    SequenceFeature sf = new SequenceFeature("METAL", "desc", 10, 12, 1.2f,
+            "grp");
     assertFalse(fc.isOutwithThreshold(null));
     assertFalse(fc.isOutwithThreshold(sf));
 
@@ -700,4 +709,94 @@ public class FeatureColourTest
     sf.setValue("AC", "junk");
     assertFalse(fc.isOutwithThreshold(sf)); // bad value is ignored
   }
+
+  /**
+   * Test description of feature colour suitable for a tooltip
+   */
+  @Test(groups = { "Functional" })
+  public void testGetDescription()
+  {
+    /*
+     * plain colour
+     */
+    FeatureColour fc = new FeatureColour(Color.RED);
+    assertEquals(
+            String.format("r=%d,g=%d,b=%d", Color.RED.getRed(),
+                    Color.red.getGreen(), Color.red.getBlue()),
+            fc.getDescription());
+
+    /*
+     * colour by label (no threshold)
+     */
+    fc = new FeatureColour();
+    fc.setColourByLabel(true);
+    assertEquals("By Label", fc.getDescription());
+
+    /*
+     * colour by attribute text (no threshold)
+     */
+    fc = new FeatureColour();
+    fc.setColourByLabel(true);
+    fc.setAttributeName("CLIN_SIG");
+    assertEquals("By CLIN_SIG", fc.getDescription());
+
+    /*
+     * colour by label (above score threshold) 
+     */
+    fc = new FeatureColour();
+    fc.setColourByLabel(true);
+    fc.setAutoScaled(false);
+    fc.setThreshold(12.5f);
+    fc.setAboveThreshold(true);
+    assertEquals("By Label (Score > 12.5)", fc.getDescription());
+
+    /*
+     * colour by label (below score threshold)
+     */
+    fc.setBelowThreshold(true);
+    assertEquals("By Label (Score < 12.5)", fc.getDescription());
+
+    /*
+     * colour by attributes text (below score threshold)
+     */
+    fc.setBelowThreshold(true);
+    fc.setAttributeName("CSQ", "Consequence");
+    assertEquals("By CSQ:Consequence (Score < 12.5)", fc.getDescription());
+
+    /*
+     * graduated colour by score, no threshold
+     */
+    fc = new FeatureColour(null, Color.GREEN, Color.RED, null, 12f, 25f);
+    assertEquals("By Score", fc.getDescription());
+
+    /*
+     * graduated colour by score, below threshold
+     */
+    fc.setThreshold(12.5f);
+    fc.setBelowThreshold(true);
+    assertEquals("By Score (< 12.5)", fc.getDescription());
+
+    /*
+     * graduated colour by score, above threshold
+     */
+    fc.setThreshold(12.5f);
+    fc.setAboveThreshold(true);
+    fc.setAutoScaled(false);
+    assertEquals("By Score (> 12.5)", fc.getDescription());
+
+    /*
+     * graduated colour by attribute, no threshold
+     */
+    fc.setAttributeName("CSQ", "AF");
+    fc.setAboveThreshold(false);
+    fc.setAutoScaled(false);
+    assertEquals("By CSQ:AF", fc.getDescription());
+
+    /*
+     * graduated colour by attribute, above threshold
+     */
+    fc.setAboveThreshold(true);
+    fc.setAutoScaled(false);
+    assertEquals("By CSQ:AF (> 12.5)", fc.getDescription());
+  }
 }