diff --git a/tests/src/core/testqgsdiagram.cpp b/tests/src/core/testqgsdiagram.cpp index 5f9ad1178b22..972209b95a30 100644 --- a/tests/src/core/testqgsdiagram.cpp +++ b/tests/src/core/testqgsdiagram.cpp @@ -486,6 +486,62 @@ class TestQgsDiagram : public QObject } + void testStackedAxis() + { + QgsDiagramSettings ds; + QColor col1 = Qt::red; + QColor col2 = Qt::yellow; + col1.setAlphaF( 0.5 ); + col2.setAlphaF( 0.5 ); + ds.categoryColors = QList() << col1 << col2; + ds.categoryAttributes = QList() << QStringLiteral( "\"Pilots\"" ) << QStringLiteral( "\"Cabin Crew\"" ); + ds.minimumScale = -1; + ds.maximumScale = -1; + ds.minimumSize = 0; + ds.penColor = Qt::green; + ds.penWidth = .5; + ds.scaleByArea = true; + ds.sizeType = QgsUnitTypes::RenderMillimeters; + ds.size = QSizeF( 5, 5 ); + ds.rotationOffset = 0; + ds.setSpacing( 3 ); + ds.setShowAxis( true ); + + QgsStringMap props; + props.insert( QStringLiteral( "width" ), QStringLiteral( "2" ) ); + props.insert( QStringLiteral( "color" ), QStringLiteral( "#ff00ff" ) ); + ds.setAxisLineSymbol( QgsLineSymbol::createSimple( props ) ); + + QgsLinearlyInterpolatedDiagramRenderer *dr = new QgsLinearlyInterpolatedDiagramRenderer(); + dr->setLowerValue( 0.0 ); + dr->setLowerSize( QSizeF( 0.0, 0.0 ) ); + dr->setUpperValue( 10 ); + dr->setUpperSize( QSizeF( 40, 40 ) ); + dr->setClassificationField( QStringLiteral( "Staff" ) ); + dr->setDiagram( new QgsStackedBarDiagram() ); + dr->setDiagramSettings( ds ); + mPointsLayer->setDiagramRenderer( dr ); + + QgsDiagramLayerSettings dls = QgsDiagramLayerSettings(); + dls.setPlacement( QgsDiagramLayerSettings::OverPoint ); + dls.setShowAllDiagrams( true ); + mPointsLayer->setDiagramLayerSettings( dls ); + + QVERIFY( imageCheck( "stacked_axis_up" ) ); + + ds.diagramOrientation = QgsDiagramSettings::Down; + dr->setDiagramSettings( ds ); + QVERIFY( imageCheck( "stacked_axis_down" ) ); + + ds.diagramOrientation = QgsDiagramSettings::Left; + dr->setDiagramSettings( ds ); + QVERIFY( imageCheck( "stacked_axis_left" ) ); + + ds.diagramOrientation = QgsDiagramSettings::Right; + dr->setDiagramSettings( ds ); + QVERIFY( imageCheck( "stacked_axis_right" ) ); + } + void testPieDiagramExpression() { QgsDiagramSettings ds; diff --git a/tests/testdata/control_images/diagrams/expected_stacked_axis_down/expected_stacked_axis_down.png b/tests/testdata/control_images/diagrams/expected_stacked_axis_down/expected_stacked_axis_down.png new file mode 100644 index 000000000000..774472ed7f12 Binary files /dev/null and b/tests/testdata/control_images/diagrams/expected_stacked_axis_down/expected_stacked_axis_down.png differ diff --git a/tests/testdata/control_images/diagrams/expected_stacked_axis_left/expected_stacked_axis_left.png b/tests/testdata/control_images/diagrams/expected_stacked_axis_left/expected_stacked_axis_left.png new file mode 100644 index 000000000000..e3a8d82f0256 Binary files /dev/null and b/tests/testdata/control_images/diagrams/expected_stacked_axis_left/expected_stacked_axis_left.png differ diff --git a/tests/testdata/control_images/diagrams/expected_stacked_axis_right/expected_stacked_axis_right.png b/tests/testdata/control_images/diagrams/expected_stacked_axis_right/expected_stacked_axis_right.png new file mode 100644 index 000000000000..5e55e2a7b971 Binary files /dev/null and b/tests/testdata/control_images/diagrams/expected_stacked_axis_right/expected_stacked_axis_right.png differ diff --git a/tests/testdata/control_images/diagrams/expected_stacked_axis_up/expected_stacked_axis_up.png b/tests/testdata/control_images/diagrams/expected_stacked_axis_up/expected_stacked_axis_up.png new file mode 100644 index 000000000000..553369aa4694 Binary files /dev/null and b/tests/testdata/control_images/diagrams/expected_stacked_axis_up/expected_stacked_axis_up.png differ