summaryrefslogtreecommitdiff
path: root/tests/auto/declarative_ui/tst_map_pinch.qml.QTBUG-47970
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@theqtcompany.com>2015-08-27 13:28:00 +0200
committerAaron McCarthy <mccarthy.aaron@gmail.com>2015-08-28 00:38:46 +0000
commitaab858642228ef1796b1cee0f56f18a4e1ad9fd6 (patch)
treed1c84256b85a73d1d44011f82eae5382a071a221 /tests/auto/declarative_ui/tst_map_pinch.qml.QTBUG-47970
parent865d8e7f40da40cb31df127223d0f32d2926a9a8 (diff)
downloadqtlocation-aab858642228ef1796b1cee0f56f18a4e1ad9fd6.tar.gz
Disable MapPinch test due to flakinesss
Task-number: QTBUG-47970 Change-Id: I50c287f895a3c815a5055bb6fee0b663bd7f227d Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com> Reviewed-by: Aaron McCarthy <mccarthy.aaron@gmail.com>
Diffstat (limited to 'tests/auto/declarative_ui/tst_map_pinch.qml.QTBUG-47970')
-rw-r--r--tests/auto/declarative_ui/tst_map_pinch.qml.QTBUG-47970581
1 files changed, 581 insertions, 0 deletions
diff --git a/tests/auto/declarative_ui/tst_map_pinch.qml.QTBUG-47970 b/tests/auto/declarative_ui/tst_map_pinch.qml.QTBUG-47970
new file mode 100644
index 00000000..f4e57faa
--- /dev/null
+++ b/tests/auto/declarative_ui/tst_map_pinch.qml.QTBUG-47970
@@ -0,0 +1,581 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** 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 The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/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.
+**
+** As a special exception, The Qt Company gives you certain additional
+** rights. These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.5
+import QtTest 1.0
+import QtLocation 5.5
+import QtPositioning 5.5
+import QtLocation.Test 5.5
+
+Item {
+ // General-purpose elements for the test:
+ id: page
+ width: 100
+ height: 100
+ Plugin { id: testPlugin; name: "qmlgeo.test.plugin"; allowExperimental: true }
+
+ property variant coordinate: QtPositioning.coordinate(10, 11)
+
+ // From QtLocationTest plugin
+ PinchGenerator {
+ id: pinchGenerator
+ anchors.fill: parent
+ target: page
+ enabled: false
+ }
+
+ MouseArea {
+ id: mouseAreaBottom
+ anchors.fill: parent
+ visible: false
+ }
+
+ Map {
+ id: map
+ plugin: testPlugin
+ center: coordinate;
+ zoomLevel: 9;
+ anchors.fill: page
+ x:0; y:0
+ property variant lastPinchEvent: null
+ property point startPinchPoint1: Qt.point(0,0)
+ property point startPinchPoint2: Qt.point(0,0)
+ property point endPinchPoint1: Qt.point(0,0)
+ property point endPinchPoint2: Qt.point(0,0)
+ property bool rejectPinch: false
+ gesture.onPinchStarted: {
+ map.lastPinchEvent = pinch;
+ map.startPinchPoint1= pinch.point1;
+ map.startPinchPoint2= pinch.point2;
+ if (rejectPinch)
+ pinch.accepted = false;
+ }
+ gesture.onPinchUpdated: map.lastPinchEvent = pinch;
+
+ gesture.onPinchFinished: {
+ map.lastPinchEvent = pinch;
+ map.endPinchPoint1 = pinch.point1;
+ map.endPinchPoint2 = pinch.point2;
+ }
+ MouseArea {
+ id: mouseAreaTop
+ anchors.fill: parent
+ visible: 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: mouseAreaTopSpy; target: mouseAreaTop; signalName: 'onPressed'}
+ SignalSpy {id: mouseAreaBottomSpy; target: mouseAreaBottom; signalName: 'onPressed'}
+
+ TestCase {
+ when: windowShown
+ name: "MapPinch"
+
+ function init()
+ {
+ map.gesture.activeGestures = MapGestureArea.ZoomGesture
+ map.gesture.enabled = true
+ map.rejectPinch = false
+ map.center = coordinate
+ map.minimumZoomLevel = 0
+ map.maximumZoomLevel = 20
+ mouseRelease(mouseAreaTop,0,0) //Fixme: mouse area state gets broken across the tests
+ mouseAreaBottom.visible = false
+ mouseAreaTop.visible = false
+ pinchGenerator.clear()
+ centerSpy.clear()
+ pinchStartedSpy.clear()
+ pinchUpdatedSpy.clear()
+ pinchFinishedSpy.clear()
+ pinchMaximumZoomLevelChangeSpy.clear()
+ gestureEnabledSpy.clear()
+ pinchActiveSpy.clear()
+ pinchActiveGesturesSpy.clear()
+ mapZoomLevelSpy.clear()
+ mouseAreaTopSpy.clear()
+ mouseAreaBottomSpy.clear()
+ }
+
+ //see QDeclarativeGeoMapGestureArea::updatePinch()
+ function calculateZoom(startPinchPoint1,startPinchPoint2,endPinchPoint1,endPinchPoint2,
+ width,height, maximumZoomLevelChange, startZoomLevel)
+ {
+ var startDistance = Math.sqrt(Math.pow(startPinchPoint2.x - startPinchPoint1.x,2) +
+ + Math.pow(startPinchPoint2.y - startPinchPoint1.y,2))
+ var endDistance = Math.sqrt(Math.pow(endPinchPoint2.x - endPinchPoint1.x,2) +
+ + Math.pow(endPinchPoint2.y - endPinchPoint1.y,2))
+ return 2 * (endDistance - startDistance) * maximumZoomLevelChange /
+ (width + height) + startZoomLevel;
+ }
+
+ function initTestCase()
+ {
+ //test default properties
+ 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, 4)
+ map.gesture.maximumZoomLevelChange = 8
+ compare(pinchMaximumZoomLevelChangeSpy.count, 1)
+ compare (map.gesture.maximumZoomLevelChange, 8)
+ map.gesture.maximumZoomLevelChange = 8
+ compare(pinchMaximumZoomLevelChangeSpy.count, 1)
+ compare (map.gesture.maximumZoomLevelChange, 8)
+ 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, 8)
+ map.gesture.maximumZoomLevelChange = 2
+ compare(pinchMaximumZoomLevelChangeSpy.count, 2)
+ compare (map.gesture.maximumZoomLevelChange, 2)
+ }
+
+
+ function zoom_in()
+ {
+ var startZoomLevel = 9
+ map.zoomLevel = startZoomLevel
+ mapZoomLevelSpy.clear()
+ 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 > pinchGenerator.startDragDistance())
+ && (map.lastPinchEvent.point1.x < 25))
+ compare(map.lastPinchEvent.point1.y, 50)
+ verify((map.lastPinchEvent.point2.x > 75)
+ && (map.lastPinchEvent.point2.x < 100 - pinchGenerator.startDragDistance()))
+ compare(map.lastPinchEvent.point2.y, 50)
+ compare(map.lastPinchEvent.accepted, true)
+ compare(map.lastPinchEvent.pointCount, 2)
+ tryCompare(pinchActiveSpy, "count", 2) // check that pinch is active
+ compare(map.gesture.isPinchActive, true)
+ wait(200) // five points, each 40ms
+ // 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);
+ compare(map.gesture.isPinchActive, false)
+ // 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,3)
+ compare(map.gesture.isPinchActive, false)
+ compare(mapZoomLevelSpy.count, pinchUpdatedSpy.count)
+ var endZoomLevel = calculateZoom( map.startPinchPoint1, map.startPinchPoint2,
+ map.endPinchPoint1, map.endPinchPoint2,
+ map.width,map.height,
+ map.gesture.maximumZoomLevelChange,startZoomLevel)
+ compare(map.zoomLevel, endZoomLevel)
+ }
+
+ function test_zoom_in()
+ {
+ zoom_in()
+ }
+
+ function test_zoom_in_with_top_filtering()
+ {
+ mouseAreaTop.visible = true
+ zoom_in()
+ tryCompare(mouseAreaTopSpy, "count", 1)
+ }
+
+ function test_zoom_in_with_below_filtering()
+ {
+ mouseAreaBottom.visible=true
+ zoom_in()
+ tryCompare(mouseAreaBottomSpy, "count",0)
+ }
+
+ function zoom_out()
+ {
+ var startZoomLevel = 7.8
+ map.zoomLevel = startZoomLevel
+ map.gesture.maximumZoomLevelChange = 2
+ compare (map.gesture.maximumZoomLevelChange, 2)
+ mapZoomLevelSpy.clear()
+ pinchGenerator.pinch(Qt.point(45,50), Qt.point(0,50),
+ Qt.point(55,50), Qt.point(100,50),
+ 40, 40, 10, 10);
+ tryCompare(pinchStartedSpy, "count", 1);
+ tryCompare(pinchFinishedSpy, "count", 1);
+ compare(map.gesture.isPinchActive, false)
+ verify(pinchUpdatedSpy.count >= 5); // verify 'sane' number of updates received
+ compare(mapZoomLevelSpy.count, pinchUpdatedSpy.count)
+ var endZoomLevel = calculateZoom( map.startPinchPoint1, map.startPinchPoint2,
+ map.endPinchPoint1, map.endPinchPoint2,
+ map.width,map.height,
+ map.gesture.maximumZoomLevelChange,startZoomLevel)
+
+ compare(map.zoomLevel, endZoomLevel)
+ }
+
+ function test_zoom_out()
+ {
+ zoom_out()
+ }
+
+ function test_zoom_out_with_top_filtering()
+ {
+ mouseAreaTop.visible=true
+ zoom_out()
+ tryCompare(mouseAreaTopSpy, "count", 1)
+ }
+
+ function test_zoom_out_with_below_filtering()
+ {
+ mouseAreaBottom.visible=true
+ zoom_out()
+ tryCompare(mouseAreaBottomSpy, "count",0)
+ }
+
+ function test_zoom_in_and_back_out()
+ {
+ // direction change during same pinch
+ var startZoomLevel = 7.8
+ map.gesture.maximumZoomLevelChange = 2
+ map.zoomLevel = startZoomLevel
+ 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
+ var endZoomLevel = calculateZoom( map.startPinchPoint1, map.startPinchPoint2,
+ map.endPinchPoint1, map.endPinchPoint2,
+ map.width,map.height,
+ map.gesture.maximumZoomLevelChange,startZoomLevel)
+ compare(map.zoomLevel, endZoomLevel) // should remain the same
+ }
+
+ function test_zoom_in_with_different_change_level()
+ {
+ var startZoomLevel = 8
+ map.zoomLevel = startZoomLevel
+ 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);
+ var endZoomLevel = calculateZoom( map.startPinchPoint1, map.startPinchPoint2,
+ map.endPinchPoint1, map.endPinchPoint2,
+ map.width,map.height,
+ map.gesture.maximumZoomLevelChange,startZoomLevel)
+ compare(map.zoomLevel, endZoomLevel)
+ }
+
+ function test_zoom_out_with_different_change_level()
+ {
+ var startZoomLevel = 8
+ map.gesture.maximumZoomLevelChange = 1
+ map.zoomLevel = startZoomLevel
+ 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);
+ var endZoomLevel = calculateZoom( map.startPinchPoint1, map.startPinchPoint2,
+ map.endPinchPoint1, map.endPinchPoint2,
+ map.width,map.height,
+ map.gesture.maximumZoomLevelChange,startZoomLevel)
+ compare(map.zoomLevel, endZoomLevel)
+ }
+
+ function test_zoom_in_below_minimum_zoom_level()
+ {
+ map.zoomLevel = 8
+ map.gesture.maximumZoomLevelChange = 4
+ map.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)
+ }
+
+ function test_zoom_out_above_maximum_zoom_level()
+ {
+ map.gesture.maximumZoomLevelChange = 4
+ map.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)
+ }
+
+ function test_pinch_when_max_and_min_are_same()
+ {
+ map.maximumZoomLevel = 8
+ map.minimumZoomLevel = 8
+ compare(map.maximumZoomLevel, 8)
+ compare(map.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)
+ map.minimumZoomLevel = 1
+ map.maximumZoomLevel = 20
+ }
+
+ function test_pinch_when_max_min_is_not_where_map_zoomLevel_currently_is()
+ {
+ map.gesture.maximumZoomLevelChange = 4
+ map.minimumZoomLevel = 4
+ map.maximumZoomLevel = 6
+ // first when above the zoom range
+ map.zoomLevel = 5
+ 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 = 5
+ 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, 4)
+ 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)
+ map.minimumZoomLevel = 1
+ map.maximumZoomLevel = 20
+ }
+
+ function test_pinch_while_pinch_area_is_disabled()
+ {
+ map.zoomLevel = 7.5
+ 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()
+ }
+
+ function test_pinch_disabling_during_pinching()
+ {
+ var startZoomLevel = 7.5
+ map.zoomLevel = startZoomLevel
+ 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);
+ // check that pinch is active. then disable the pinch. pinch area should still process
+ // as long as it is active
+ compare(pinchActiveSpy.count,2)
+ compare(map.gesture.isPinchActive, true)
+ map.gesture.enabled = false
+ tryCompare(pinchFinishedSpy, "count", 1)
+ var pinchupdates = pinchUpdatedSpy.count
+ verify(pinchupdates > 0)
+ compare(pinchActiveSpy.count,3)
+ compare(map.gesture.isPinchActive, false)
+ var endZoomLevel = calculateZoom( map.startPinchPoint1, map.startPinchPoint2,
+ map.endPinchPoint1, map.endPinchPoint2,
+ map.width,map.height,
+ map.gesture.maximumZoomLevelChange,startZoomLevel)
+ compare(map.zoomLevel, endZoomLevel)
+ pinchGenerator.pinch(Qt.point(50,50), Qt.point(0,50),
+ Qt.point(50,50), Qt.point(100,50),
+ 40, 40, 10, 10);
+ compare(map.zoomLevel, endZoomLevel)
+ }
+
+ function test_check_no_active_gestures()
+ {
+ map.zoomLevel = 8.5
+ 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()
+ }
+
+ function test_changing_zoom_level_during_active_pinch_zoom()
+ {
+ var startZoomLevel = 8.5
+ map.zoomLevel = startZoomLevel
+ 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", 2)
+ 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
+ var endZoomLevel = calculateZoom( map.startPinchPoint1, map.startPinchPoint2,
+ map.endPinchPoint1, map.endPinchPoint2,
+ map.width,map.height,
+ map.gesture.maximumZoomLevelChange,startZoomLevel)
+ compare(map.zoomLevel, endZoomLevel)
+ }
+
+ function test_zoom_below_and_above_plugin_support()
+ {
+ 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)
+ }
+
+ function test_check_pinch_accepted()
+ {
+ map.zoomLevel = 10
+ 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)
+ var startZoomLevel = 10
+ map.rejectPinch = false
+ wait(500)
+ 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)
+ var endZoomLevel = calculateZoom( map.startPinchPoint1, map.startPinchPoint2,
+ map.endPinchPoint1, map.endPinchPoint2,
+ map.width,map.height,
+ map.gesture.maximumZoomLevelChange,startZoomLevel)
+ compare(map.zoomLevel, endZoomLevel)
+ compare(map.lastPinchEvent.accepted, true)
+ }
+
+ function test_moving_center()
+ {
+ 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))
+ }
+
+ function test_angle_between_points()
+ {
+ // 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)
+ }
+ }
+}