X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fviewmodel%2FViewportRangesTest.java;h=41a313f2ba26270e8c68f643ae6a4d50715fb00d;hb=8ae616ebad21429f5c58a9190b9919e873806c3c;hp=98b1217f4c50529d596d6f182603b72662302147;hpb=53507580ea0d347514d4f5e092a4d3d815609b9e;p=jalview.git diff --git a/test/jalview/viewmodel/ViewportRangesTest.java b/test/jalview/viewmodel/ViewportRangesTest.java index 98b1217..41a313f 100644 --- a/test/jalview/viewmodel/ViewportRangesTest.java +++ b/test/jalview/viewmodel/ViewportRangesTest.java @@ -402,14 +402,13 @@ public class ViewportRangesTest { assertEquals(vr.getEndRes(), 52); } - // leave until JAL-2388 is merged and we can do without viewport - /*@Test(groups = { "Functional" }) + @Test(groups = { "Functional" }) public void testScrollToVisible() { ViewportRanges vr = new ViewportRanges(al); vr.setViewportStartAndWidth(12,5); vr.setViewportStartAndHeight(10,6); - vr.scrollToVisible(13,14) + vr.scrollToVisible(13, 14); // no change assertEquals(vr.getStartRes(), 12); @@ -420,7 +419,15 @@ public class ViewportRangesTest { assertEquals(vr.getStartSeq(), 6); // test for hidden columns too - }*/ + al.getHiddenColumns().hideColumns(1, 3); + vr.scrollToVisible(13, 3); + assertEquals(vr.getStartRes(), 6); + assertEquals(vr.getStartSeq(), 3); + + vr.scrollToVisible(2, 9); + assertEquals(vr.getStartRes(), 0); + assertEquals(vr.getStartSeq(), 4); + } @Test(groups = { "Functional" }) public void testEventFiring() @@ -793,6 +800,136 @@ public class ViewportRangesTest { } } } + + @Test(groups = { "Functional" }) + public void testScrollUp_wrapped() + { + /* + * alignment 30 tall and 45 wide + */ + AlignmentI al2 = gen.generate(45, 30, 1, 0, 5); + + /* + * wrapped view, 5 sequences high, start at sequence offset 1 + */ + ViewportRanges vr = new ViewportRanges(al2); + vr.setWrappedMode(true); + vr.setViewportStartAndHeight(1, 5); + + /* + * offset wrapped view to column 3 + */ + vr.setStartEndRes(3, 22); + + int startRes = vr.getStartRes(); + int width = vr.getViewportWidth(); + assertEquals(startRes, 3); + assertEquals(width, 20); + + // in wrapped mode, we change startRes but not startSeq + // scroll down: + vr.scrollUp(false); + assertEquals(vr.getStartSeq(), 1); + assertEquals(vr.getStartRes(), 23); + + // scroll up returns to original position + vr.scrollUp(true); + assertEquals(vr.getStartSeq(), 1); + assertEquals(vr.getStartRes(), 3); + + // scroll up again returns to 'origin' + vr.scrollUp(true); + assertEquals(vr.getStartSeq(), 1); + assertEquals(vr.getStartRes(), 0); + + /* + * offset 3 columns once more and do some scroll downs + */ + vr.setStartEndRes(3, 22); + vr.scrollUp(false); + assertEquals(vr.getStartSeq(), 1); + assertEquals(vr.getStartRes(), 23); + vr.scrollUp(false); + assertEquals(vr.getStartSeq(), 1); + assertEquals(vr.getStartRes(), 43); + + /* + * scroll down beyond end of alignment does nothing + */ + vr.scrollUp(false); + assertEquals(vr.getStartSeq(), 1); + assertEquals(vr.getStartRes(), 43); + } + + @Test(groups = { "Functional" }) + public void testSetViewportLocation() + { + AlignmentI al2 = gen.generate(60, 80, 1, 0, 0); + + ViewportRanges vr = new ViewportRanges(al2); + + // start with viewport on 5-14 + vr.setViewportStartAndWidth(5, 10); + assertEquals(vr.getStartRes(), 5); + assertEquals(vr.getEndRes(), 14); + + vr.setViewportStartAndHeight(3, 13); + assertEquals(vr.getStartSeq(), 3); + assertEquals(vr.getEndSeq(), 15); + + // set location to (8,5) - no change + vr.setViewportLocation(8, 5); + assertEquals(vr.getStartRes(), 5); + assertEquals(vr.getEndRes(), 14); + assertEquals(vr.getStartSeq(), 3); + assertEquals(vr.getEndSeq(), 15); + + // set location to (40,50) - change to top left (40,50) + vr.setViewportLocation(40, 50); + assertEquals(vr.getStartRes(), 40); + assertEquals(vr.getEndRes(), 49); + assertEquals(vr.getStartSeq(), 50); + assertEquals(vr.getEndSeq(), 62); + + // set location past end of alignment - resets to leftmost pos + vr.setViewportLocation(63, 85); + assertEquals(vr.getStartRes(), 50); + assertEquals(vr.getEndRes(), 59); + assertEquals(vr.getStartSeq(), 67); + assertEquals(vr.getEndSeq(), 79); + + // hide some columns + al2.getHiddenColumns().hideColumns(20, 50); + vr.setViewportLocation(55, 4); + assertEquals(vr.getStartRes(), 19); + assertEquals(vr.getEndRes(), 28); + assertEquals(vr.getStartSeq(), 4); + assertEquals(vr.getEndSeq(), 16); + + // hide some sequences + al2.getHiddenSequences().hideSequence(al2.getSequenceAt(3)); + al2.getHiddenSequences().hideSequence(al2.getSequenceAt(4)); + vr.setViewportLocation(17, 5); + assertEquals(vr.getStartRes(), 17); + assertEquals(vr.getEndRes(), 26); + assertEquals(vr.getStartSeq(), 3); + assertEquals(vr.getEndSeq(), 15); + + // set wrapped mode + vr.setWrappedMode(true); + vr.setViewportLocation(1, 8); + assertEquals(vr.getStartRes(), 0); + assertEquals(vr.getEndRes(), 9); + assertEquals(vr.getStartSeq(), 3); + assertEquals(vr.getEndSeq(), 15); + + // try further down the alignment + vr.setViewportLocation(57, 5); + assertEquals(vr.getStartRes(), 20); + assertEquals(vr.getEndRes(), 29); + assertEquals(vr.getStartSeq(), 3); + assertEquals(vr.getEndSeq(), 15); + } } // mock listener for property change events