+package jalview.gui;
+
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
+
+import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.Sequence;
+import jalview.datamodel.SequenceFeature;
+import jalview.datamodel.SequenceI;
+
+import java.util.List;
+
+import org.testng.annotations.Test;
+
+public class AlignFrameTest
+{
+
+ @Test
+ public void testHideFeatureColumns()
+ {
+ SequenceI seq1 = new Sequence("Seq1", "ABCDEFGHIJ");
+ SequenceI seq2 = new Sequence("Seq2", "ABCDEFGHIJ");
+ seq1.addSequenceFeature(new SequenceFeature("Metal", "", 1, 5,
+ Float.NaN, null));
+ seq2.addSequenceFeature(new SequenceFeature("Metal", "", 6, 10,
+ Float.NaN, null));
+ seq1.addSequenceFeature(new SequenceFeature("Turn", "", 2, 4,
+ Float.NaN, null));
+ seq2.addSequenceFeature(new SequenceFeature("Turn", "", 7, 9,
+ Float.NaN, null));
+ AlignmentI al = new Alignment(new SequenceI[] { seq1, seq2 });
+ AlignFrame af = new AlignFrame(al, al.getWidth(), al.getHeight());
+
+ /*
+ * hiding a feature not present does nothing
+ */
+ assertFalse(af.hideFeatureColumns("exon", true));
+ assertTrue(af.getViewport().getColumnSelection().isEmpty());
+ assertTrue(af.getViewport().getColumnSelection().getHiddenColumns()
+ .isEmpty());
+ assertFalse(af.hideFeatureColumns("exon", false));
+ assertTrue(af.getViewport().getColumnSelection().isEmpty());
+ assertTrue(af.getViewport().getColumnSelection().getHiddenColumns()
+ .isEmpty());
+
+ /*
+ * hiding a feature in all columns does nothing
+ */
+ assertFalse(af.hideFeatureColumns("Metal", true));
+ assertTrue(af.getViewport().getColumnSelection().isEmpty());
+ List<int[]> hidden = af.getViewport().getColumnSelection()
+ .getHiddenColumns();
+ assertTrue(hidden.isEmpty());
+
+ /*
+ * hide a feature present in some columns
+ * sequence positions [2-4], [7-9] are column positions
+ * [1-3], [6-8] base zero
+ */
+ assertTrue(af.hideFeatureColumns("Turn", true));
+ hidden = af.getViewport().getColumnSelection()
+ .getHiddenColumns();
+ assertEquals(2, hidden.size());
+ assertEquals(1, hidden.get(0)[0]);
+ assertEquals(3, hidden.get(0)[1]);
+ assertEquals(6, hidden.get(1)[0]);
+ assertEquals(8, hidden.get(1)[1]);
+ }
+}