Skip to content

Commit

Permalink
Add unit test for rendering interpolated line with no associated feature
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Sep 21, 2021
1 parent 7d71baa commit 5950326
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 2 deletions.
41 changes: 39 additions & 2 deletions tests/src/python/test_qgsinterpolatedlinesymbollayers.py
Expand Up @@ -14,10 +14,12 @@
import qgis # NOQA

from qgis.testing import unittest
from qgis.PyQt.QtCore import QDir
from qgis.PyQt.QtCore import (QDir,
QPointF)
from qgis.PyQt.QtGui import (QImage,
QPainter,
QColor)
QColor,
QPolygonF)
from qgis.core import (QgsRenderChecker,
QgsInterpolatedLineSymbolLayer,
QgsInterpolatedLineWidth,
Expand Down Expand Up @@ -107,6 +109,41 @@ def testFixedColorFixedWidth(self):

self.renderImage(interpolated_width, interpolated_color, 'interpolatedlinesymbollayer_1')

def testRenderNoFeature(self):
""" test that rendering a interpolated line outside of a map render works"""

interpolated_width = QgsInterpolatedLineWidth()
interpolated_color = QgsInterpolatedLineColor()

interpolated_width.setIsVariableWidth(False)
interpolated_width.setFixedStrokeWidth(5)
interpolated_color.setColor(QColor(255, 0, 0))
interpolated_color.setColoringMethod(QgsInterpolatedLineColor.SingleColor)

layer = QgsInterpolatedLineSymbolLayer()
layer.setExpressionsStringForWidth('5', '1')
layer.setExpressionsStringForColor('2', '6')
layer.setInterpolatedWidth(interpolated_width)
layer.setInterpolatedColor(interpolated_color)

symbol = QgsLineSymbol()
symbol.changeSymbolLayer(0, layer)

image = QImage(200, 200, QImage.Format_RGB32)
image.fill(QColor(255, 255, 255))
painter = QPainter(image)

context = QgsRenderContext.fromQPainter(painter)

symbol.startRender(context)

symbol.renderPolyline(QPolygonF([QPointF(30, 50), QPointF(100, 70), QPointF(150, 30)]), None, context)

symbol.stopRender(context)
painter.end()

self.assertTrue(self.imageCheck('interpolatedlinesymbollayer_no_feature', 'interpolatedlinesymbollayer_no_feature', image))

def testVaryingColorFixedWidth(self):
""" test that rendering a interpolated line with fixed width and varying color"""

Expand Down
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 5950326

Please sign in to comment.