Skip to content

Commit 7fcc7ab

Browse files
committed
Add specific test for QgsMultiBandColorRenderer
The raster blend mode test, which uses QgsMultiBandColorRenderer fails occasionally for no obvious reason. This additional test is an attempt to narrow down whether the issue lies in rendering multi band images or elsewhere.
1 parent a20d503 commit 7fcc7ab

File tree

3 files changed

+27
-10
lines changed

3 files changed

+27
-10
lines changed

tests/src/core/testqgsrasterlayer.cpp

+27-10
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
#include <qgsmaprenderer.h>
3636
#include <qgssinglebandgrayrenderer.h>
3737
#include <qgssinglebandpseudocolorrenderer.h>
38+
#include <qgsmultibandcolorrenderer.h>
3839
#include <qgsvectorcolorrampv2.h>
3940
#include <qgscptcityarchive.h>
4041

@@ -49,10 +50,11 @@ class TestQgsRasterLayer : public QObject
4950
Q_OBJECT
5051
public:
5152
TestQgsRasterLayer()
52-
: mpRasterLayer( 0 )
53-
, mpLandsatRasterLayer( 0 )
54-
, mpFloat32RasterLayer( 0 )
55-
, mMapSettings( 0 )
53+
: mpRasterLayer( nullptr )
54+
, mpLandsatRasterLayer( nullptr )
55+
, mpFloat32RasterLayer( nullptr )
56+
, mPngRasterLayer( nullptr )
57+
, mMapSettings( nullptr )
5658
{}
5759
~TestQgsRasterLayer()
5860
{
@@ -79,6 +81,7 @@ class TestQgsRasterLayer : public QObject
7981
void buildExternalOverviews();
8082
void registry();
8183
void transparency();
84+
void multiBandColorRenderer();
8285
void setRenderer();
8386
private:
8487
bool render( const QString& theFileName );
@@ -92,6 +95,7 @@ class TestQgsRasterLayer : public QObject
9295
QgsRasterLayer * mpRasterLayer;
9396
QgsRasterLayer * mpLandsatRasterLayer;
9497
QgsRasterLayer * mpFloat32RasterLayer;
98+
QgsRasterLayer * mPngRasterLayer;
9599
QgsMapSettings * mMapSettings;
96100
QString mReport;
97101
};
@@ -101,7 +105,7 @@ class TestSignalReceiver : public QObject
101105
Q_OBJECT
102106

103107
public:
104-
TestSignalReceiver() : QObject( 0 ),
108+
TestSignalReceiver() : QObject( nullptr ),
105109
rendererChanged( false )
106110
{}
107111
bool rendererChanged;
@@ -132,6 +136,7 @@ void TestQgsRasterLayer::initTestCase()
132136
QString myFileName = mTestDataDir + "tenbytenraster.asc";
133137
QString myLandsatFileName = mTestDataDir + "landsat.tif";
134138
QString myFloat32FileName = mTestDataDir + "/raster/band1_float32_noct_epsg4326.tif";
139+
QString pngRasterFileName = mTestDataDir + "rgb256x256.png";
135140

136141
QFileInfo myRasterFileInfo( myFileName );
137142
mpRasterLayer = new QgsRasterLayer( myRasterFileInfo.filePath(),
@@ -148,13 +153,16 @@ void TestQgsRasterLayer::initTestCase()
148153
myFloat32RasterFileInfo.completeBaseName() );
149154
qDebug() << "float32raster metadata: " << mpFloat32RasterLayer->dataProvider()->metadata();
150155

156+
QFileInfo pngRasterFileInfo( pngRasterFileName );
157+
mPngRasterLayer = new QgsRasterLayer( pngRasterFileInfo.filePath(),
158+
pngRasterFileInfo.completeBaseName() );
159+
151160
// Register the layer with the registry
152161
QgsMapLayerRegistry::instance()->addMapLayers(
153-
QList<QgsMapLayer *>() << mpRasterLayer );
154-
QgsMapLayerRegistry::instance()->addMapLayers(
155-
QList<QgsMapLayer *>() << mpLandsatRasterLayer );
156-
QgsMapLayerRegistry::instance()->addMapLayers(
157-
QList<QgsMapLayer *>() << mpFloat32RasterLayer );
162+
QList<QgsMapLayer *>() << mpRasterLayer
163+
<< mpLandsatRasterLayer
164+
<< mpFloat32RasterLayer
165+
<< mPngRasterLayer );
158166

159167
// add the test layer to the maprender
160168
mMapSettings->setLayers( QStringList() << mpRasterLayer->id() );
@@ -597,6 +605,15 @@ void TestQgsRasterLayer::transparency()
597605
QVERIFY( render( "raster_transparency" ) );
598606
}
599607

608+
void TestQgsRasterLayer::multiBandColorRenderer()
609+
{
610+
QgsMultiBandColorRenderer* rasterRenderer = new QgsMultiBandColorRenderer( mPngRasterLayer->dataProvider(), 1, 2, 3 );
611+
mPngRasterLayer->setRenderer( rasterRenderer );
612+
mMapSettings->setLayers( QStringList() << mPngRasterLayer->id() );
613+
mMapSettings->setExtent( mPngRasterLayer->extent() );
614+
QVERIFY( render( "raster_multibandrenderer" ) );
615+
}
616+
600617
void TestQgsRasterLayer::setRenderer()
601618
{
602619
TestSignalReceiver receiver;

0 commit comments

Comments
 (0)