From 872c9a10a3522e507150d55c6d2bd4243ce7e1b5 Mon Sep 17 00:00:00 2001 From: Martin Dobias Date: Thu, 8 Nov 2018 10:09:57 +0100 Subject: [PATCH] Add unit test --- tests/src/providers/testqgsgdalprovider.cpp | 25 +++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/tests/src/providers/testqgsgdalprovider.cpp b/tests/src/providers/testqgsgdalprovider.cpp index 84da1d5f0b22..166031613b99 100644 --- a/tests/src/providers/testqgsgdalprovider.cpp +++ b/tests/src/providers/testqgsgdalprovider.cpp @@ -48,6 +48,7 @@ class TestQgsGdalProvider : public QObject void scaleDataType(); //test resultant data types for int raster with float scale (#11573) void warpedVrt(); //test loading raster which requires a warped vrt void noData(); + void noDataOutsideExtent(); void invalidNoDataInSourceIgnored(); void isRepresentableValue(); void mask(); @@ -151,6 +152,30 @@ void TestQgsGdalProvider::noData() delete provider; } +void TestQgsGdalProvider::noDataOutsideExtent() +{ + QString raster = QStringLiteral( TEST_DATA_DIR ) + "/raster/band1_byte_ct_epsg4326.tif"; + QgsDataProvider *provider = QgsProviderRegistry::instance()->createProvider( QStringLiteral( "gdal" ), raster, QgsDataProvider::ProviderOptions() ); + QVERIFY( provider->isValid() ); + QgsRasterDataProvider *rp = dynamic_cast< QgsRasterDataProvider * >( provider ); + QVERIFY( rp ); + if ( rp ) + { + std::unique_ptr block( rp->block( 1, QgsRectangle( 10, 10, 12, 12 ), 16, 16 ) ); + QVERIFY( block ); + QCOMPARE( block->width(), 16 ); + QCOMPARE( block->height(), 16 ); + for ( int y = 0; y < 16; ++y ) + { + for ( int x = 0; x < 16; ++x ) + { + QVERIFY( block->isNoData( y, x ) ); + } + } + } + delete provider; +} + void TestQgsGdalProvider::invalidNoDataInSourceIgnored() { QString raster = QStringLiteral( TEST_DATA_DIR ) + "/raster/byte_with_nan_nodata.tif";