package jalview.viewmodel;
import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
import jalview.analysis.AlignmentGenerator;
AlignmentI al = gen.generate(20, 30, 1, 5, 5);
- @BeforeMethod
+ 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" })
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" })
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" })
// 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" })
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" })
// hide last 2 columns
HiddenColumns cols = new HiddenColumns();
- cols.hideColumns(18, 19);
+ cols.hideColumns(19, 20);
al.setHiddenColumns(cols);
vr.setViewportStartAndWidth(1, 5);
vr.scrollRight(false);
assertEquals(vr.getStartRes(), 0);
- vr.setViewportStartAndWidth(19, 5);
+ vr.setViewportStartAndWidth(13, 5);
vr.scrollRight(true);
- assertEquals(vr.getStartRes(), 18);
+ assertEquals(vr.getStartRes(), 14);
// can't scroll right past last visible col
vr.scrollRight(true);
- assertEquals(vr.getStartRes(), 18);
+ assertEquals(vr.getStartRes(), 14);
}
@Test(groups = { "Functional" })
public void testScrollToWrappedVisible()
{
- ViewportRanges vr = new ViewportRanges(al);
+ AlignmentI al2 = gen.generate(60, 30, 1, 5, 5);
+
+ ViewportRanges vr = new ViewportRanges(al2);
+
+ // start with viewport on 5-14
vr.setViewportStartAndWidth(5, 10);
+ assertEquals(vr.getStartRes(), 5);
+ assertEquals(vr.getEndRes(), 14);
+
+ // scroll to 12 - no change
+ assertFalse(vr.scrollToWrappedVisible(12));
+ assertEquals(vr.getStartRes(), 5);
- vr.scrollToWrappedVisible(0);
+ // scroll to 2 - back to 0-9
+ assertTrue(vr.scrollToWrappedVisible(2));
assertEquals(vr.getStartRes(), 0);
+ assertEquals(vr.getEndRes(), 9);
- vr.scrollToWrappedVisible(10);
- assertEquals(vr.getStartRes(), 10);
+ // scroll to 9 - no change
+ assertFalse(vr.scrollToWrappedVisible(9));
+ assertEquals(vr.getStartRes(), 0);
- vr.scrollToWrappedVisible(15);
+ // scroll to 12 - moves to 10-19
+ assertTrue(vr.scrollToWrappedVisible(12));
assertEquals(vr.getStartRes(), 10);
+ assertEquals(vr.getEndRes(), 19);
+
+ vr.setStartRes(13);
+ assertEquals(vr.getStartRes(), 13);
+ assertEquals(vr.getEndRes(), 22);
+
+ // scroll to 45 - jumps to 43-52
+ assertTrue(vr.scrollToWrappedVisible(45));
+ assertEquals(vr.getStartRes(), 43);
+ assertEquals(vr.getEndRes(), 52);
}
// leave until JAL-2388 is merged and we can do without viewport