JAL-147 ViewportRanges calculate wrapped vertical scroll position
[jalview.git] / test / jalview / viewmodel / ViewportRangesTest.java
index 80bd4db..4c93d71 100644 (file)
@@ -25,12 +25,14 @@ public class ViewportRangesTest {
 
   AlignmentI smallAl = gen.generate(7, 2, 2, 5, 5);
 
-  @BeforeMethod
+  @BeforeMethod(alwaysRun = true)
   public void cleanUp()
   {
     ColumnSelection sel = new ColumnSelection();
     al.getHiddenColumns().revealAllHiddenColumns(sel);
     al.getHiddenSequences().showAll(null);
+    smallAl.getHiddenColumns().revealAllHiddenColumns(sel);
+    smallAl.getHiddenSequences().showAll(null);
   }
 
   @Test(groups = { "Functional" })
@@ -133,6 +135,12 @@ public class ViewportRangesTest {
     ViewportRanges vrsmall = new ViewportRanges(smallAl);
     vrsmall.setStartEndRes(al.getWidth(), al.getWidth());
     assertEquals(vrsmall.getEndRes(), 6);
+
+    // make visible alignment width = 0
+    smallAl.getHiddenColumns().hideColumns(0, 6);
+    vrsmall.setStartEndRes(0, 4);
+    assertEquals(vrsmall.getStartRes(), 0);
+    assertEquals(vrsmall.getEndRes(), 0);
   }
 
   @Test(groups = { "Functional" })
@@ -149,6 +157,14 @@ public class ViewportRangesTest {
 
     vr.setStartEndSeq(al.getHeight(), al.getHeight());
     assertEquals(vr.getEndSeq(), al.getHeight() - 1);
+
+    // make visible alignment height = 0
+    smallAl.getHiddenSequences().hideSequence(smallAl.getSequenceAt(0));
+    smallAl.getHiddenSequences().hideSequence(smallAl.getSequenceAt(0));
+    ViewportRanges vrsmall = new ViewportRanges(smallAl);
+    vrsmall.setStartEndSeq(0, 3);
+    assertEquals(vrsmall.getStartSeq(), 0);
+    assertEquals(vrsmall.getEndSeq(), 0);
   }
 
   @Test(groups = { "Functional" })
@@ -507,6 +523,39 @@ public class ViewportRangesTest {
     assertTrue(l.verify(1, Arrays.asList("startres")));
     l.reset();
   }
+
+  @Test(groups = { "Functional" })
+  public void testGetWrappedScrollPosition()
+  {
+    AlignmentI al2 = gen.generate(157, 15, 1, 5, 5);
+    ViewportRanges vr = new ViewportRanges(al2);
+    vr.setStartEndRes(0, 39);
+    int width = vr.getViewportWidth(); // 40
+
+    /*
+     * scroll is 0 at column 0 (only)
+     */
+    assertEquals(vr.getWrappedScrollPosition(0), 0);
+
+    /*
+     * scroll is 1 at columns 1-40
+     */
+    int i = 1;
+    int j = width;
+    for (; i <= j; i++)
+    {
+      assertEquals(1, vr.getWrappedScrollPosition(i));
+    }
+
+    /*
+     * scroll is 2 at columns 41-80, etc
+     */
+    j += width;
+    for (; i <= j; i++)
+    {
+      assertEquals(2, vr.getWrappedScrollPosition(i), "For " + i);
+    }
+  }
 }
 
 // mock listener for property change events