package glug.gui.zoom; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import glug.gui.UITimeScale; import glug.gui.model.LogarithmicBoundedRange; import org.joda.time.Instant; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public class ViewPreservingZoomerTest { @Mock ZoomFocusFinder zoomFocusFinder; @Mock TimelineViewport timelineViewport; @Mock LogarithmicBoundedRange logarithmicBoundedRange; private ViewPreservingZoomer viewPreservingZoomer; private UITimeScale uiTimeScale; @Before public void setUp() { viewPreservingZoomer = new ViewPreservingZoomer(timelineViewport, zoomFocusFinder, logarithmicBoundedRange); uiTimeScale = new UITimeScale(); } @Test public void shouldEnsureThatZoomFocusIsInSamePlaceInViewportAfterZoom() { Instant instantToZoomAround = new Instant(5000); int viewportPositionForInstant = 300; when(zoomFocusFinder.instantToZoomAround()).thenReturn(instantToZoomAround); when(timelineViewport.getViewportCoordinateFor(instantToZoomAround)).thenReturn(viewportPositionForInstant); when(timelineViewport.getUITimeScale()).thenReturn(uiTimeScale); viewPreservingZoomer.zoomPreservingViewLocation(127); verify(timelineViewport).setViewPosition(instantToZoomAround, viewportPositionForInstant); } }