JAL-2371 add test for toggling ignore gaps with PID colour scheme
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 5 Jan 2017 14:26:04 +0000 (14:26 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Thu, 5 Jan 2017 14:26:04 +0000 (14:26 +0000)
test/jalview/schemes/PIDColourSchemeTest.java

index 1518fb3..6f60e50 100644 (file)
@@ -2,12 +2,26 @@ package jalview.schemes;
 
 import static org.testng.Assert.assertEquals;
 
+import jalview.datamodel.SequenceI;
+import jalview.gui.AlignFrame;
+import jalview.gui.AlignViewport;
+import jalview.io.DataSourceType;
+import jalview.io.FileLoader;
+
 import java.awt.Color;
 
 import org.testng.annotations.Test;
 
 public class PIDColourSchemeTest
 {
+  static final Color white = Color.white;
+
+  static final Color over40 = new Color(204, 204, 255);
+
+  static final Color over60 = new Color(153, 153, 255);
+
+  static final Color over80 = new Color(100, 100, 255);
+
   /**
    * Test findColour for cases:
    * <ul>
@@ -26,21 +40,18 @@ public class PIDColourSchemeTest
   {
     ColourSchemeI scheme = new PIDColourScheme();
 
-    Color over40 = new Color(204, 204, 255);
-    Color over60 = new Color(153, 153, 255);
-    Color over80 = new Color(100, 100, 255);
-
     /*
      * doesn't use column or sequence
      */
-    assertEquals(scheme.findColour('A', 0, null, "A", 0f), Color.white);
-    assertEquals(scheme.findColour('A', 0, null, "A", 40f), Color.white);
+    assertEquals(scheme.findColour('A', 0, null, "A", 0f), white);
+    assertEquals(scheme.findColour('A', 0, null, "A", 40f), white);
     assertEquals(scheme.findColour('A', 0, null, "A", 40.1f), over40);
     assertEquals(scheme.findColour('A', 0, null, "A", 60f), over40);
     assertEquals(scheme.findColour('A', 0, null, "A", 60.1f), over60);
     assertEquals(scheme.findColour('A', 0, null, "A", 80f), over60);
     assertEquals(scheme.findColour('A', 0, null, "A", 80.1f), over80);
     assertEquals(scheme.findColour('A', 0, null, "A", 100f), over80);
+    assertEquals(scheme.findColour('A', 0, null, "KFV", 100f), white);
 
     assertEquals(scheme.findColour('a', 0, null, "A", 80f), over60);
     assertEquals(scheme.findColour('A', 0, null, "a", 80f), over60);
@@ -48,4 +59,46 @@ public class PIDColourSchemeTest
     assertEquals(scheme.findColour('A', 0, null, "AC", 80f), over60);
     assertEquals(scheme.findColour('A', 0, null, "KCA", 80f), over60);
   }
+
+  /**
+   * Test that changing the 'ignore gaps in consensus' in the viewport (an
+   * option on the annotation label popup menu) results in a change to the
+   * colouring
+   */
+  @Test
+  public void testFindColour_ignoreGaps()
+  {
+    /*
+     * AAAAA
+     * AAAAA
+     * -CCCC
+     * FFFFF
+     * 
+     * first column consensus is A
+     * first column PID is 50%, or 67% ignoring gaps
+     */
+    String seqs = ">seq1\nAAAAA\n>seq2\nAAAAA\n>seq3\n-CCCC\n>seq4\nFFFFF\n";
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(seqs,
+            DataSourceType.PASTE);
+    AlignViewport viewport = af.getViewport();
+    viewport.setIgnoreGapsConsensus(false, af.alignPanel);
+    af.changeColour_actionPerformed(JalviewColourScheme.PID.toString());
+
+    SequenceI seq = viewport.getAlignment().getSequenceAt(0);
+
+    /*
+     * including gaps, A should be coloured for 50% consensus
+     */
+    Color c = viewport
+            .getViewportColourScheme().findColour('A', 0, seq);
+    assertEquals(c, over40);
+
+    /*
+     * now choose to ignore gaps; colour should be for 67%
+     */
+    viewport.setIgnoreGapsConsensus(true, af.alignPanel);
+    c = viewport
+            .getViewportColourScheme().findColour('A', 0, seq);
+    assertEquals(c, over60);
+  }
 }