Skip to content

Commit a2b83e4

Browse files
YoannQDQnyalldawson
authored andcommittedApr 24, 2023
Add test
1 parent 8e5cb7d commit a2b83e4

File tree

1 file changed

+45
-3
lines changed

1 file changed

+45
-3
lines changed
 

‎tests/src/python/test_qgsmapcanvas.py

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import time
1313

1414
import qgis # NOQA
15-
from qgis.PyQt.QtCore import QDate, QDateTime, QDir, QTime
15+
from qgis.PyQt.QtCore import QDate, QDateTime, QDir, QTime, Qt
1616
from qgis.PyQt.QtXml import QDomDocument
1717
from qgis.core import (
1818
QgsAnnotationLayer,
@@ -36,9 +36,9 @@
3636
QgsSingleSymbolRenderer,
3737
QgsTemporalController,
3838
QgsTemporalNavigationObject,
39-
QgsVectorLayer,
39+
QgsVectorLayer
4040
)
41-
from qgis.gui import QgsMapCanvas
41+
from qgis.gui import QgsMapCanvas, QgsMapToolPan, QgsMapToolZoom, QgsMapToolEmitPoint
4242
from qgis.testing import start_app, unittest
4343

4444
app = start_app()
@@ -794,6 +794,48 @@ def on_extent_changed():
794794

795795
self.assertEqual(TestQgsMapCanvas.new_crs, QgsCoordinateReferenceSystem('EPSG:3857'))
796796

797+
def test_set_map_tool(self):
798+
799+
canvas = QgsMapCanvas()
800+
moveTool = QgsMapToolPan(canvas)
801+
zoomTool = QgsMapToolZoom(canvas, True)
802+
emitTool = QgsMapToolEmitPoint(canvas)
803+
804+
counter = {}
805+
806+
def increment(tool, section):
807+
counter[tool][section] += 1
808+
809+
# Keep track of how many times each tool is activated, deactivated, and reactivated
810+
for tool in [moveTool, zoomTool, emitTool]:
811+
counter[tool] = {"activated": 0, "deactivated": 0, "reactivated": 0}
812+
tool.activated.connect(lambda tool=tool: increment(tool, "activated"), Qt.DirectConnection)
813+
tool.deactivated.connect(lambda tool=tool: increment(tool, "deactivated"), Qt.DirectConnection)
814+
tool.reactivated.connect(lambda tool=tool: increment(tool, "reactivated"), Qt.DirectConnection)
815+
816+
canvas.setMapTool(moveTool)
817+
canvas.setMapTool(zoomTool)
818+
canvas.setMapTool(zoomTool)
819+
canvas.setMapTool(emitTool)
820+
821+
# Check that the correct number of activations and deactivations occurred
822+
self.assertEqual(counter[moveTool]["activated"], 1)
823+
self.assertEqual(counter[moveTool]["deactivated"], 1)
824+
self.assertEqual(counter[moveTool]["reactivated"], 0)
825+
826+
self.assertEqual(counter[zoomTool]["activated"], 1)
827+
self.assertEqual(counter[zoomTool]["deactivated"], 1)
828+
self.assertEqual(counter[zoomTool]["reactivated"], 1)
829+
830+
self.assertEqual(counter[emitTool]["activated"], 1)
831+
self.assertEqual(counter[emitTool]["deactivated"], 0)
832+
self.assertEqual(counter[emitTool]["reactivated"], 0)
833+
834+
canvas.setMapTool(emitTool)
835+
self.assertEqual(counter[emitTool]["activated"], 1)
836+
self.assertEqual(counter[emitTool]["deactivated"], 0)
837+
self.assertEqual(counter[emitTool]["reactivated"], 1)
838+
797839

798840
if __name__ == '__main__':
799841
unittest.main()

0 commit comments

Comments
 (0)
Please sign in to comment.