Skip to content

Commit 0f7d8c0

Browse files
committedJan 2, 2019
Split layout map overview tests into their own file, add masks
1 parent 9d800d4 commit 0f7d8c0

File tree

6 files changed

+165
-83
lines changed

6 files changed

+165
-83
lines changed
 

‎tests/src/python/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ ADD_PYTHON_TEST(PyQgsLayoutLabel test_qgslayoutlabel.py)
100100
ADD_PYTHON_TEST(PyQgsLayoutLegend test_qgslayoutlegend.py)
101101
ADD_PYTHON_TEST(PyQgsLayoutMap test_qgslayoutmap.py)
102102
ADD_PYTHON_TEST(PyQgsLayoutMapGrid test_qgslayoutmapgrid.py)
103+
ADD_PYTHON_TEST(PyQgsLayoutMapOverview test_qgslayoutmapoverview.py)
103104
ADD_PYTHON_TEST(PyQgsLayoutPage test_qgslayoutpage.py)
104105
ADD_PYTHON_TEST(PyQgsLayoutPicture test_qgslayoutpicture.py)
105106
ADD_PYTHON_TEST(PyQgsLayoutPolygon test_qgslayoutpolygon.py)

‎tests/src/python/test_qgslayoutmap.py

Lines changed: 1 addition & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,7 @@
4141
QgsUnitTypes,
4242
QgsLayoutObject,
4343
QgsProperty,
44-
QgsReadWriteContext,
45-
QgsPrintLayout)
44+
QgsReadWriteContext)
4645

4746
from qgis.testing import start_app, unittest
4847
from utilities import unitTestDataPath
@@ -97,87 +96,6 @@ def __init__(self, methodName):
9796
self.map.setLayers([self.raster_layer])
9897
self.layout.addLayoutItem(self.map)
9998

100-
def testOverviewMap(self):
101-
overviewMap = QgsLayoutItemMap(self.layout)
102-
overviewMap.attemptSetSceneRect(QRectF(20, 130, 70, 70))
103-
overviewMap.setFrameEnabled(True)
104-
overviewMap.setLayers([self.raster_layer])
105-
self.layout.addLayoutItem(overviewMap)
106-
# zoom in
107-
myRectangle = QgsRectangle(96, -152, 160, -120)
108-
self.map.setExtent(myRectangle)
109-
myRectangle2 = QgsRectangle(0, -256, 256, 0)
110-
overviewMap.setExtent(myRectangle2)
111-
overviewMap.overview().setLinkedMap(self.map)
112-
checker = QgsLayoutChecker('composermap_overview', self.layout)
113-
checker.setColorTolerance(6)
114-
checker.setControlPathPrefix("composer_mapoverview")
115-
myTestResult, myMessage = checker.testLayout()
116-
self.report += checker.report()
117-
self.layout.removeLayoutItem(overviewMap)
118-
assert myTestResult, myMessage
119-
120-
def testOverviewMapBlend(self):
121-
overviewMap = QgsLayoutItemMap(self.layout)
122-
overviewMap.attemptSetSceneRect(QRectF(20, 130, 70, 70))
123-
overviewMap.setFrameEnabled(True)
124-
overviewMap.setLayers([self.raster_layer])
125-
self.layout.addLayoutItem(overviewMap)
126-
# zoom in
127-
myRectangle = QgsRectangle(96, -152, 160, -120)
128-
self.map.setExtent(myRectangle)
129-
myRectangle2 = QgsRectangle(0, -256, 256, 0)
130-
overviewMap.setExtent(myRectangle2)
131-
overviewMap.overview().setLinkedMap(self.map)
132-
overviewMap.overview().setBlendMode(QPainter.CompositionMode_Multiply)
133-
checker = QgsLayoutChecker('composermap_overview_blending', self.layout)
134-
checker.setControlPathPrefix("composer_mapoverview")
135-
myTestResult, myMessage = checker.testLayout()
136-
self.report += checker.report()
137-
self.layout.removeLayoutItem(overviewMap)
138-
assert myTestResult, myMessage
139-
140-
def testOverviewMapInvert(self):
141-
overviewMap = QgsLayoutItemMap(self.layout)
142-
overviewMap.attemptSetSceneRect(QRectF(20, 130, 70, 70))
143-
overviewMap.setFrameEnabled(True)
144-
overviewMap.setLayers([self.raster_layer])
145-
self.layout.addLayoutItem(overviewMap)
146-
# zoom in
147-
myRectangle = QgsRectangle(96, -152, 160, -120)
148-
self.map.setExtent(myRectangle)
149-
myRectangle2 = QgsRectangle(0, -256, 256, 0)
150-
overviewMap.setExtent(myRectangle2)
151-
overviewMap.overview().setLinkedMap(self.map)
152-
overviewMap.overview().setInverted(True)
153-
checker = QgsLayoutChecker('composermap_overview_invert', self.layout)
154-
checker.setControlPathPrefix("composer_mapoverview")
155-
myTestResult, myMessage = checker.testLayout()
156-
self.report += checker.report()
157-
self.layout.removeLayoutItem(overviewMap)
158-
assert myTestResult, myMessage
159-
160-
def testOverviewMapCenter(self):
161-
overviewMap = QgsLayoutItemMap(self.layout)
162-
overviewMap.attemptSetSceneRect(QRectF(20, 130, 70, 70))
163-
overviewMap.setFrameEnabled(True)
164-
overviewMap.setLayers([self.raster_layer])
165-
self.layout.addLayoutItem(overviewMap)
166-
# zoom in
167-
myRectangle = QgsRectangle(192, -288, 320, -224)
168-
self.map.setExtent(myRectangle)
169-
myRectangle2 = QgsRectangle(0, -256, 256, 0)
170-
overviewMap.setExtent(myRectangle2)
171-
overviewMap.overview().setLinkedMap(self.map)
172-
overviewMap.overview().setInverted(False)
173-
overviewMap.overview().setCentered(True)
174-
checker = QgsLayoutChecker('composermap_overview_center', self.layout)
175-
checker.setControlPathPrefix("composer_mapoverview")
176-
myTestResult, myMessage = checker.testLayout()
177-
self.report += checker.report()
178-
self.layout.removeLayoutItem(overviewMap)
179-
assert myTestResult, myMessage
180-
18199
def testMapCrs(self):
182100
# create layout with layout map
183101
map_settings = QgsMapSettings()
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
# -*- coding: utf-8 -*-
2+
"""QGIS Unit tests for QgsLayoutItemMap.
3+
4+
.. note:: This program is free software; you can redistribute it and/or modify
5+
it under the terms of the GNU General Public License as published by
6+
the Free Software Foundation; either version 2 of the License, or
7+
(at your option) any later version.
8+
"""
9+
__author__ = '(C) 2017 Nyall Dawson'
10+
__date__ = '20/10/2017'
11+
__copyright__ = 'Copyright 2017, The QGIS Project'
12+
# This will get replaced with a git SHA1 when you do a git archive
13+
__revision__ = '$Format:%H$'
14+
15+
import qgis # NOQA
16+
17+
import os
18+
19+
from qgis.PyQt.QtCore import QFileInfo, QRectF, QDir
20+
from qgis.PyQt.QtGui import QPainter
21+
22+
from qgis.core import (QgsLayoutItemMap,
23+
QgsRectangle,
24+
QgsRasterLayer,
25+
QgsVectorLayer,
26+
QgsLayout,
27+
QgsProject,
28+
QgsMultiBandColorRenderer)
29+
30+
from qgis.testing import start_app, unittest
31+
from utilities import unitTestDataPath
32+
from qgslayoutchecker import QgsLayoutChecker
33+
from test_qgslayoutitem import LayoutItemTestCase
34+
35+
start_app()
36+
TEST_DATA_DIR = unitTestDataPath()
37+
38+
39+
class TestQgsLayoutMap(unittest.TestCase, LayoutItemTestCase):
40+
41+
@classmethod
42+
def setUpClass(cls):
43+
cls.item_class = QgsLayoutItemMap
44+
45+
def setUp(self):
46+
self.report = "<h1>Python QgsLayoutItemMap Tests</h1>\n"
47+
48+
def tearDown(self):
49+
report_file_path = "%s/qgistest.html" % QDir.tempPath()
50+
with open(report_file_path, 'a') as report_file:
51+
report_file.write(self.report)
52+
53+
def __init__(self, methodName):
54+
"""Run once on class initialization."""
55+
unittest.TestCase.__init__(self, methodName)
56+
myPath = os.path.join(TEST_DATA_DIR, 'rgb256x256.png')
57+
rasterFileInfo = QFileInfo(myPath)
58+
self.raster_layer = QgsRasterLayer(rasterFileInfo.filePath(),
59+
rasterFileInfo.completeBaseName())
60+
rasterRenderer = QgsMultiBandColorRenderer(
61+
self.raster_layer.dataProvider(), 1, 2, 3)
62+
self.raster_layer.setRenderer(rasterRenderer)
63+
64+
myPath = os.path.join(TEST_DATA_DIR, 'points.shp')
65+
vector_file_info = QFileInfo(myPath)
66+
self.vector_layer = QgsVectorLayer(vector_file_info.filePath(),
67+
vector_file_info.completeBaseName(), 'ogr')
68+
assert self.vector_layer.isValid()
69+
QgsProject.instance().addMapLayers([self.raster_layer, self.vector_layer])
70+
71+
# create layout with layout map
72+
self.layout = QgsLayout(QgsProject.instance())
73+
self.layout.initializeDefaults()
74+
self.map = QgsLayoutItemMap(self.layout)
75+
self.map.attemptSetSceneRect(QRectF(20, 20, 200, 100))
76+
self.map.setFrameEnabled(True)
77+
self.map.setLayers([self.raster_layer])
78+
self.layout.addLayoutItem(self.map)
79+
80+
def testOverviewMap(self):
81+
overviewMap = QgsLayoutItemMap(self.layout)
82+
overviewMap.attemptSetSceneRect(QRectF(20, 130, 70, 70))
83+
overviewMap.setFrameEnabled(True)
84+
overviewMap.setLayers([self.raster_layer])
85+
self.layout.addLayoutItem(overviewMap)
86+
# zoom in
87+
myRectangle = QgsRectangle(96, -152, 160, -120)
88+
self.map.setExtent(myRectangle)
89+
myRectangle2 = QgsRectangle(0, -256, 256, 0)
90+
overviewMap.setExtent(myRectangle2)
91+
overviewMap.overview().setLinkedMap(self.map)
92+
checker = QgsLayoutChecker('composermap_overview', self.layout)
93+
checker.setColorTolerance(6)
94+
checker.setControlPathPrefix("composer_mapoverview")
95+
myTestResult, myMessage = checker.testLayout()
96+
self.report += checker.report()
97+
self.layout.removeLayoutItem(overviewMap)
98+
assert myTestResult, myMessage
99+
100+
def testOverviewMapBlend(self):
101+
overviewMap = QgsLayoutItemMap(self.layout)
102+
overviewMap.attemptSetSceneRect(QRectF(20, 130, 70, 70))
103+
overviewMap.setFrameEnabled(True)
104+
overviewMap.setLayers([self.raster_layer])
105+
self.layout.addLayoutItem(overviewMap)
106+
# zoom in
107+
myRectangle = QgsRectangle(96, -152, 160, -120)
108+
self.map.setExtent(myRectangle)
109+
myRectangle2 = QgsRectangle(0, -256, 256, 0)
110+
overviewMap.setExtent(myRectangle2)
111+
overviewMap.overview().setLinkedMap(self.map)
112+
overviewMap.overview().setBlendMode(QPainter.CompositionMode_Multiply)
113+
checker = QgsLayoutChecker('composermap_overview_blending', self.layout)
114+
checker.setControlPathPrefix("composer_mapoverview")
115+
myTestResult, myMessage = checker.testLayout()
116+
self.report += checker.report()
117+
self.layout.removeLayoutItem(overviewMap)
118+
assert myTestResult, myMessage
119+
120+
def testOverviewMapInvert(self):
121+
overviewMap = QgsLayoutItemMap(self.layout)
122+
overviewMap.attemptSetSceneRect(QRectF(20, 130, 70, 70))
123+
overviewMap.setFrameEnabled(True)
124+
overviewMap.setLayers([self.raster_layer])
125+
self.layout.addLayoutItem(overviewMap)
126+
# zoom in
127+
myRectangle = QgsRectangle(96, -152, 160, -120)
128+
self.map.setExtent(myRectangle)
129+
myRectangle2 = QgsRectangle(0, -256, 256, 0)
130+
overviewMap.setExtent(myRectangle2)
131+
overviewMap.overview().setLinkedMap(self.map)
132+
overviewMap.overview().setInverted(True)
133+
checker = QgsLayoutChecker('composermap_overview_invert', self.layout)
134+
checker.setControlPathPrefix("composer_mapoverview")
135+
myTestResult, myMessage = checker.testLayout()
136+
self.report += checker.report()
137+
self.layout.removeLayoutItem(overviewMap)
138+
assert myTestResult, myMessage
139+
140+
def testOverviewMapCenter(self):
141+
overviewMap = QgsLayoutItemMap(self.layout)
142+
overviewMap.attemptSetSceneRect(QRectF(20, 130, 70, 70))
143+
overviewMap.setFrameEnabled(True)
144+
overviewMap.setLayers([self.raster_layer])
145+
self.layout.addLayoutItem(overviewMap)
146+
# zoom in
147+
myRectangle = QgsRectangle(192, -288, 320, -224)
148+
self.map.setExtent(myRectangle)
149+
myRectangle2 = QgsRectangle(0, -256, 256, 0)
150+
overviewMap.setExtent(myRectangle2)
151+
overviewMap.overview().setLinkedMap(self.map)
152+
overviewMap.overview().setInverted(False)
153+
overviewMap.overview().setCentered(True)
154+
checker = QgsLayoutChecker('composermap_overview_center', self.layout)
155+
checker.setControlPathPrefix("composer_mapoverview")
156+
myTestResult, myMessage = checker.testLayout()
157+
self.report += checker.report()
158+
self.layout.removeLayoutItem(overviewMap)
159+
assert myTestResult, myMessage
160+
161+
162+
if __name__ == '__main__':
163+
unittest.main()

Error rendering embedded code

Invalid image source.

0 commit comments

Comments
 (0)
Please sign in to comment.