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>
{
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);
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);
+ }
}