X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fviewmodel%2FViewportRangesTest.java;h=636f8dd6e8d142e914e87828a260af7105e5e9d8;hb=7abcbfb6619828a810ed1a9dddd870f70bf8bcd1;hp=3cd20964743e9a07d14c93509bb333ef472e5c25;hpb=557859a3ea9a1e86899ef2033de90eadb6d87118;p=jalview.git diff --git a/test/jalview/viewmodel/ViewportRangesTest.java b/test/jalview/viewmodel/ViewportRangesTest.java index 3cd2096..636f8dd 100644 --- a/test/jalview/viewmodel/ViewportRangesTest.java +++ b/test/jalview/viewmodel/ViewportRangesTest.java @@ -5,12 +5,16 @@ import static org.testng.Assert.assertTrue; import jalview.analysis.AlignmentGenerator; import jalview.datamodel.AlignmentI; +import jalview.datamodel.ColumnSelection; +import jalview.datamodel.HiddenColumns; +import jalview.datamodel.HiddenSequences; import java.beans.PropertyChangeEvent; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class ViewportRangesTest { @@ -19,6 +23,18 @@ public class ViewportRangesTest { AlignmentI al = gen.generate(20, 30, 1, 5, 5); + AlignmentI smallAl = gen.generate(7, 2, 2, 5, 5); + + @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" }) public void testViewportRanges() { @@ -114,7 +130,17 @@ public class ViewportRangesTest { assertEquals(vr.getEndRes(), 19); vr.setStartEndRes(al.getWidth(), al.getWidth()); - assertEquals(vr.getEndRes(), al.getWidth()); + assertEquals(vr.getEndRes(), al.getWidth() - 1); + + 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" }) @@ -131,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" }) @@ -184,7 +218,13 @@ public class ViewportRangesTest { // reset out of bounds start values to within bounds vr.setViewportStartAndWidth(35, 5); assertEquals(vr.getViewportWidth(), 5); - assertEquals(vr.getStartRes(), 20); + assertEquals(vr.getStartRes(), 16); + + // small alignment doesn't get bounds reset + ViewportRanges vrsmall = new ViewportRanges(smallAl); + vrsmall.setViewportStartAndWidth(0, 63); + assertEquals(vrsmall.getViewportWidth(), 7); + assertEquals(vrsmall.getStartRes(), 0); } @Test(groups = { "Functional" }) @@ -213,7 +253,7 @@ public class ViewportRangesTest { vr.pageDown(); // pagedown to bottom does not go beyond end, and height stays same - assertEquals(vr.getStartSeq(), 23); + assertEquals(vr.getStartSeq(), 24); assertEquals(vr.getViewportHeight(), 6); } @@ -228,6 +268,30 @@ public class ViewportRangesTest { vr.scrollUp(true); assertEquals(vr.getStartSeq(), 0); + vr.setViewportStartAndHeight(24, 5); + vr.scrollUp(false); + assertEquals(vr.getStartSeq(), 25); + // can't scroll beyond bottom + vr.scrollUp(false); + assertEquals(vr.getStartSeq(), 25); + } + + @Test(groups = { "Functional" }) + public void testScrollUpWithHidden() + { + ViewportRanges vr = new ViewportRanges(al); + + // hide last sequence + HiddenSequences hidden = new HiddenSequences(al); + hidden.hideSequence(al.getSequenceAt(29)); + + vr.setViewportStartAndHeight(1, 5); + vr.scrollUp(true); + assertEquals(vr.getStartSeq(), 0); + // can't scroll above top + vr.scrollUp(true); + assertEquals(vr.getStartSeq(), 0); + vr.setViewportStartAndHeight(23, 5); vr.scrollUp(false); assertEquals(vr.getStartSeq(), 24); @@ -247,12 +311,37 @@ public class ViewportRangesTest { vr.scrollRight(false); assertEquals(vr.getStartRes(), 0); - vr.setViewportStartAndWidth(19, 5); + vr.setViewportStartAndWidth(15, 5); vr.scrollRight(true); - assertEquals(vr.getStartRes(), 20); + assertEquals(vr.getStartRes(), 16); // can't scroll right past end vr.scrollRight(true); - assertEquals(vr.getStartRes(), 20); + assertEquals(vr.getStartRes(), 16); + } + + @Test(groups = { "Functional" }) + public void testScrollRightWithHidden() + { + ViewportRanges vr = new ViewportRanges(al); + + // hide last 2 columns + HiddenColumns cols = new HiddenColumns(); + cols.hideColumns(19, 20); + al.setHiddenColumns(cols); + + vr.setViewportStartAndWidth(1, 5); + vr.scrollRight(false); + assertEquals(vr.getStartRes(), 0); + // can't scroll left past start + vr.scrollRight(false); + assertEquals(vr.getStartRes(), 0); + + vr.setViewportStartAndWidth(13, 5); + vr.scrollRight(true); + assertEquals(vr.getStartRes(), 14); + // can't scroll right past last visible col + vr.scrollRight(true); + assertEquals(vr.getStartRes(), 14); } @Test(groups = { "Functional" }) @@ -296,7 +385,7 @@ public class ViewportRangesTest { { ViewportRanges vr = new ViewportRanges(al); MockPropChangeListener l = new MockPropChangeListener(vr); - List emptylist = new ArrayList(); + List emptylist = new ArrayList<>(); vr.setViewportWidth(5); vr.setViewportHeight(5); @@ -425,11 +514,10 @@ public class ViewportRangesTest { assertTrue(l.verify(1, Arrays.asList("startres"))); l.reset(); - // TODO test scrollToVisibble once hidden columns JAL-2388 merged in - // to avoid somersaults with align viewport - /*vr.scrollToVisible(10, 10); - assertTrue(l.verify(1, Arrays.asList("startres"))); - l.reset();*/ + vr.scrollToVisible(10, 10); + assertTrue(l.verify(4, + Arrays.asList("startseq", "startseq", "startseq", "startseq"))); + l.reset(); vr.scrollToWrappedVisible(5); assertTrue(l.verify(1, Arrays.asList("startres"))); @@ -442,9 +530,9 @@ class MockPropChangeListener implements ViewportListenerI { private int firecount = 0; - private List events = new ArrayList(); + private List events = new ArrayList<>(); - private List newvalues = new ArrayList(); + private List newvalues = new ArrayList<>(); public MockPropChangeListener(ViewportRanges vr) {