Adds double tap to zoom
This commit is contained in:
committed by
Hannes Janetzek
parent
804c91c701
commit
469ca9093f
@@ -12,6 +12,7 @@ import org.oscim.map.ViewController;
|
||||
|
||||
import static org.fest.assertions.api.Assertions.assertThat;
|
||||
import static org.mockito.Matchers.any;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@@ -39,22 +40,58 @@ public class MapEventLayerTest {
|
||||
assertThat(layer).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void doubleTap_shouldAnimateZoom() throws Exception {
|
||||
simulateDoubleTap();
|
||||
verify(mockAnimator).animateZoom(300, 2, 0, 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void doubleTap_shouldAnimateZoomAfterDoubleTouchDrag() throws Exception {
|
||||
simulateDoubleTouchDragUp();
|
||||
simulateDoubleTap();
|
||||
verify(mockAnimator).animateZoom(300, 2, 0, 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void doubleTouchDrag_shouldNotAnimateZoom() throws Exception {
|
||||
simulateDoubleTouchDragUp();
|
||||
verify(mockAnimator, never()).animateZoom(any(long.class), any(double.class),
|
||||
any(float.class), any(float.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void doubleTouchDragUp_shouldDecreaseContentScale() throws Exception {
|
||||
layer.onTouchEvent(new TestMotionEvent(MotionEvent.ACTION_DOWN, 1, 1));
|
||||
layer.onGesture(Gesture.DOUBLE_TAP, new TestMotionEvent(MotionEvent.ACTION_MOVE, 1, 0));
|
||||
layer.onTouchEvent(new TestMotionEvent(MotionEvent.ACTION_MOVE, 1, 0));
|
||||
simulateDoubleTouchDragUp();
|
||||
verify(mockViewport).scaleMap(argumentCaptor.capture(), any(float.class), any(float.class));
|
||||
assertThat(argumentCaptor.getValue()).isLessThan(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void doubleTouchDragDown_shouldIncreaseContentScale() throws Exception {
|
||||
simulateDoubleTouchDragDown();
|
||||
verify(mockViewport).scaleMap(argumentCaptor.capture(), any(float.class), any(float.class));
|
||||
assertThat(argumentCaptor.getValue()).isGreaterThan(1);
|
||||
}
|
||||
|
||||
private void simulateDoubleTap() {
|
||||
layer.onTouchEvent(new TestMotionEvent(MotionEvent.ACTION_DOWN, 1, 1));
|
||||
layer.onGesture(Gesture.DOUBLE_TAP, new TestMotionEvent(MotionEvent.ACTION_UP, 1, 1));
|
||||
layer.onTouchEvent(new TestMotionEvent(MotionEvent.ACTION_UP, 1, 1));
|
||||
}
|
||||
|
||||
private void simulateDoubleTouchDragUp() {
|
||||
layer.onTouchEvent(new TestMotionEvent(MotionEvent.ACTION_DOWN, 1, 1));
|
||||
layer.onGesture(Gesture.DOUBLE_TAP, new TestMotionEvent(MotionEvent.ACTION_MOVE, 1, 0));
|
||||
layer.onTouchEvent(new TestMotionEvent(MotionEvent.ACTION_MOVE, 1, 0));
|
||||
layer.onTouchEvent(new TestMotionEvent(MotionEvent.ACTION_UP, 1, 0));
|
||||
}
|
||||
|
||||
private void simulateDoubleTouchDragDown() {
|
||||
layer.onTouchEvent(new TestMotionEvent(MotionEvent.ACTION_DOWN, 1, 1));
|
||||
layer.onGesture(Gesture.DOUBLE_TAP, new TestMotionEvent(MotionEvent.ACTION_MOVE, 1, 2));
|
||||
layer.onTouchEvent(new TestMotionEvent(MotionEvent.ACTION_MOVE, 1, 2));
|
||||
verify(mockViewport).scaleMap(argumentCaptor.capture(), any(float.class), any(float.class));
|
||||
assertThat(argumentCaptor.getValue()).isGreaterThan(1);
|
||||
layer.onTouchEvent(new TestMotionEvent(MotionEvent.ACTION_UP, 1, 2));
|
||||
}
|
||||
|
||||
class TestMotionEvent extends MotionEvent {
|
||||
|
||||
Reference in New Issue
Block a user