Merge branch 'bug/JAL-3212columnSelectionWithHidden' into develop
[jalview.git] / test / jalview / gui / AlignViewportTest.java
index 959abb0..fc6a80d 100644 (file)
@@ -511,4 +511,71 @@ public class AlignViewportTest
     assertEquals(0, ranges.getStartSeq());
     assertEquals(2, ranges.getEndSeq());
   }
+
+  @Test(groups = { "Functional" })
+  public void testGetAbsoluteColumn()
+  {
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
+            "examples/uniref50.fa", DataSourceType.FILE);
+    AlignViewport av = af.getViewport();
+    ViewportRanges ranges = av.getRanges();
+    assertEquals(0, ranges.getStartRes());
+    assertEquals(59, ranges.getEndRes()); // 60 columns wide
+
+    int cw = av.getCharWidth();
+    assertEquals(0, av.getAbsoluteColumn(0));
+    assertEquals(0, av.getAbsoluteColumn(cw - 1));
+    assertEquals(1, av.getAbsoluteColumn(cw));
+
+    // negative x is treated as zero:
+    assertEquals(0, av.getAbsoluteColumn(-20));
+
+    // x to the right of panel is restricted to panel width:
+    assertEquals(59, av.getAbsoluteColumn(100 * cw));
+
+    // scroll right by 10 columns
+    af.alignPanel.setScrollValues(10, 0);
+    assertEquals(10, av.getAbsoluteColumn(0));
+    assertEquals(10, av.getAbsoluteColumn(cw - 1));
+    assertEquals(11, av.getAbsoluteColumn(cw));
+    assertEquals(10, av.getAbsoluteColumn(-20));
+    assertEquals(69, av.getAbsoluteColumn(100 * cw));
+  }
+
+  @Test(
+    groups =
+    { "Functional" },
+    expectedExceptions =
+    { IllegalStateException.class })
+  public void testGetAbsoluteColumn_wrapped()
+  {
+    testee.setWrapAlignment(true);
+    testee.getAbsoluteColumn(0);
+  }
+
+  @Test(groups = { "Functional" })
+  public void testGetAbsoluteColumn_hiddenColumns()
+  {
+    AlignFrame af = new FileLoader().LoadFileWaitTillLoaded(
+            "examples/uniref50.fa", DataSourceType.FILE);
+    AlignViewport av = af.getViewport();
+    ViewportRanges ranges = av.getRanges();
+    assertEquals(0, ranges.getStartRes());
+    assertEquals(59, ranges.getEndRes()); // 60 columns wide
+  
+    av.hideColumns(11, 40); // 30 columns hidden, cols 0-10 visible
+    int cw = av.getCharWidth();
+    assertEquals(0, av.getAbsoluteColumn(0));
+    assertEquals(10, av.getAbsoluteColumn(10 * cw)); // left of hidden cols
+    assertEquals(41, av.getAbsoluteColumn(11 * cw)); // skipped 30 hidden
+  
+    // scroll right by 11 columns - to just past hidden columns marker
+    af.alignPanel.setScrollValues(11, 0);
+    assertEquals(41, av.getAbsoluteColumn(0));
+
+    // hide absolute columns 60-70 (visible columns 19-29)
+    av.hideColumns(60, 70);
+    assertEquals(59, av.getAbsoluteColumn(18 * cw));
+    assertEquals(71, av.getAbsoluteColumn(19 * cw)); // skipped 11 hidden
+  }
 }