Skip to content

Commit

Permalink
Added tests for pointdisplacementlabels
Browse files Browse the repository at this point in the history
  • Loading branch information
henrik authored and nyalldawson committed Mar 26, 2019
1 parent 99bb45e commit e8584c0
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/core/symbology/qgspointdisplacementrenderer.h
Expand Up @@ -101,13 +101,15 @@ class CORE_EXPORT QgsPointDisplacementRenderer: public QgsPointDistanceRenderer

/**
* Sets a factor for increasing the label distances from the symbol.
* /since QGIS 3.8
* \param factor addition factor
* \see labelDistanceFactor()
*/
void setLabelDistanceFactor( double factor ) { mLabelDistanceFactor = factor; }

/**
* Returns the factor for label distance from the symbol.
* /since QGIS 3.8
* \see setLabelDistanceFactor()
*/
double labelDistanceFactor() const { return mLabelDistanceFactor; }
Expand Down
80 changes: 80 additions & 0 deletions tests/src/python/test_qgspointdisplacementrenderer.py
Expand Up @@ -40,6 +40,8 @@
QgsUnitTypes,
QgsMapUnitScale,
QgsMarkerSymbol,
QgsCategorizedSymbolRenderer,
QgsRendererCategory,
QgsSingleSymbolRenderer,
QgsPointClusterRenderer,
QgsMapSettings,
Expand Down Expand Up @@ -123,6 +125,16 @@ def _checkProperties(self, r):
self.assertEqual(r.embeddedRenderer().symbol().color().name(), '#fdbf6f')
self.assertEqual(r.labelDistanceFactor(), 0.25)

def _set_categorized_renderer(self):
renderer = QgsCategorizedSymbolRenderer(attrName='Class')
sym1 = QgsMarkerSymbol.createSimple({'color': '#ff00ff', 'size': '6', 'outline_style': 'no'})
cat1 = QgsRendererCategory('Biplane', sym1, 'Big')
renderer.addCategory(cat1)
sym2 = QgsMarkerSymbol.createSimple({'color': '#ff00ff', 'size': '3', 'outline_style': 'no'})
cat2 = QgsRendererCategory(['B52', 'Jet'], sym2, 'Smaller')
renderer.addCategory(cat2)
self.renderer.setEmbeddedRenderer(renderer)

def testGettersSetters(self):
""" test getters and setters """
r = QgsPointDisplacementRenderer()
Expand Down Expand Up @@ -228,6 +240,74 @@ def testRenderGridAdjust(self):
renderchecker.setControlName('expected_displacement_adjust_grid')
self.assertTrue(renderchecker.runTest('expected_displacement_adjust_grid'))

def testClusterRingLabels(self):
self.layer.renderer().setTolerance(10)
self.layer.renderer().setLabelAttributeName('Class')
self.layer.renderer().setLabelDistanceFactor(0.35)
renderchecker = QgsMultiRenderChecker()
renderchecker.setMapSettings(self.mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_cluster_ring_labels')
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_ring_labels'))

def testClusterGridLabels(self):
self.layer.renderer().setTolerance(10)
self.layer.renderer().setLabelAttributeName('Class')
self.layer.renderer().setLabelDistanceFactor(0.35)
self.layer.renderer().setPlacement(QgsPointDisplacementRenderer.Grid)
renderchecker = QgsMultiRenderChecker()
renderchecker.setMapSettings(self.mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_cluster_grid_labels')
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_grid_labels'))

def testClusterConcentricLabels(self):
self.layer.renderer().setTolerance(10)
self.layer.renderer().setLabelAttributeName('Class')
self.layer.renderer().setLabelDistanceFactor(0.35)
self.layer.renderer().setPlacement(QgsPointDisplacementRenderer.ConcentricRings)
renderchecker = QgsMultiRenderChecker()
renderchecker.setMapSettings(self.mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_cluster_concentric_labels')
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_concentric_labels'))

def testClusterRingLabelsDifferetSizes(self):
self._set_categorized_renderer()
self.layer.renderer().setTolerance(10)
self.layer.renderer().setLabelAttributeName('Class')
self.layer.renderer().setLabelDistanceFactor(0.35)
renderchecker = QgsMultiRenderChecker()
renderchecker.setMapSettings(self.mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_cluster_ring_labels_diff_size')
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_ring_labels_diff_size'))

def testClusterGridLabelsDifferetSizes(self):
self._set_categorized_renderer()
self.layer.renderer().setTolerance(10)
self.layer.renderer().setLabelAttributeName('Class')
self.layer.renderer().setLabelDistanceFactor(0.35)
self.layer.renderer().setPlacement(QgsPointDisplacementRenderer.Grid)
renderchecker = QgsMultiRenderChecker()
renderchecker.setMapSettings(self.mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_cluster_grid_labels_diff_size')
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_grid_labels_diff_size'))

def testClusterConcentricLabelsDifferetSizes(self):
self._set_categorized_renderer()
self.layer.renderer().setTolerance(10)
self.layer.renderer().setLabelAttributeName('Class')
self.layer.renderer().setLabelDistanceFactor(0.35)
self.layer.renderer().setPlacement(QgsPointDisplacementRenderer.ConcentricRings)
renderchecker = QgsMultiRenderChecker()
renderchecker.setMapSettings(self.mapsettings)
renderchecker.setControlPathPrefix('displacement_renderer')
renderchecker.setControlName('expected_displacement_cluster_concentric_labels_diff_size')
self.assertTrue(renderchecker.runTest('expected_displacement_cluster_concentric_labels_diff_size'))



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

0 comments on commit e8584c0

Please sign in to comment.