Skip to content

Commit aa4f288

Browse files
committed
Add geometry generator tests
1 parent c423d64 commit aa4f288

File tree

4 files changed

+102
-0
lines changed

4 files changed

+102
-0
lines changed

tests/src/python/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ ADD_PYTHON_TEST(PyQgsFeatureIterator test_qgsfeatureiterator.py)
3636
ADD_PYTHON_TEST(PyQgsField test_qgsfield.py)
3737
ADD_PYTHON_TEST(PyQgsFontUtils test_qgsfontutils.py)
3838
ADD_PYTHON_TEST(PyQgsGeometryAvoidIntersections test_qgsgeometry_avoid_intersections.py)
39+
ADD_PYTHON_TEST(PyQgsGeometryGeneratorSymbolLayerV2 test_qgsgeometrygeneratorsymbollayerv2.py)
3940
ADD_PYTHON_TEST(PyQgsGeometryTest test_qgsgeometry.py)
4041
ADD_PYTHON_TEST(PyQgsGraduatedSymbolRendererV2 test_qgsgraduatedsymbolrendererv2.py)
4142
ADD_PYTHON_TEST(PyQgsMapUnitScale test_qgsmapunitscale.py)
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
# -*- coding: utf-8 -*-
2+
3+
"""
4+
***************************************************************************
5+
test_qgsgeometrygeneratorsymbollayerv2.py
6+
---------------------
7+
Date : December 2015
8+
Copyright : (C) 2015 by Matthias Kuhn
9+
Email : matthias at opengis dot ch
10+
***************************************************************************
11+
* *
12+
* This program is free software; you can redistribute it and/or modify *
13+
* it under the terms of the GNU General Public License as published by *
14+
* the Free Software Foundation; either version 2 of the License, or *
15+
* (at your option) any later version. *
16+
* *
17+
***************************************************************************
18+
"""
19+
20+
__author__ = 'Matthias Kuhn'
21+
__date__ = 'December 2015'
22+
__copyright__ = '(C) 2015, Matthias Kuhn'
23+
# This will get replaced with a git SHA1 when you do a git archive
24+
__revision__ = '$Format:%H$'
25+
26+
import qgis
27+
import os
28+
29+
from PyQt.QtCore import QSize
30+
31+
from qgis.core import (QgsVectorLayer,
32+
QgsSingleSymbolRendererV2,
33+
QgsFillSymbolV2,
34+
QgsMarkerSymbolV2,
35+
QgsMapLayerRegistry,
36+
QgsRectangle,
37+
QgsGeometryGeneratorSymbolLayerV2,
38+
QgsSymbolV2,
39+
QgsMultiRenderChecker
40+
)
41+
from utilities import (unitTestDataPath,
42+
getQgisTestApp,
43+
TestCase,
44+
unittest
45+
)
46+
47+
# Convenience instances in case you may need them
48+
# not used in this test
49+
QGISAPP, CANVAS, IFACE, PARENT = getQgisTestApp()
50+
TEST_DATA_DIR = unitTestDataPath()
51+
52+
53+
class TestQgsGeometryGeneratorSymbolLayerV2(TestCase):
54+
55+
def setUp(self):
56+
myShpFile = os.path.join(TEST_DATA_DIR, 'polys_overlapping.shp')
57+
layer = QgsVectorLayer(myShpFile, 'Polygons', 'ogr')
58+
QgsMapLayerRegistry.instance().addMapLayer(layer)
59+
60+
# Create style
61+
sym1 = QgsFillSymbolV2.createSimple({'color': '#fdbf6f'})
62+
63+
self.renderer = QgsSingleSymbolRendererV2(sym1)
64+
layer.setRendererV2(self.renderer)
65+
self.mapsettings = CANVAS.mapSettings()
66+
self.mapsettings.setOutputSize(QSize(400, 400))
67+
self.mapsettings.setOutputDpi(96)
68+
self.mapsettings.setExtent(QgsRectangle(-133, 22, -70, 52))
69+
70+
rendered_layers = [layer.id()]
71+
self.mapsettings.setLayers(rendered_layers)
72+
73+
def tearDown(self):
74+
QgsMapLayerRegistry.instance().removeAllMapLayers()
75+
76+
def test_marker(self):
77+
sym = self.renderer.symbol()
78+
sym_layer = QgsGeometryGeneratorSymbolLayerV2.create({'geometryModifier': 'centroid($geometry)'})
79+
sym_layer.setSymbolType(QgsSymbolV2.Marker)
80+
sym.changeSymbolLayer(0, sym_layer)
81+
renderchecker = QgsMultiRenderChecker()
82+
renderchecker.setMapSettings(self.mapsettings)
83+
renderchecker.setControlName('expected_geometrygenerator_marker')
84+
self.assertTrue(renderchecker.runTest('geometrygenerator_marker'))
85+
86+
def test_mixed(self):
87+
sym = self.renderer.symbol()
88+
buffer_layer = QgsGeometryGeneratorSymbolLayerV2.create({'geometryModifier': 'buffer($geometry, "value"/15)'})
89+
buffer_layer.setSymbolType(QgsSymbolV2.Fill)
90+
buffer_layer.subSymbol()
91+
sym.appendSymbolLayer(buffer_layer)
92+
marker_layer = QgsGeometryGeneratorSymbolLayerV2.create({'geometryModifier': 'centroid($geometry)'})
93+
marker_layer.setSymbolType(QgsSymbolV2.Marker)
94+
sym.appendSymbolLayer(marker_layer)
95+
renderchecker = QgsMultiRenderChecker()
96+
renderchecker.setMapSettings(self.mapsettings)
97+
renderchecker.setControlName('expected_geometrygenerator_mixed')
98+
self.assertTrue(renderchecker.runTest('geometrygenerator_mixed'))
99+
100+
if __name__ == '__main__':
101+
unittest.main()

0 commit comments

Comments
 (0)