JAL-192 fix bounds when no hidden regions, and when sequence contained in hidden...
[jalview.git] / test / jalview / datamodel / ColumnSelectionTest.java
index 0e7678b..36932d1 100644 (file)
@@ -100,17 +100,50 @@ public class ColumnSelectionTest
   public void testLocateVisibleBoundsofSequence()
   {
     ColumnSelection cs = new ColumnSelection();
-    SequenceI seq = new Sequence("RefSeq", "-A-SD-ASD--E");
+    SequenceI seq = new Sequence("RefSeq", "-A-SD-ASD--E---");
     assertEquals(2, seq.findIndex(seq.getStart()));
-    assertEquals(Arrays.toString(new int[] { seq.findIndex(seq.getStart()),
-        seq.findIndex(seq.getEnd()), seq.getStart(), seq.getEnd() }),
+
+    // no hidden columns
+    assertEquals(
+            Arrays.toString(new int[] { seq.findIndex(seq.getStart()) - 1,
+                seq.findIndex(seq.getEnd()) - 1, seq.getStart(),
+                seq.getEnd() }),
+            Arrays.toString(cs.locateVisibleBoundsOfSequence(seq)));
+
+    // hidden column on gap after end of sequence - should not affect bounds
+    cs.hideColumns(13);
+    assertEquals(
+            Arrays.toString(new int[] { seq.findIndex(seq.getStart()) - 1,
+                seq.findIndex(seq.getEnd()) - 1, seq.getStart(),
+                seq.getEnd() }),
+            Arrays.toString(cs.locateVisibleBoundsOfSequence(seq)));
+
+    cs.revealAllHiddenColumns();
+    // hidden column on gap before beginning of sequence - should vis bounds by
+    // one
+    cs.hideColumns(0);
+    assertEquals(
+            Arrays.toString(new int[] { seq.findIndex(seq.getStart()) - 2,
+                seq.findIndex(seq.getEnd()) - 2, seq.getStart(),
+                seq.getEnd() }),
             Arrays.toString(cs.locateVisibleBoundsOfSequence(seq)));
+
+    cs.revealAllHiddenColumns();
+    // hide columns around most of sequence - leave one residue remaining
     cs.hideColumns(1, 3);
     cs.hideColumns(6, 11);
     assertEquals("-D",
             cs.getVisibleSequenceStrings(0, 5, new SequenceI[] { seq })[0]);
     assertEquals(Arrays.toString(new int[] { 1, 1, 3, 3 }),
             Arrays.toString(cs.locateVisibleBoundsOfSequence(seq)));
+    cs.revealAllHiddenColumns();
+
+    // hide whole sequence - should just get location of hidden region
+    // containing sequence
+    cs.hideColumns(1, 11);
+    assertEquals(Arrays.toString(new int[] { 0, 1, 0, 0 }),
+            Arrays.toString(cs.locateVisibleBoundsOfSequence(seq)));
+
   }
 
   @Test(groups = { "Functional" })