Skip to content

Commit e8584c0

Browse files
henriknyalldawson
authored andcommittedMar 26, 2019
Added tests for pointdisplacementlabels
1 parent 99bb45e commit e8584c0

File tree

2 files changed

+82
-0
lines changed

2 files changed

+82
-0
lines changed
 

‎src/core/symbology/qgspointdisplacementrenderer.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,15 @@ class CORE_EXPORT QgsPointDisplacementRenderer: public QgsPointDistanceRenderer
101101

102102
/**
103103
* Sets a factor for increasing the label distances from the symbol.
104+
* /since QGIS 3.8
104105
* \param factor addition factor
105106
* \see labelDistanceFactor()
106107
*/
107108
void setLabelDistanceFactor( double factor ) { mLabelDistanceFactor = factor; }
108109

109110
/**
110111
* Returns the factor for label distance from the symbol.
112+
* /since QGIS 3.8
111113
* \see setLabelDistanceFactor()
112114
*/
113115
double labelDistanceFactor() const { return mLabelDistanceFactor; }

‎tests/src/python/test_qgspointdisplacementrenderer.py

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
QgsUnitTypes,
4141
QgsMapUnitScale,
4242
QgsMarkerSymbol,
43+
QgsCategorizedSymbolRenderer,
44+
QgsRendererCategory,
4345
QgsSingleSymbolRenderer,
4446
QgsPointClusterRenderer,
4547
QgsMapSettings,
@@ -123,6 +125,16 @@ def _checkProperties(self, r):
123125
self.assertEqual(r.embeddedRenderer().symbol().color().name(), '#fdbf6f')
124126
self.assertEqual(r.labelDistanceFactor(), 0.25)
125127

128+
def _set_categorized_renderer(self):
129+
renderer = QgsCategorizedSymbolRenderer(attrName='Class')
130+
sym1 = QgsMarkerSymbol.createSimple({'color': '#ff00ff', 'size': '6', 'outline_style': 'no'})
131+
cat1 = QgsRendererCategory('Biplane', sym1, 'Big')
132+
renderer.addCategory(cat1)
133+
sym2 = QgsMarkerSymbol.createSimple({'color': '#ff00ff', 'size': '3', 'outline_style': 'no'})
134+
cat2 = QgsRendererCategory(['B52', 'Jet'], sym2, 'Smaller')
135+
renderer.addCategory(cat2)
136+
self.renderer.setEmbeddedRenderer(renderer)
137+
126138
def testGettersSetters(self):
127139
""" test getters and setters """
128140
r = QgsPointDisplacementRenderer()
@@ -228,6 +240,74 @@ def testRenderGridAdjust(self):
228240
renderchecker.setControlName('expected_displacement_adjust_grid')
229241
self.assertTrue(renderchecker.runTest('expected_displacement_adjust_grid'))
230242

243+
def testClusterRingLabels(self):
244+
self.layer.renderer().setTolerance(10)
245+
self.layer.renderer().setLabelAttributeName('Class')
246+
self.layer.renderer().setLabelDistanceFactor(0.35)
247+
renderchecker = QgsMultiRenderChecker()
248+
renderchecker.setMapSettings(self.mapsettings)
249+
renderchecker.setControlPathPrefix('displacement_renderer')
250+
renderchecker.setControlName('expected_displacement_cluster_ring_labels')
251+
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_ring_labels'))
252+
253+
def testClusterGridLabels(self):
254+
self.layer.renderer().setTolerance(10)
255+
self.layer.renderer().setLabelAttributeName('Class')
256+
self.layer.renderer().setLabelDistanceFactor(0.35)
257+
self.layer.renderer().setPlacement(QgsPointDisplacementRenderer.Grid)
258+
renderchecker = QgsMultiRenderChecker()
259+
renderchecker.setMapSettings(self.mapsettings)
260+
renderchecker.setControlPathPrefix('displacement_renderer')
261+
renderchecker.setControlName('expected_displacement_cluster_grid_labels')
262+
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_grid_labels'))
263+
264+
def testClusterConcentricLabels(self):
265+
self.layer.renderer().setTolerance(10)
266+
self.layer.renderer().setLabelAttributeName('Class')
267+
self.layer.renderer().setLabelDistanceFactor(0.35)
268+
self.layer.renderer().setPlacement(QgsPointDisplacementRenderer.ConcentricRings)
269+
renderchecker = QgsMultiRenderChecker()
270+
renderchecker.setMapSettings(self.mapsettings)
271+
renderchecker.setControlPathPrefix('displacement_renderer')
272+
renderchecker.setControlName('expected_displacement_cluster_concentric_labels')
273+
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_concentric_labels'))
274+
275+
def testClusterRingLabelsDifferetSizes(self):
276+
self._set_categorized_renderer()
277+
self.layer.renderer().setTolerance(10)
278+
self.layer.renderer().setLabelAttributeName('Class')
279+
self.layer.renderer().setLabelDistanceFactor(0.35)
280+
renderchecker = QgsMultiRenderChecker()
281+
renderchecker.setMapSettings(self.mapsettings)
282+
renderchecker.setControlPathPrefix('displacement_renderer')
283+
renderchecker.setControlName('expected_displacement_cluster_ring_labels_diff_size')
284+
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_ring_labels_diff_size'))
285+
286+
def testClusterGridLabelsDifferetSizes(self):
287+
self._set_categorized_renderer()
288+
self.layer.renderer().setTolerance(10)
289+
self.layer.renderer().setLabelAttributeName('Class')
290+
self.layer.renderer().setLabelDistanceFactor(0.35)
291+
self.layer.renderer().setPlacement(QgsPointDisplacementRenderer.Grid)
292+
renderchecker = QgsMultiRenderChecker()
293+
renderchecker.setMapSettings(self.mapsettings)
294+
renderchecker.setControlPathPrefix('displacement_renderer')
295+
renderchecker.setControlName('expected_displacement_cluster_grid_labels_diff_size')
296+
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_grid_labels_diff_size'))
297+
298+
def testClusterConcentricLabelsDifferetSizes(self):
299+
self._set_categorized_renderer()
300+
self.layer.renderer().setTolerance(10)
301+
self.layer.renderer().setLabelAttributeName('Class')
302+
self.layer.renderer().setLabelDistanceFactor(0.35)
303+
self.layer.renderer().setPlacement(QgsPointDisplacementRenderer.ConcentricRings)
304+
renderchecker = QgsMultiRenderChecker()
305+
renderchecker.setMapSettings(self.mapsettings)
306+
renderchecker.setControlPathPrefix('displacement_renderer')
307+
renderchecker.setControlName('expected_displacement_cluster_concentric_labels_diff_size')
308+
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_concentric_labels_diff_size'))
309+
310+
231311

232312
if __name__ == '__main__':
233313
unittest.main()

0 commit comments

Comments
 (0)
Please sign in to comment.