QgsMultiRenderChecker class

This class allows checking rendered images against comparison images.

Its main purpose is for the unit testing framework.

It will either

This image will then be compared against one or several images in a folder inside the control directory (tests/testdata/control_images/{controlName}).

There are modes for single and for multiple reference images.

  • If there are no subfolders in the control directory, it will assume an image with the name {controlImage}.png in the control directory itself.

  • If there are subfolders inside the control directory, it will search for images with the name {controlImage}.png in every subfolder.

For every control image there may be one or several randomly named anomaly images defining allowed anomalies. For every control image, the allowed mismatch and color tolerance values will be calculated individually.

Public static functions

static void drawBackground(QImage* image)
Draws a checkboard pattern for image backgrounds, so that opacity is visible without requiring a transparent background for the image.

Constructors, destructors, conversion operators

QgsMultiRenderChecker() defaulted
Constructor for QgsMultiRenderChecker.

Public functions

auto controlImagePath() const -> QString
Returns the path to the control images.
auto report() const -> QString
Returns a report for this test.
auto runTest(const QString& testName, unsigned int mismatchCount = 0) -> bool
Test using renderer to generate the image to be compared.
void setColorTolerance(unsigned int colorTolerance)
Set tolerance for color components used by runTest() Default value is 0.
void setControlName(const QString& name)
Base directory name for the control image (with control image path suffixed) the path to the image will be constructed like this: controlImagePath + '/' + mControlName + '/' + mControlName + '.png'.
void setMapSettings(const QgsMapSettings& mapSettings)
Set the map settings to use to render the image.
void setRenderedImage(const QString& renderedImagePath)
Set the path to the rendered image.
void setSizeTolerance(int xTolerance, int yTolerance)
Sets the largest allowable difference in size between the rendered and the expected image.

Function documentation

bool QgsMultiRenderChecker::runTest(const QString& testName, unsigned int mismatchCount = 0)

Test using renderer to generate the image to be compared.

Parameters
testName - to be used as the basis for writing a file to e.g. /tmp/theTestName.png
mismatchCount - defaults to 0 - the number of pixels that are allowed to be different from the control image. In some cases rendering may be non-deterministic. This parameter allows you to account for that by providing a tolerance.

void QgsMultiRenderChecker::setColorTolerance(unsigned int colorTolerance)

Set tolerance for color components used by runTest() Default value is 0.

Parameters
colorTolerance The maximum difference for each color component including alpha to be considered correct.

void QgsMultiRenderChecker::setMapSettings(const QgsMapSettings& mapSettings)

Set the map settings to use to render the image.

Parameters
mapSettings The map settings

void QgsMultiRenderChecker::setRenderedImage(const QString& renderedImagePath)

Set the path to the rendered image.

Parameters
renderedImagePath A path to the rendered image with which control images will be compared

If this is not set or set to null QString, an image will be rendered based on the provided mapsettings

void QgsMultiRenderChecker::setSizeTolerance(int xTolerance, int yTolerance)

Sets the largest allowable difference in size between the rendered and the expected image.

Parameters
xTolerance x tolerance in pixels
yTolerance y tolerance in pixels