Add test for issue #38716

This commit is contained in:
Alessandro Pasotti 2020-09-17 09:37:12 +02:00
parent 2018edbec0
commit 247a399901
2 changed files with 52 additions and 0 deletions

View File

@ -340,6 +340,58 @@ class TestQgsMarkerLineSymbolLayer(unittest.TestCase):
rendered_image = self.renderGeometry(s, g)
assert self.imageCheck('markerline_segmentcenter', 'markerline_segmentcenter', rendered_image)
def testMarkerAngleDD(self):
"""Test issue https://github.com/qgis/QGIS/issues/38716"""
s = QgsLineSymbol()
s.deleteSymbolLayer(0)
marker_line = QgsMarkerLineSymbolLayer(True)
marker_line.setRotateSymbols(True)
marker_line.setPlacement(QgsTemplatedLineSymbolLayerBase.CentralPoint)
marker = QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayer.Arrow, 10)
marker.setAngle(90)
marker.setColor(QColor(255, 0, 0))
marker.setStrokeStyle(Qt.NoPen)
marker_symbol = QgsMarkerSymbol()
marker_symbol.changeSymbolLayer(0, marker)
marker_line.setSubSymbol(marker_symbol)
line_symbol = QgsLineSymbol()
line_symbol.changeSymbolLayer(0, marker_line)
s.appendSymbolLayer(marker_line.clone())
g = QgsGeometry.fromWkt('LineString(0 0, 10 10, 20 20)')
rendered_image = self.renderGeometry(s, g)
assert self.imageCheck('markerline_center_angle_dd', 'markerline_center_angle_dd', rendered_image)
# Now with DD
s = QgsLineSymbol()
s.deleteSymbolLayer(0)
marker_line = QgsMarkerLineSymbolLayer(True)
marker_line.setRotateSymbols(True)
marker_line.setPlacement(QgsTemplatedLineSymbolLayerBase.CentralPoint)
marker = QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayer.Arrow, 10)
# Note: set this to a different value than the reference test (90)
marker.setAngle(30)
marker.setColor(QColor(255, 0, 0))
marker.setStrokeStyle(Qt.NoPen)
marker_symbol = QgsMarkerSymbol()
marker_symbol.changeSymbolLayer(0, marker)
# This is the same value of the reference test
marker_symbol.setDataDefinedAngle(QgsProperty.fromExpression('90'))
marker_line.setSubSymbol(marker_symbol)
line_symbol = QgsLineSymbol()
line_symbol.changeSymbolLayer(0, marker_line)
s.appendSymbolLayer(marker_line.clone())
g = QgsGeometry.fromWkt('LineString(0 0, 10 10, 20 20)')
rendered_image = self.renderGeometry(s, g)
assert self.imageCheck('markerline_center_angle_dd', 'markerline_center_angle_dd', rendered_image)
def renderGeometry(self, symbol, geom, buffer=20):
f = QgsFeature()
f.setGeometry(geom)

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B