Skip to content
Permalink
Browse files

Add a bunch of tests for legend grouping into columns

(cherry-picked from 570e693)
  • Loading branch information
nyalldawson committed Sep 14, 2016
1 parent 3bc6c47 commit 6ed5b6646629490249af13a039433fbab9e1fd22
@@ -119,6 +119,8 @@ class TestQgsLegendRenderer : public QObject
void testThreeColumns();
void testFilterByMap();
void testFilterByMapSameSymbol();
void testColumns_data();
void testColumns();
void testRasterBorder();
void testFilterByPolygon();
void testFilterByExpression();
@@ -132,6 +134,7 @@ class TestQgsLegendRenderer : public QObject
QgsVectorLayer* mVL3; // point
QgsRasterLayer* mRL;
QString mReport;
bool _testLegendColumns( int itemCount, int columnCount, const QString& testName );
};


@@ -454,6 +457,65 @@ void TestQgsLegendRenderer::testFilterByMapSameSymbol()
QgsMapLayerRegistry::instance()->removeMapLayer( vl4 );
}

bool TestQgsLegendRenderer::_testLegendColumns( int itemCount, int columnCount, const QString& testName )
{
QgsFillSymbolV2* sym = new QgsFillSymbolV2();
sym->setColor( Qt::cyan );

QgsLayerTreeGroup* root = new QgsLayerTreeGroup();

QList< QgsVectorLayer* > layers;
for ( int i = 1; i <= itemCount; ++i )
{
QgsVectorLayer* vl = new QgsVectorLayer( "Polygon", QString( "Layer %1" ).arg( i ), "memory" );
QgsMapLayerRegistry::instance()->addMapLayer( vl );
vl->setRendererV2( new QgsSingleSymbolRendererV2( sym->clone() ) );
root->addLayer( vl );
layers << vl;
}
delete sym;

QgsLayerTreeModel legendModel( root );
QgsLegendSettings settings;
settings.setColumnCount( columnCount );
_setStandardTestFont( settings, "Bold" );
_renderLegend( testName, &legendModel, settings );
bool result = _verifyImage( testName, mReport );

Q_FOREACH ( QgsVectorLayer* l, layers )
{
QgsMapLayerRegistry::instance()->removeMapLayer( l );
}
return result;
}

void TestQgsLegendRenderer::testColumns_data()
{
QTest::addColumn<QString>( "testName" );
QTest::addColumn<int>( "items" );
QTest::addColumn<int>( "columns" );

QTest::newRow( "2 items, 2 columns" ) << "legend_2_by_2" << 2 << 2;
QTest::newRow( "3 items, 2 columns" ) << "legend_3_by_2" << 3 << 2;
QTest::newRow( "4 items, 2 columns" ) << "legend_4_by_2" << 4 << 2;
QTest::newRow( "5 items, 2 columns" ) << "legend_5_by_2" << 5 << 2;
QTest::newRow( "3 items, 3 columns" ) << "legend_3_by_3" << 3 << 3;
QTest::newRow( "4 items, 3 columns" ) << "legend_4_by_3" << 4 << 3;
QTest::newRow( "5 items, 3 columns" ) << "legend_5_by_3" << 5 << 3;
QTest::newRow( "6 items, 3 columns" ) << "legend_6_by_3" << 6 << 3;
QTest::newRow( "7 items, 3 columns" ) << "legend_7_by_3" << 7 << 3;
}

void TestQgsLegendRenderer::testColumns()
{
//test rendering legend with different combinations of columns and items

QFETCH( QString, testName );
QFETCH( int, items );
QFETCH( int, columns );
QVERIFY( _testLegendColumns( items, columns, testName ) );
}

void TestQgsLegendRenderer::testRasterBorder()
{
QString testName = "legend_raster_border";
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 comments on commit 6ed5b66

Please sign in to comment.
You can’t perform that action at this time.