summaryrefslogtreecommitdiffstats
path: root/tests/auto/declarative_ui/tst_map_pinch_and_flick.qml_disabled
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/declarative_ui/tst_map_pinch_and_flick.qml_disabled')
-rw-r--r--tests/auto/declarative_ui/tst_map_pinch_and_flick.qml_disabled592
1 files changed, 592 insertions, 0 deletions
diff --git a/tests/auto/declarative_ui/tst_map_pinch_and_flick.qml_disabled b/tests/auto/declarative_ui/tst_map_pinch_and_flick.qml_disabled
new file mode 100644
index 00000000..206ff70c
--- /dev/null
+++ b/tests/auto/declarative_ui/tst_map_pinch_and_flick.qml_disabled
@@ -0,0 +1,592 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL21$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file. Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import QtTest 1.0
+import QtLocation 5.3
+import QtPositioning 5.2
+import QtLocation.test 5.0
+
+Item {
+ // General-purpose elements for the test:
+ id: page
+ width: 100
+ height: 100
+ Plugin { id: testPlugin; name: "qmlgeo.test.plugin"; allowExperimental: true }
+
+ property variant coordinate1: QtPositioning.coordinate(10, 11)
+
+ Map {
+ id: map
+ plugin: testPlugin
+ center: coordinate1;
+ zoomLevel: 9;
+ anchors.fill: page
+ x:0; y:0
+ property variant lastPinchEvent: null
+ property bool rejectPinch: false
+ gesture.onPinchStarted: {
+ map.lastPinchEvent = pinch;
+ if (rejectPinch)
+ pinch.accepted = false;
+ //console.log('Pinch got started, point1: ' + pinch.point1 + ' point2: ' + pinch.point2 + ' angle: ' + pinch.angle)
+ }
+ gesture.onPinchUpdated: {
+ map.lastPinchEvent = pinch;
+ //console.log('Pinch got updated, point1: ' + pinch.point1 + ' point2: ' + pinch.point2 + ' angle: ' + pinch.angle)
+ }
+ gesture.onPinchFinished: {
+ map.lastPinchEvent = pinch;
+ }
+ property real flickStartedLatitude
+ property real flickStartedLongitude
+ property bool disableFlickOnStarted: false
+ property bool disableFlickOnMovementStarted: false
+ gesture.onPanStarted: {
+ if (disableFlickOnMovementStarted)
+ map.gesture.panEnabled = false
+ }
+ gesture.onFlickStarted: {
+ flickStartedLatitude = map.center.latitude
+ flickStartedLatitude = map.center.longitude
+ if (disableFlickOnStarted)
+ map.gesture.panEnabled = false
+ }
+ }
+ SignalSpy {id: centerSpy; target: map; signalName: 'centerChanged'}
+ SignalSpy {id: pinchStartedSpy; target: map.gesture; signalName: 'pinchStarted'}
+ SignalSpy {id: pinchUpdatedSpy; target: map.gesture; signalName: 'pinchUpdated'}
+ SignalSpy {id: pinchFinishedSpy; target: map.gesture; signalName: 'pinchFinished'}
+ SignalSpy {id: pinchMaximumZoomLevelChangeSpy; target: map.gesture; signalName: 'maximumZoomLevelChangeChanged'}
+ SignalSpy {id: gestureEnabledSpy; target: map.gesture; signalName: 'enabledChanged'}
+ SignalSpy {id: pinchActiveSpy; target: map.gesture; signalName: 'pinchActiveChanged'}
+ SignalSpy {id: pinchActiveGesturesSpy; target: map.gesture; signalName: 'activeGesturesChanged'}
+ SignalSpy {id: mapZoomLevelSpy; target: map; signalName: 'zoomLevelChanged'}
+ SignalSpy {id: flickDecelerationSpy; target: map.gesture; signalName: 'flickDecelerationChanged'}
+ SignalSpy {id: movementStoppedSpy; target: map.gesture; signalName: 'movementStopped'}
+ SignalSpy {id: flickStartedSpy; target: map.gesture; signalName: 'flickStarted'}
+ SignalSpy {id: flickFinishedSpy; target: map.gesture; signalName: 'flickFinished'}
+
+ // From QtLocation.test plugin
+ PinchGenerator {
+ id: pinchGenerator
+ anchors.fill: parent
+ target: map
+ enabled: false
+ }
+
+ TestCase {
+ when: windowShown
+ name: "Map pinch"
+
+ function clear_data() {
+ centerSpy.clear()
+ pinchStartedSpy.clear()
+ pinchUpdatedSpy.clear()
+ pinchFinishedSpy.clear()
+ pinchMaximumZoomLevelChangeSpy.clear()
+ gestureEnabledSpy.clear()
+ pinchActiveSpy.clear()
+ pinchActiveGesturesSpy.clear()
+ mapZoomLevelSpy.clear()
+ flickDecelerationSpy.clear()
+ movementStoppedSpy.clear()
+ flickStartedSpy.clear()
+ flickFinishedSpy.clear()
+ }
+
+ function test_a_basic_properties() { // a to excecute first
+ clear_data()
+
+ compare(map.gesture.enabled, true)
+ map.gesture.enabled = false
+ compare(gestureEnabledSpy.count, 1)
+ compare(map.gesture.enabled, false)
+ map.gesture.enabled = false
+ compare(gestureEnabledSpy.count, 1)
+ compare(map.gesture.enabled, false)
+ map.gesture.enabled = true
+ compare(gestureEnabledSpy.count, 2)
+ compare(map.gesture.enabled, true)
+
+ compare(map.gesture.isPinchActive, false)
+
+ verify(map.gesture.activeGestures & MapGestureArea.ZoomGesture)
+ map.gesture.activeGestures = MapGestureArea.NoGesture
+ compare(map.gesture.activeGestures, MapGestureArea.NoGesture)
+ compare(pinchActiveGesturesSpy.count, 1)
+ map.gesture.activeGestures = MapGestureArea.NoGesture
+ compare(map.gesture.activeGestures, MapGestureArea.NoGesture)
+ compare(pinchActiveGesturesSpy.count, 1)
+ map.gesture.activeGestures = MapGestureArea.ZoomGesture | MapGestureArea.PanGesture
+ compare(map.gesture.activeGestures, MapGestureArea.ZoomGesture | MapGestureArea.PanGesture)
+ compare(pinchActiveGesturesSpy.count, 2)
+ map.gesture.activeGestures = MapGestureArea.PanGesture
+ compare(map.gesture.activeGestures, MapGestureArea.PanGesture)
+ compare(pinchActiveGesturesSpy.count, 3)
+ map.gesture.activeGestures = MapGestureArea.ZoomGesture
+ compare(map.gesture.activeGestures, MapGestureArea.ZoomGesture)
+ compare(pinchActiveGesturesSpy.count, 4)
+
+ compare(map.gesture.maximumZoomLevelChange, 2)
+ map.gesture.maximumZoomLevelChange = 4
+ compare(pinchMaximumZoomLevelChangeSpy.count, 1)
+ compare (map.gesture.maximumZoomLevelChange, 4)
+ map.gesture.maximumZoomLevelChange = 4
+ compare(pinchMaximumZoomLevelChangeSpy.count, 1)
+ compare (map.gesture.maximumZoomLevelChange, 4)
+ map.gesture.maximumZoomLevelChange = 11 // too big
+ map.gesture.maximumZoomLevelChange = 0.01 // too small
+ map.gesture.maximumZoomLevelChange = -1 // too small
+ compare(pinchMaximumZoomLevelChangeSpy.count, 1)
+ compare (map.gesture.maximumZoomLevelChange, 4)
+ map.gesture.maximumZoomLevelChange = 2
+ compare(pinchMaximumZoomLevelChangeSpy.count, 2)
+ compare (map.gesture.maximumZoomLevelChange, 2)
+
+ compare(map.gesture.flickDeceleration, 2500)
+ map.gesture.flickDeceleration = 2600
+ compare(flickDecelerationSpy.count, 1)
+ compare(map.gesture.flickDeceleration, 2600)
+ map.gesture.flickDeceleration = 2600
+ compare(flickDecelerationSpy.count, 1)
+ compare(map.gesture.flickDeceleration, 2600)
+ map.gesture.flickDeceleration = 400 // too small
+ compare(flickDecelerationSpy.count, 2)
+ compare(map.gesture.flickDeceleration, 500) // clipped to min
+ map.gesture.flickDeceleration = 11000 // too big
+ compare(flickDecelerationSpy.count, 3)
+ compare(map.gesture.flickDeceleration, 10000) // clipped to max
+ }
+
+ function test_a_flick() {
+ clear_data()
+ var i=0
+ //var moveLatitude=0
+ // few sanity checks
+ map.gesture.activeGestures = MapGestureArea.PanGesture | MapGestureArea.FlickGesture;
+ map.gesture.enabled = true
+ map.gesture.panEnabled = true
+ // to get maximum changes (robust autotest)
+ map.gesture.flickDeceleration = 500
+ map.zoomLevel = 0
+ compare(map.center.latitude, coordinate1.latitude)
+ compare(map.center.longitude, coordinate1.longitude)
+ // 1. test basic flick down
+ clear_data()
+ map.center.latitude = 10
+ map.center.longitude = 11
+ mousePress(map, 0, 50)
+ for (i=0; i < 50; i += 5) {
+ wait(20)
+ mouseMove(map, 0, (50 + i), 0, Qt.LeftButton);
+ }
+ mouseRelease(map, 0, (50 + i))
+
+ // order of signals is: flickStarted, either order: (flickEnded, movementEnded)
+ verify(map.center.latitude > 10) // latitude increases we are going 'up/north' (moving mouse down)
+ var moveLatitude = map.center.latitude // store lat and check that flick continues
+ tryCompare(flickStartedSpy, "count", 1)
+
+ tryCompare(movementStoppedSpy, "count", 1)
+ tryCompare(flickFinishedSpy, "count", 1)
+ verify(map.center.latitude > moveLatitude)
+ compare(map.center.longitude, 11) // should remain the same
+
+ // 2. test basic flick up
+ clear_data()
+ map.center.latitude = 70
+ map.center.longitude = 11
+ mousePress(map, 10, 95)
+ for (i=45; i > 0; i -= 5) {
+ wait(20)
+ mouseMove(map, 10, (50 + i), 0, Qt.LeftButton);
+ }
+ mouseRelease(map, 10, (50 + i))
+ verify(map.center.latitude < 70)
+ moveLatitude = map.center.latitude // store lat and check that flick continues
+ tryCompare(flickStartedSpy, "count", 1)
+ tryCompare(movementStoppedSpy, "count", 1)
+ tryCompare(flickFinishedSpy, "count", 1)
+ verify(map.center.latitude < moveLatitude)
+ compare(map.center.longitude, 11) // should remain the same
+
+ // 3. basic flick diagonal
+ clear_data()
+ map.center.latitude = 50
+ map.center.longitude = 50
+ mousePress(map, 0, 0)
+ for (i=0; i < 50; i += 5) {
+ wait(20)
+ mouseMove(map, i, i, 0, Qt.LeftButton);
+ }
+ mouseRelease(map, i, i)
+ verify(map.center.latitude > 50)
+ verify(map.center.longitude < 50)
+ moveLatitude = map.center.latitude
+ var moveLongitude = map.center.longitude
+ tryCompare(flickStartedSpy, "count", 1)
+ tryCompare(movementStoppedSpy, "count", 1)
+ tryCompare(flickFinishedSpy, "count", 1)
+ verify(map.center.latitude > moveLatitude)
+ verify(map.center.longitude < moveLongitude)
+ var diagonalFlickResultLatitude = map.center.latitude
+ var diagonalFlickResultLongitude = map.center.longitude
+ // 4. test flicking while disabled
+ clear_data()
+ map.gesture.panEnabled = false
+ map.center.latitude = 50
+ map.center.longitude = 50
+ for (i=0; i < 50; i += 5) {
+ wait(20)
+ mouseMove(map, i, i, 0, Qt.LeftButton);
+ }
+ mouseRelease(map, i, i)
+ compare(flickStartedSpy.count, 0)
+ compare(flickFinishedSpy.count, 0)
+ compare(movementStoppedSpy.count, 0)
+ map.gesture.panEnabled = true
+
+ // 5. disable during flick: onFlickStarted
+ clear_data()
+ map.disableFlickOnStarted = true
+ map.center.latitude = 50
+ map.center.longitude = 50
+ mousePress(map, 0, 0)
+ for (i=0; i < 50; i += 5) {
+ wait(20)
+ mouseMove(map, i, i, 0, Qt.LeftButton);
+ }
+ mouseRelease(map, i, i)
+ tryCompare(flickStartedSpy, "count", 1)
+ verify(map.center.latitude > 50)
+ tryCompare(flickStartedSpy, "count", 1)
+ tryCompare(movementStoppedSpy, "count", 1)
+ tryCompare(flickFinishedSpy, "count", 1)
+ // compare that flick was interrupted (less movement than without interrupting)
+ verify(diagonalFlickResultLatitude > map.center.latitude)
+ verify(diagonalFlickResultLongitude < map.center.longitude)
+ map.disableFlickOnStarted = false
+ map.gesture.panEnabled = true
+
+ // 6. disable during flick: onMovementStarted
+ clear_data()
+ map.disableFlickOnMovementStarted = true
+ map.center.latitude = 50
+ map.center.longitude = 50
+ mousePress(map, 0, 0)
+ for (i=0; i < 50; i += 5) {
+ wait(20)
+ mouseMove(map, i, i, 0, Qt.LeftButton);
+ }
+ mouseRelease(map, i, i)
+ verify(map.center.latitude > 50)
+ tryCompare(movementStoppedSpy, "count", 1)
+ // compare that flick was interrupted (less movement than without interrupting)
+ verify(diagonalFlickResultLatitude > map.center.latitude)
+ verify(diagonalFlickResultLongitude < map.center.longitude)
+ map.disableFlickOnMovementStarted = false
+ }
+
+ function test_pinch_zoom() {
+ map.gesture.activeGestures = MapGestureArea.ZoomGesture
+ map.zoomLevel = 9
+ clear_data()
+ // 1. typical zoom in
+ map.gesture.maximumZoomLevelChange = 2
+ compare(map.gesture.isPinchActive, false)
+ pinchGenerator.pinch(
+ Qt.point(0,50), // point1From
+ Qt.point(50,50), // point1To
+ Qt.point(100,50), // point2From
+ Qt.point(50,50), // point2To
+ 40, // interval between touch events (swipe1), default 20ms
+ 40, // interval between touch events (swipe2), default 20ms
+ 10, // number of touchevents in point1from -> point1to, default 10
+ 10); // number of touchevents in point2from -> point2to, default 10
+ tryCompare(pinchStartedSpy, "count", 1);
+ // check the pinch event data for pinchStarted
+ compare(map.lastPinchEvent.center.x, 50)
+ compare(map.lastPinchEvent.center.y, 50)
+ compare(map.lastPinchEvent.angle, 0)
+ verify((map.lastPinchEvent.point1.x > 0) && (map.lastPinchEvent.point1.x < 25))
+ compare(map.lastPinchEvent.point1.y, 50)
+ verify((map.lastPinchEvent.point2.x > 75) && (map.lastPinchEvent.point2.x < 100))
+ compare(map.lastPinchEvent.point2.y, 50)
+ compare(map.lastPinchEvent.accepted, true)
+ compare(map.lastPinchEvent.pointCount, 2)
+ tryCompare(pinchActiveSpy, "count", 1) // check that pinch is active
+ compare(map.gesture.isPinchActive, true)
+ wait(200)
+ // check the pinch event data for pinchUpdated
+ compare(map.lastPinchEvent.center.x, 50)
+ compare(map.lastPinchEvent.center.y, 50)
+ compare(map.lastPinchEvent.angle, 0)
+ verify((map.lastPinchEvent.point1.x) > 25 && (map.lastPinchEvent.point1.x <= 50))
+ compare(map.lastPinchEvent.point1.y, 50)
+ verify((map.lastPinchEvent.point2.x) >= 50 && (map.lastPinchEvent.point2.x < 85))
+ compare(map.lastPinchEvent.point2.y, 50)
+ compare(map.lastPinchEvent.accepted, true)
+ compare(map.lastPinchEvent.pointCount, 2)
+ tryCompare(pinchFinishedSpy, "count", 1);
+ // check the pinch event data for pinchFinished
+ compare(map.lastPinchEvent.center.x, 50)
+ compare(map.lastPinchEvent.center.y, 50)
+ compare(map.lastPinchEvent.angle, 0)
+ verify((map.lastPinchEvent.point1.x) > 35 && (map.lastPinchEvent.point1.x <= 50))
+ compare(map.lastPinchEvent.point1.y, 50)
+ verify((map.lastPinchEvent.point2.x) >= 50 && (map.lastPinchEvent.point2.x < 65))
+ compare(map.lastPinchEvent.point2.y, 50)
+ compare(map.lastPinchEvent.accepted, true)
+ compare(map.lastPinchEvent.pointCount, 0)
+
+ verify(pinchUpdatedSpy.count >= 5); // verify 'sane' number of updates received
+ compare(pinchActiveSpy.count,2)
+ compare(map.gesture.isPinchActive, false)
+ compare(mapZoomLevelSpy.count, pinchUpdatedSpy.count)
+ compare(map.zoomLevel, 8)
+ // 2. typical zoom out
+ clear_data();
+ map.gesture.maximumZoomLevelChange = 2
+ pinchGenerator.pinch(Qt.point(50,50), Qt.point(0,50),
+ Qt.point(50,50), Qt.point(100,50),
+ 40, 40, 10, 10);
+ tryCompare(pinchStartedSpy, "count", 1);
+ tryCompare(pinchFinishedSpy, "count", 1);
+ verify(pinchUpdatedSpy.count >= 5); // verify 'sane' number of updates received
+ compare(map.zoomLevel, 9)
+ // 3. zoom in and back out (direction change during same pinch)
+ clear_data();
+ pinchGenerator.pinch(Qt.point(0,50), Qt.point(100,50),
+ Qt.point(100,50),Qt.point(0,50),
+ 40, 40, 10, 10);
+ tryCompare(pinchStartedSpy, "count", 1);
+ tryCompare(pinchFinishedSpy, "count", 1);
+ verify(pinchUpdatedSpy.count >= 5); // verify 'sane' number of updates received
+ compare(map.zoomLevel, 9) // should remain the same
+ // 4. typical zoom in with different change level
+ clear_data();
+ map.gesture.maximumZoomLevelChange = 4
+ compare (map.gesture.maximumZoomLevelChange, 4)
+ pinchGenerator.pinch(Qt.point(0,50),Qt.point(50,50),
+ Qt.point(100,50),Qt.point(50,50),
+ 40, 40, 10, 10);
+ tryCompare(pinchFinishedSpy, "count", 1);
+ compare(map.zoomLevel, 7)
+ // 5. typical zoom out with different change level
+ clear_data();
+ map.gesture.maximumZoomLevelChange = 1
+ compare (map.gesture.maximumZoomLevelChange, 1)
+ pinchGenerator.pinch(Qt.point(50,50), Qt.point(0,50),
+ Qt.point(50,50), Qt.point(100,50),
+ 40, 40, 10, 10);
+ tryCompare(pinchFinishedSpy, "count", 1);
+ compare(map.zoomLevel, 7.5)
+
+ // 6. try to zoom in below minimum zoom level
+ /*
+ clear_data()
+ map.gesture.maximumZoomLevelChange = 4
+ map.gesture.minimumZoomLevel = 7
+ pinchGenerator.pinch(Qt.point(0,50),Qt.point(50,50),Qt.point(100,50),Qt.point(50,50));
+ wait(250);
+ tryCompare(pinchFinishedSpy, "count", 1);
+ compare(map.zoomLevel, 7) // would go to 5.5
+
+ // 7. try to zoom out above maximum zoom level
+ clear_data()
+ map.gesture.maximumZoomLevelChange = 4
+ map.gesture.maximumZoomLevel = 8
+ pinchGenerator.pinch(Qt.point(50,50), Qt.point(0,50),Qt.point(50,50), Qt.point(100,50));
+ tryCompare(pinchFinishedSpy, "count", 1);
+ compare(map.zoomLevel, 8) // would go to 9
+
+ // 8. pinch when max and min are same
+ clear_data()
+ map.gesture.maximumZoomLevel = 8
+ map.gesture.minimumZoomLevel = 8
+ compare(map.gesture.maximumZoomLevel, 8)
+ compare(map.gesture.minimumZoomLevel, 8)
+ pinchGenerator.pinch(Qt.point(0,50),Qt.point(50,50),Qt.point(100,50),Qt.point(50,50));
+ tryCompare(pinchFinishedSpy, "count", 1);
+ compare(map.zoomLevel, 8)
+
+ // 9. pinch when max..min is not where map zoomLevel currently is
+ clear_data()
+ map.gesture.maximumZoomLevelChange = 4
+ map.gesture.minimumZoomLevel = 4
+ map.gesture.maximumZoomLevel = 6
+ // first when above the zoom range
+ map.zoomLevel = 10
+ pinchGenerator.pinch(Qt.point(50,50), Qt.point(0,50),Qt.point(50,50), Qt.point(100,50)); // zoom out
+ tryCompare(pinchFinishedSpy, "count", 1);
+ compare(map.zoomLevel, 6)
+ map.zoomLevel = 10
+ pinchGenerator.pinch(Qt.point(0,50),Qt.point(50,50),Qt.point(100,50),Qt.point(50,50)); // zoom in
+ tryCompare(pinchFinishedSpy, "count", 2);
+ compare(map.zoomLevel, 6)
+ pinchGenerator.pinch(Qt.point(0,50),Qt.point(50,50),Qt.point(100,50),Qt.point(50,50)); // zoom in
+ tryCompare(pinchFinishedSpy, "count", 3);
+ compare(map.zoomLevel, 4)
+ // when below the zoom range
+ map.zoomLevel = 1
+ pinchGenerator.pinch(Qt.point(50,50), Qt.point(0,50),Qt.point(50,50), Qt.point(100,50)); // zoom out
+ tryCompare(pinchFinishedSpy, "count", 4);
+ compare(map.zoomLevel, 4)
+ map.zoomLevel = 1
+ pinchGenerator.pinch(Qt.point(0,50),Qt.point(50,50),Qt.point(100,50),Qt.point(50,50)); // zoom in
+ tryCompare(pinchFinishedSpy, "count", 5);
+ compare(map.zoomLevel, 4)
+ pinchGenerator.pinch(Qt.point(50,50), Qt.point(0,50),Qt.point(50,50), Qt.point(100,50)); // zoom out
+ tryCompare(pinchFinishedSpy, "count", 6);
+ compare(map.zoomLevel, 6)
+ map.gesture.minimumZoomLevel = map.minimumZoomLevel
+ map.gesture.maximumZoomLevel = map.maximumZoomLevel
+ */
+
+ // 10. pinch while pinch area is disabled
+ clear_data()
+ map.gesture.enabled = false
+ map.gesture.maximumZoomLevelChange = 2
+ pinchGenerator.pinch(Qt.point(50,50), Qt.point(0,50),
+ Qt.point(50,50), Qt.point(100,50),
+ 40, 40, 10, 10);
+ wait(200);
+ compare(pinchActiveSpy.count, 0)
+ compare(map.gesture.isPinchActive, false)
+ compare(pinchStartedSpy.count, 0)
+ compare(pinchUpdatedSpy.count, 0);
+ compare(pinchFinishedSpy.count, 0);
+ compare(map.zoomLevel, 7.5)
+ pinchGenerator.stop()
+ map.gesture.enabled = true
+
+ // 11. pinch disabling during pinching
+ clear_data()
+ pinchGenerator.pinch(Qt.point(50,50), Qt.point(0,50),
+ Qt.point(50,50), Qt.point(100,50),
+ 40, 40, 10, 10);
+ wait(300)
+ map.gesture.enabled = false
+ // check that pinch is active. then disable the pinch. pinch area should still process
+ // as long as it is active
+ compare(pinchActiveSpy.count,1)
+ compare(map.gesture.isPinchActive, true)
+ compare(pinchStartedSpy.count, 1)
+ compare(pinchFinishedSpy.count, 0)
+ var pinchupdates = pinchUpdatedSpy.count
+ verify(pinchupdates > 0)
+ tryCompare(pinchFinishedSpy, "count", 1)
+ compare(pinchActiveSpy.count,2)
+ compare(map.gesture.isPinchActive, false)
+ map.gesture.enabled = true
+ // 12. check nuthin happens if no active gestures
+ clear_data()
+ map.gesture.activeGestures = MapGestureArea.NoGesture
+ pinchGenerator.pinch(Qt.point(50,50), Qt.point(0,50),
+ Qt.point(50,50), Qt.point(100,50),
+ 40, 40, 10, 10);
+ tryCompare(pinchStartedSpy, "count", 0);
+ wait(300);
+ compare(pinchUpdatedSpy.count, 0);
+ compare(pinchStartedSpy.count, 0);
+ compare(map.zoomLevel, 8.5)
+ pinchGenerator.stop()
+ map.gesture.activeGestures = MapGestureArea.ZoomGesture
+ // 13. manually changing zoom level during active pinch zoom
+ clear_data();
+ map.gesture.maximumZoomLevelChange = 2
+ pinchGenerator.pinch(Qt.point(50,50), Qt.point(0,50),
+ Qt.point(50,50), Qt.point(100,50),
+ 40, 40, 10, 10);
+ tryCompare(pinchStartedSpy, "count", 1);
+ tryCompare(pinchActiveSpy, "count", 1)
+ compare(map.gesture.isPinchActive, true)
+ map.zoomLevel = 3 // will get overridden by pinch
+ tryCompare(pinchFinishedSpy, "count", 1);
+ verify(pinchUpdatedSpy.count >= 5); // verify 'sane' number of updates received
+ compare(map.zoomLevel, 9.5)
+ // 14. try to zoom below and above plugin's support
+ clear_data()
+ map.gesture.maximumZoomLevelChange = 4
+ map.zoomLevel = map.minimumZoomLevel + 0.5
+ pinchGenerator.pinch(Qt.point(0,50),Qt.point(50,50),
+ Qt.point(100,50),Qt.point(50,50),
+ 40, 40, 10, 10);
+ tryCompare(pinchFinishedSpy, "count", 1);
+ compare(map.zoomLevel, map.minimumZoomLevel)
+ map.zoomLevel = map.maximumZoomLevel - 0.5
+ pinchGenerator.pinch(Qt.point(50,50), Qt.point(0,50),Qt.point(50,50), Qt.point(100,50));
+ tryCompare(pinchFinishedSpy, "count", 2);
+ compare(map.zoomLevel, map.maximumZoomLevel)
+ map.zoomLevel = 10
+ // 15. check that pinch accepted works (rejection)
+ clear_data()
+ map.rejectPinch = true
+ pinchGenerator.pinch(Qt.point(0,50),Qt.point(50,50),
+ Qt.point(100,50),Qt.point(50,50),
+ 40, 40, 10, 10);
+ wait(300)
+ compare(pinchUpdatedSpy.count, 0)
+ compare(pinchFinishedSpy.count, 0)
+ compare(map.gesture.isPinchActive, false)
+ compare(map.zoomLevel, 10)
+ map.rejectPinch = false
+ pinchGenerator.stop()
+ pinchGenerator.pinch(Qt.point(0,50),Qt.point(50,50),Qt.point(100,50),Qt.point(50,50));
+ tryCompare(pinchFinishedSpy, "count", 1)
+ compare(map.zoomLevel, 8)
+ compare(map.lastPinchEvent.accepted, true)
+ // 16. moving center
+ clear_data()
+ pinchGenerator.pinch(Qt.point(0, 50), Qt.point(50,100), Qt.point(50,0), Qt.point(100, 50))
+ tryCompare(pinchStartedSpy, "count", 1)
+ compare(map.lastPinchEvent.center.x, (map.lastPinchEvent.point1.x + map.lastPinchEvent.point2.x) /2)
+ compare(map.lastPinchEvent.center.x, (map.lastPinchEvent.point1.y + map.lastPinchEvent.point2.y) /2)
+ tryCompare(pinchFinishedSpy, "count", 1)
+ compare(map.lastPinchEvent.center.x, (map.lastPinchEvent.point1.x + map.lastPinchEvent.point2.x) /2)
+ compare(map.lastPinchEvent.center.x, (map.lastPinchEvent.point1.y + map.lastPinchEvent.point2.y) /2)
+ // sanity check that we are not comparing wrong (points) with wrong (center) and calling it a success
+ verify((map.lastPinchEvent.center.x > 50) && (map.lastPinchEvent.center.x < 100))
+ verify((map.lastPinchEvent.center.y > 50) && (map.lastPinchEvent.center.y < 100))
+ // 17. angle between points
+ clear_data()
+ // todo calculate the angle from points for comparison
+ pinchGenerator.pinch(Qt.point(0,0), Qt.point(0,100), Qt.point(100,100), Qt.point(100,0))
+ tryCompare(pinchStartedSpy, "count", 1)
+ verify(map.lastPinchEvent.angle >= -45 && map.lastPinchEvent.angle < -20)
+ tryCompare(pinchFinishedSpy, "count", 1)
+ verify(map.lastPinchEvent.angle >= 20 && map.lastPinchEvent.angle <= 45)
+ }
+ }
+}