Skip to content

Commit

Permalink
Add unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Sep 22, 2021
1 parent 72d238c commit faddd8e
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 3 deletions.
49 changes: 46 additions & 3 deletions tests/src/python/test_qgsgeometrygeneratorsymbollayer.py
Expand Up @@ -25,8 +25,8 @@

import os

from qgis.PyQt.QtCore import QSize, QDir
from qgis.PyQt.QtGui import QColor
from qgis.PyQt.QtCore import QSize, QDir, QPointF
from qgis.PyQt.QtGui import QColor, QImage, QPainter, QPolygonF
from qgis.core import (
QgsVectorLayer,
QgsSingleSymbolRenderer,
Expand All @@ -40,7 +40,9 @@
QgsMultiRenderChecker,
QgsMapSettings,
Qgis,
QgsUnitTypes
QgsUnitTypes,
QgsRenderContext,
QgsRenderChecker
)

from qgis.testing import start_app, unittest
Expand Down Expand Up @@ -264,6 +266,47 @@ def test_multi_poly_opacity(self):
self.report += renderchecker.report()
self.assertTrue(res)

def test_no_feature(self):
"""
Test rendering as a pure symbol, no feature associated
"""
buffer_layer = QgsGeometryGeneratorSymbolLayer.create({'geometryModifier': 'buffer($geometry, 5)'})
buffer_layer.setSymbolType(QgsSymbol.Fill)
buffer_layer.setUnits(QgsUnitTypes.RenderMillimeters)
self.assertIsNotNone(buffer_layer.subSymbol())

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

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

context = QgsRenderContext.fromQPainter(painter)

symbol.startRender(context)

symbol.renderPolyline(QPolygonF([QPointF(50, 200), QPointF(100, 170), QPointF(350, 270)]), None, context)

symbol.stopRender(context)
painter.end()

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

def imageCheck(self, name, reference_image, image):
self.report += "<h2>Render {}</h2>\n".format(name)
temp_dir = QDir.tempPath() + '/'
file_name = temp_dir + name + ".png"
image.save(file_name, "PNG")
checker = QgsRenderChecker()
checker.setControlName("expected_" + reference_image)
checker.setRenderedImage(file_name)
checker.setColorTolerance(2)
result = checker.compareImages(name, 0)
self.report += checker.report()
print((self.report))
return result


if __name__ == '__main__':
unittest.main()
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 faddd8e

Please sign in to comment.