diff --git a/tests/src/core/testqgssvgmarker.cpp b/tests/src/core/testqgssvgmarker.cpp index bacf241fc153..866b875abf9d 100644 --- a/tests/src/core/testqgssvgmarker.cpp +++ b/tests/src/core/testqgssvgmarker.cpp @@ -64,6 +64,7 @@ class TestQgsSvgMarkerSymbol : public QObject void dynamicWidthWithAspectRatio(); void dynamicAspectRatio(); void resetDefaultAspectRatio(); + void opacityWithDataDefinedColor(); private: bool mTestHasError = false ; @@ -267,6 +268,8 @@ void TestQgsSvgMarkerSymbol::dynamicAspectRatio() bool result = imageCheck( QStringLiteral( "svgmarker_dynamic_aspectratio" ) ); mSvgMarkerLayer->setDataDefinedProperty( QgsSymbolLayer::PropertyHeight, QgsProperty() ); + mSvgMarkerLayer->setFixedAspectRatio( 0 ); + QVERIFY( result ); } @@ -297,6 +300,27 @@ void TestQgsSvgMarkerSymbol::resetDefaultAspectRatio() QVERIFY( !layer.preservedAspectRatio() ); } + +void TestQgsSvgMarkerSymbol::opacityWithDataDefinedColor() +{ + QString svgPath = QgsSymbolLayerUtils::svgSymbolNameToPath( QStringLiteral( "/transport/transport_airport.svg" ), QgsPathResolver() ); + + mSvgMarkerLayer->setPath( svgPath ); + mSvgMarkerLayer->setColor( QColor( 200, 200, 200 ) ); + mSvgMarkerLayer->setStrokeColor( QColor( 0, 0, 0 ) ); + mSvgMarkerLayer->setSize( 10 ); + mSvgMarkerLayer->setDataDefinedProperty( QgsSymbolLayer::PropertyFillColor, QgsProperty::fromExpression( QStringLiteral( "if(importance > 2, 'red', 'green')" ) ) ); + mSvgMarkerLayer->setDataDefinedProperty( QgsSymbolLayer::PropertyStrokeColor, QgsProperty::fromExpression( QStringLiteral( "if(importance > 2, 'blue', 'magenta')" ) ) ); + mSvgMarkerLayer->setStrokeWidth( 1.0 ); + mMarkerSymbol->setOpacity( 0.5 ); + + bool result = imageCheck( QStringLiteral( "svgmarker_opacityddcolor" ) ); + mSvgMarkerLayer->setDataDefinedProperty( QgsSymbolLayer::PropertyFillColor, QgsProperty() ); + mSvgMarkerLayer->setDataDefinedProperty( QgsSymbolLayer::PropertyStrokeColor, QgsProperty() ); + mMarkerSymbol->setOpacity( 1.0 ); + QVERIFY( result ); +} + // // Private helper functions not called directly by CTest // diff --git a/tests/testdata/control_images/symbol_svgmarker/expected_svgmarker_opacityddcolor/expected_svgmarker_opacityddcolor.png b/tests/testdata/control_images/symbol_svgmarker/expected_svgmarker_opacityddcolor/expected_svgmarker_opacityddcolor.png new file mode 100644 index 000000000000..314b418ea557 Binary files /dev/null and b/tests/testdata/control_images/symbol_svgmarker/expected_svgmarker_opacityddcolor/expected_svgmarker_opacityddcolor.png differ