Skip to content

Commit 593bff2

Browse files
committedNov 8, 2017
Add control images to highlight check
1 parent 05868c2 commit 593bff2

File tree

3 files changed

+29
-33
lines changed

3 files changed

+29
-33
lines changed
 

‎tests/src/python/test_qgshighlight.py

Lines changed: 29 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
import qgis # NOQA
1616
import os
17+
import tempfile
18+
import shutil
1719

1820
from qgis.PyQt.QtCore import (
1921
QSize,
@@ -28,7 +30,7 @@
2830
QgsVectorLayer,
2931
QgsProject,
3032
QgsRectangle,
31-
QgsMultiRenderChecker
33+
QgsRenderChecker
3234
)
3335
from qgis.gui import QgsHighlight
3436
from qgis.testing import start_app, unittest
@@ -44,55 +46,49 @@ class TestQgsHighlight(unittest.TestCase):
4446
def setUp(self):
4547
self.iface = get_iface()
4648

47-
lines_shp = os.path.join(TEST_DATA_DIR, 'lines.shp')
48-
self.lines_layer = QgsVectorLayer(lines_shp, 'Lines', 'ogr')
49-
QgsProject.instance().addMapLayer(self.lines_layer)
50-
polys_shp = os.path.join(TEST_DATA_DIR, 'polys.shp')
51-
self.polys_layer = QgsVectorLayer(polys_shp, 'Polygons', 'ogr')
52-
QgsProject.instance().addMapLayer(self.polys_layer)
53-
5449
self.iface.mapCanvas().resize(QSize(400, 400))
5550

56-
self.iface.mapCanvas().setExtent(QgsRectangle(-113, 28, -91, 40))
57-
58-
self.mapsettings = self.iface.mapCanvas().mapSettings()
59-
self.mapsettings.setOutputSize(QSize(400, 400))
60-
self.mapsettings.setOutputDpi(96)
61-
self.mapsettings.setExtent(QgsRectangle(-113, 28, -91, 40))
62-
self.mapsettings.setBackgroundColor(QColor("white"))
63-
6451
def tearDown(self):
6552
QgsProject.instance().removeAllMapLayers()
6653

67-
def testLine(self):
68-
line = next(self.lines_layer.getFeatures()).geometry()
69-
highlight = QgsHighlight(self.iface.mapCanvas(), line, self.lines_layer)
70-
color = QColor(Qt.red)
71-
highlight.setColor(color)
72-
color.setAlpha(50)
73-
highlight.setFillColor(color)
74-
highlight.show()
75-
image = QImage(QSize(400, 400), QImage.Format_ARGB32)
76-
painter = QPainter()
77-
painter.begin(image)
78-
self.iface.mapCanvas().render(painter)
79-
painter.end()
54+
def runTestForLayer(self, layer, testname):
55+
tempdir = tempfile.mkdtemp()
8056

81-
def testPolygon(self):
82-
poly = next(self.polys_layer.getFeatures()).geometry()
83-
self.iface.mapCanvas().setExtent(self.polys_layer.extent())
84-
highlight = QgsHighlight(self.iface.mapCanvas(), poly, self.polys_layer)
57+
layer = QgsVectorLayer(layer, 'Layer', 'ogr')
58+
QgsProject.instance().addMapLayer(layer)
59+
self.iface.mapCanvas().setExtent(layer.extent())
60+
61+
geom = next(layer.getFeatures()).geometry()
62+
63+
highlight = QgsHighlight(self.iface.mapCanvas(), geom, layer)
8564
color = QColor(Qt.red)
8665
highlight.setColor(color)
8766
color.setAlpha(50)
8867
highlight.setFillColor(color)
8968
highlight.show()
69+
9070
image = QImage(QSize(400, 400), QImage.Format_ARGB32)
9171
painter = QPainter()
9272
painter.begin(image)
9373
self.iface.mapCanvas().render(painter)
9474
painter.end()
75+
control_image = os.path.join(tempdir, 'highlight_{}.png'.format(testname))
76+
image.save(control_image)
77+
checker = QgsRenderChecker()
78+
checker.setControlPathPrefix("highlight")
79+
checker.setControlName("expected_highlight_{}".format(testname))
80+
checker.setRenderedImage(control_image)
81+
checker.setSizeTolerance(10, 10)
82+
self.assertTrue(checker.compareImages("highlight_{}".format(testname), 10))
83+
shutil.rmtree(tempdir)
84+
85+
def testLine(self):
86+
lines_shp = os.path.join(TEST_DATA_DIR, 'lines.shp')
87+
self.runTestForLayer(lines_shp, 'lines')
9588

89+
def testPolygon(self):
90+
polys_shp = os.path.join(TEST_DATA_DIR, 'polys.shp')
91+
self.runTestForLayer(polys_shp, 'polygons')
9692

9793

9894
if __name__ == '__main__':
Loading

0 commit comments

Comments
 (0)
Please sign in to comment.