--- old/modules/controls/src/test/java/com/sun/javafx/scene/control/skin/VirtualFlowTest.java 2014-11-17 21:07:25.000000000 +0300 +++ new/modules/controls/src/test/java/com/sun/javafx/scene/control/skin/VirtualFlowTest.java 2014-11-17 21:07:25.000000000 +0300 @@ -988,6 +988,66 @@ flow.addTrailingCells(true); } + private int rt36556_instanceCount; + @Test + public void test_rt36556() { + rt36556_instanceCount = 0; + flow = new VirtualFlow(); + flow.setVertical(true); + flow.setCreateCell(p -> { + rt36556_instanceCount++; + return new CellStub(flow); + }); + flow.setCellCount(100); + flow.resize(300, 300); + pulse(); + final int cellCountAtStart = rt36556_instanceCount; + flow.adjustPixels(10000); + pulse(); + assertEquals(cellCountAtStart, rt36556_instanceCount); + assertNull(flow.getVisibleCell(0)); + assertMinimalNumberOfCellsAreUsed(flow); + } + + @Test + public void test_rt36556_scrollto() { + rt36556_instanceCount = 0; + flow = new VirtualFlow(); + flow.setVertical(true); + flow.setCreateCell(p -> { + rt36556_instanceCount++; + return new CellStub(flow); + }); + flow.setCellCount(100); + flow.resize(300, 300); + pulse(); + final int cellCountAtStart = rt36556_instanceCount; + flow.scrollTo(80); + pulse(); + assertEquals(cellCountAtStart, rt36556_instanceCount); + assertNull(flow.getVisibleCell(0)); + assertMinimalNumberOfCellsAreUsed(flow); + } + + @Test + public void test_RT39035() { + flow.adjustPixels(250); + pulse(); + flow.adjustPixels(500); + pulse(); + assertTrue(flow.getPosition() < 1.0); + assertMinimalNumberOfCellsAreUsed(flow); + } + + @Test + public void test_RT37421() { + flow.setPosition(0.98); + pulse(); + flow.adjustPixels(100); + pulse(); + assertEquals(1.0, flow.getPosition(), 0.0); + assertMinimalNumberOfCellsAreUsed(flow); + } } class CellStub extends IndexedCell {