mirror of
https://github.com/qgis/QGIS.git
synced 2025-12-08 00:06:51 -05:00
Skip ONLY NetCDF tests when netcdf driver is not available
Commit 695b5bbe resulted in more tests being skipped
This commit is contained in:
parent
695b5bbe37
commit
7ea8f173b4
@ -65,12 +65,15 @@ class TestQgsGdalProvider : public QObject
|
|||||||
void scale0(); //test when data has scale 0 (#20493)
|
void scale0(); //test when data has scale 0 (#20493)
|
||||||
void transformCoordinates();
|
void transformCoordinates();
|
||||||
void testGdalProviderQuerySublayers();
|
void testGdalProviderQuerySublayers();
|
||||||
|
void testGdalProviderQuerySublayers_NetCDF();
|
||||||
void testGdalProviderQuerySublayersFastScan();
|
void testGdalProviderQuerySublayersFastScan();
|
||||||
|
void testGdalProviderQuerySublayersFastScan_NetCDF();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString mTestDataDir;
|
QString mTestDataDir;
|
||||||
QString mReport;
|
QString mReport;
|
||||||
bool mSupportsNetCDF;
|
bool mSupportsNetCDF;
|
||||||
|
QgsProviderMetadata *mGdalMetadata;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -84,7 +87,9 @@ void TestQgsGdalProvider::initTestCase()
|
|||||||
mTestDataDir = QStringLiteral( TEST_DATA_DIR ) + '/'; //defined in CmakeLists.txt
|
mTestDataDir = QStringLiteral( TEST_DATA_DIR ) + '/'; //defined in CmakeLists.txt
|
||||||
mReport = QStringLiteral( "<h1>GDAL Provider Tests</h1>\n" );
|
mReport = QStringLiteral( "<h1>GDAL Provider Tests</h1>\n" );
|
||||||
|
|
||||||
mSupportsNetCDF = GDALGetDriverByName( "netcdf" ) != NULL;
|
mGdalMetadata = QgsProviderRegistry::instance()->providerMetadata( QStringLiteral( "gdal" ) );
|
||||||
|
|
||||||
|
mSupportsNetCDF = static_cast< bool >( GDALGetDriverByName( "netcdf" ) );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -486,57 +491,6 @@ void TestQgsGdalProvider::testGdalProviderQuerySublayers()
|
|||||||
rl.reset( qgis::down_cast< QgsRasterLayer * >( res.at( 1 ).toLayer( options ) ) );
|
rl.reset( qgis::down_cast< QgsRasterLayer * >( res.at( 1 ).toLayer( options ) ) );
|
||||||
QVERIFY( rl->isValid() );
|
QVERIFY( rl->isValid() );
|
||||||
|
|
||||||
if ( mSupportsNetCDF )
|
|
||||||
{
|
|
||||||
// netcdf file
|
|
||||||
res = gdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/mesh/trap_steady_05_3D.nc" );
|
|
||||||
QCOMPARE( res.count(), 8 );
|
|
||||||
QCOMPARE( res.at( 0 ).layerNumber(), 1 );
|
|
||||||
QCOMPARE( res.at( 0 ).name(), QStringLiteral( "cell_node" ) );
|
|
||||||
QCOMPARE( res.at( 0 ).description(), QStringLiteral( "[320x4] cell_node (32-bit integer)" ) );
|
|
||||||
QCOMPARE( res.at( 0 ).uri(), QStringLiteral( "NETCDF:\"%1/mesh/trap_steady_05_3D.nc\":cell_node" ).arg( QStringLiteral( TEST_DATA_DIR ) ) );
|
|
||||||
QCOMPARE( res.at( 0 ).providerKey(), QStringLiteral( "gdal" ) );
|
|
||||||
QCOMPARE( res.at( 0 ).type(), QgsMapLayerType::RasterLayer );
|
|
||||||
QCOMPARE( res.at( 0 ).driverName(), QStringLiteral( "netCDF" ) );
|
|
||||||
rl.reset( qgis::down_cast< QgsRasterLayer * >( res.at( 0 ).toLayer( options ) ) );
|
|
||||||
QVERIFY( rl->isValid() );
|
|
||||||
QCOMPARE( res.at( 1 ).layerNumber(), 2 );
|
|
||||||
QCOMPARE( res.at( 1 ).name(), QStringLiteral( "layerface_Z" ) );
|
|
||||||
QCOMPARE( res.at( 1 ).description(), QStringLiteral( "[37x3520] layerface_Z (32-bit floating-point)" ) );
|
|
||||||
QCOMPARE( res.at( 1 ).uri(), QStringLiteral( "NETCDF:\"%1/mesh/trap_steady_05_3D.nc\":layerface_Z" ).arg( QStringLiteral( TEST_DATA_DIR ) ) );
|
|
||||||
QCOMPARE( res.at( 1 ).providerKey(), QStringLiteral( "gdal" ) );
|
|
||||||
QCOMPARE( res.at( 1 ).type(), QgsMapLayerType::RasterLayer );
|
|
||||||
QCOMPARE( res.at( 1 ).driverName(), QStringLiteral( "netCDF" ) );
|
|
||||||
rl.reset( qgis::down_cast< QgsRasterLayer * >( res.at( 1 ).toLayer( options ) ) );
|
|
||||||
QVERIFY( rl->isValid() );
|
|
||||||
|
|
||||||
// netcdf with open options
|
|
||||||
res = gdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/mesh/trap_steady_05_3D.nc|option:HONOUR_VALID_RANGE=YES" );
|
|
||||||
QCOMPARE( res.count(), 8 );
|
|
||||||
QCOMPARE( res.at( 0 ).layerNumber(), 1 );
|
|
||||||
QCOMPARE( res.at( 0 ).name(), QStringLiteral( "cell_node" ) );
|
|
||||||
QCOMPARE( res.at( 0 ).description(), QStringLiteral( "[320x4] cell_node (32-bit integer)" ) );
|
|
||||||
QCOMPARE( res.at( 0 ).uri(), QStringLiteral( "NETCDF:\"%1/mesh/trap_steady_05_3D.nc\":cell_node|option:HONOUR_VALID_RANGE=YES" ).arg( QStringLiteral( TEST_DATA_DIR ) ) );
|
|
||||||
QCOMPARE( res.at( 0 ).providerKey(), QStringLiteral( "gdal" ) );
|
|
||||||
QCOMPARE( res.at( 0 ).type(), QgsMapLayerType::RasterLayer );
|
|
||||||
QCOMPARE( res.at( 0 ).driverName(), QStringLiteral( "netCDF" ) );
|
|
||||||
rl.reset( qgis::down_cast< QgsRasterLayer * >( res.at( 0 ).toLayer( options ) ) );
|
|
||||||
QVERIFY( rl->isValid() );
|
|
||||||
QCOMPARE( res.at( 1 ).layerNumber(), 2 );
|
|
||||||
QCOMPARE( res.at( 1 ).name(), QStringLiteral( "layerface_Z" ) );
|
|
||||||
QCOMPARE( res.at( 1 ).description(), QStringLiteral( "[37x3520] layerface_Z (32-bit floating-point)" ) );
|
|
||||||
QCOMPARE( res.at( 1 ).uri(), QStringLiteral( "NETCDF:\"%1/mesh/trap_steady_05_3D.nc\":layerface_Z|option:HONOUR_VALID_RANGE=YES" ).arg( QStringLiteral( TEST_DATA_DIR ) ) );
|
|
||||||
QCOMPARE( res.at( 1 ).providerKey(), QStringLiteral( "gdal" ) );
|
|
||||||
QCOMPARE( res.at( 1 ).type(), QgsMapLayerType::RasterLayer );
|
|
||||||
QCOMPARE( res.at( 1 ).driverName(), QStringLiteral( "netCDF" ) );
|
|
||||||
rl.reset( qgis::down_cast< QgsRasterLayer * >( res.at( 1 ).toLayer( options ) ) );
|
|
||||||
QVERIFY( rl->isValid() );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
QSKIP( "NetCDF based tests require the netcdf GDAL driver" );
|
|
||||||
}
|
|
||||||
|
|
||||||
// aigrid file
|
// aigrid file
|
||||||
res = gdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/aigrid" );
|
res = gdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/aigrid" );
|
||||||
QCOMPARE( res.count(), 1 );
|
QCOMPARE( res.count(), 1 );
|
||||||
@ -566,14 +520,15 @@ void TestQgsGdalProvider::testGdalProviderQuerySublayers()
|
|||||||
// zip archive, only 1 file
|
// zip archive, only 1 file
|
||||||
res = gdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/zip/landsat_b1.zip" );
|
res = gdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/zip/landsat_b1.zip" );
|
||||||
QCOMPARE( res.count(), 1 );
|
QCOMPARE( res.count(), 1 );
|
||||||
QCOMPARE( res.at( 0 ).layerNumber(), 1 );
|
const QgsProviderSublayerDetails &sl = res.at( 0 );
|
||||||
QCOMPARE( res.at( 0 ).name(), QStringLiteral( "landsat_b1.tif" ) );
|
QCOMPARE( sl.layerNumber(), 1 );
|
||||||
QCOMPARE( res.at( 0 ).description(), QString() );
|
QCOMPARE( sl.name(), QStringLiteral( "landsat_b1.tif" ) );
|
||||||
QCOMPARE( res.at( 0 ).uri(), QStringLiteral( "/vsizip/%1/zip/landsat_b1.zip/landsat_b1.tif" ).arg( QStringLiteral( TEST_DATA_DIR ) ) );
|
QCOMPARE( sl.description(), QString() );
|
||||||
QCOMPARE( res.at( 0 ).providerKey(), QStringLiteral( "gdal" ) );
|
QCOMPARE( sl.uri(), QStringLiteral( "/vsizip/%1/zip/landsat_b1.zip/landsat_b1.tif" ).arg( QStringLiteral( TEST_DATA_DIR ) ) );
|
||||||
QCOMPARE( res.at( 0 ).type(), QgsMapLayerType::RasterLayer );
|
QCOMPARE( sl.providerKey(), QStringLiteral( "gdal" ) );
|
||||||
QCOMPARE( res.at( 0 ).driverName(), QStringLiteral( "GTiff" ) );
|
QCOMPARE( sl.type(), QgsMapLayerType::RasterLayer );
|
||||||
rl.reset( qgis::down_cast< QgsRasterLayer * >( res.at( 0 ).toLayer( options ) ) );
|
QCOMPARE( sl.driverName(), QStringLiteral( "GTiff" ) );
|
||||||
|
rl.reset( qgis::down_cast< QgsRasterLayer * >( sl.toLayer( options ) ) );
|
||||||
QVERIFY( rl->isValid() );
|
QVERIFY( rl->isValid() );
|
||||||
|
|
||||||
// multi-layer archive
|
// multi-layer archive
|
||||||
@ -653,6 +608,62 @@ void TestQgsGdalProvider::testGdalProviderQuerySublayers()
|
|||||||
QVERIFY( rl->isValid() );
|
QVERIFY( rl->isValid() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TestQgsGdalProvider::testGdalProviderQuerySublayers_NetCDF()
|
||||||
|
{
|
||||||
|
if ( ! mSupportsNetCDF )
|
||||||
|
{
|
||||||
|
QSKIP( "NetCDF based tests require the netcdf GDAL driver" );
|
||||||
|
}
|
||||||
|
|
||||||
|
QList< QgsProviderSublayerDetails > res;
|
||||||
|
std::unique_ptr< QgsRasterLayer > rl;
|
||||||
|
const QgsProviderSublayerDetails::LayerOptions options{ QgsCoordinateTransformContext() };
|
||||||
|
|
||||||
|
// netcdf file
|
||||||
|
res = mGdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/mesh/trap_steady_05_3D.nc" );
|
||||||
|
QCOMPARE( res.count(), 8 );
|
||||||
|
QCOMPARE( res.at( 0 ).layerNumber(), 1 );
|
||||||
|
QCOMPARE( res.at( 0 ).name(), QStringLiteral( "cell_node" ) );
|
||||||
|
QCOMPARE( res.at( 0 ).description(), QStringLiteral( "[320x4] cell_node (32-bit integer)" ) );
|
||||||
|
QCOMPARE( res.at( 0 ).uri(), QStringLiteral( "NETCDF:\"%1/mesh/trap_steady_05_3D.nc\":cell_node" ).arg( QStringLiteral( TEST_DATA_DIR ) ) );
|
||||||
|
QCOMPARE( res.at( 0 ).providerKey(), QStringLiteral( "gdal" ) );
|
||||||
|
QCOMPARE( res.at( 0 ).type(), QgsMapLayerType::RasterLayer );
|
||||||
|
QCOMPARE( res.at( 0 ).driverName(), QStringLiteral( "netCDF" ) );
|
||||||
|
rl.reset( qgis::down_cast< QgsRasterLayer * >( res.at( 0 ).toLayer( options ) ) );
|
||||||
|
QVERIFY( rl->isValid() );
|
||||||
|
QCOMPARE( res.at( 1 ).layerNumber(), 2 );
|
||||||
|
QCOMPARE( res.at( 1 ).name(), QStringLiteral( "layerface_Z" ) );
|
||||||
|
QCOMPARE( res.at( 1 ).description(), QStringLiteral( "[37x3520] layerface_Z (32-bit floating-point)" ) );
|
||||||
|
QCOMPARE( res.at( 1 ).uri(), QStringLiteral( "NETCDF:\"%1/mesh/trap_steady_05_3D.nc\":layerface_Z" ).arg( QStringLiteral( TEST_DATA_DIR ) ) );
|
||||||
|
QCOMPARE( res.at( 1 ).providerKey(), QStringLiteral( "gdal" ) );
|
||||||
|
QCOMPARE( res.at( 1 ).type(), QgsMapLayerType::RasterLayer );
|
||||||
|
QCOMPARE( res.at( 1 ).driverName(), QStringLiteral( "netCDF" ) );
|
||||||
|
rl.reset( qgis::down_cast< QgsRasterLayer * >( res.at( 1 ).toLayer( options ) ) );
|
||||||
|
QVERIFY( rl->isValid() );
|
||||||
|
|
||||||
|
// netcdf with open options
|
||||||
|
res = mGdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/mesh/trap_steady_05_3D.nc|option:HONOUR_VALID_RANGE=YES" );
|
||||||
|
QCOMPARE( res.count(), 8 );
|
||||||
|
QCOMPARE( res.at( 0 ).layerNumber(), 1 );
|
||||||
|
QCOMPARE( res.at( 0 ).name(), QStringLiteral( "cell_node" ) );
|
||||||
|
QCOMPARE( res.at( 0 ).description(), QStringLiteral( "[320x4] cell_node (32-bit integer)" ) );
|
||||||
|
QCOMPARE( res.at( 0 ).uri(), QStringLiteral( "NETCDF:\"%1/mesh/trap_steady_05_3D.nc\":cell_node|option:HONOUR_VALID_RANGE=YES" ).arg( QStringLiteral( TEST_DATA_DIR ) ) );
|
||||||
|
QCOMPARE( res.at( 0 ).providerKey(), QStringLiteral( "gdal" ) );
|
||||||
|
QCOMPARE( res.at( 0 ).type(), QgsMapLayerType::RasterLayer );
|
||||||
|
QCOMPARE( res.at( 0 ).driverName(), QStringLiteral( "netCDF" ) );
|
||||||
|
rl.reset( qgis::down_cast< QgsRasterLayer * >( res.at( 0 ).toLayer( options ) ) );
|
||||||
|
QVERIFY( rl->isValid() );
|
||||||
|
QCOMPARE( res.at( 1 ).layerNumber(), 2 );
|
||||||
|
QCOMPARE( res.at( 1 ).name(), QStringLiteral( "layerface_Z" ) );
|
||||||
|
QCOMPARE( res.at( 1 ).description(), QStringLiteral( "[37x3520] layerface_Z (32-bit floating-point)" ) );
|
||||||
|
QCOMPARE( res.at( 1 ).uri(), QStringLiteral( "NETCDF:\"%1/mesh/trap_steady_05_3D.nc\":layerface_Z|option:HONOUR_VALID_RANGE=YES" ).arg( QStringLiteral( TEST_DATA_DIR ) ) );
|
||||||
|
QCOMPARE( res.at( 1 ).providerKey(), QStringLiteral( "gdal" ) );
|
||||||
|
QCOMPARE( res.at( 1 ).type(), QgsMapLayerType::RasterLayer );
|
||||||
|
QCOMPARE( res.at( 1 ).driverName(), QStringLiteral( "netCDF" ) );
|
||||||
|
rl.reset( qgis::down_cast< QgsRasterLayer * >( res.at( 1 ).toLayer( options ) ) );
|
||||||
|
QVERIFY( rl->isValid() );
|
||||||
|
}
|
||||||
|
|
||||||
void TestQgsGdalProvider::testGdalProviderQuerySublayersFastScan()
|
void TestQgsGdalProvider::testGdalProviderQuerySublayersFastScan()
|
||||||
{
|
{
|
||||||
// test querying sub layers for a mesh layer
|
// test querying sub layers for a mesh layer
|
||||||
@ -688,31 +699,6 @@ void TestQgsGdalProvider::testGdalProviderQuerySublayersFastScan()
|
|||||||
QCOMPARE( res.at( 0 ).type(), QgsMapLayerType::RasterLayer );
|
QCOMPARE( res.at( 0 ).type(), QgsMapLayerType::RasterLayer );
|
||||||
QVERIFY( res.at( 0 ).skippedContainerScan() );
|
QVERIFY( res.at( 0 ).skippedContainerScan() );
|
||||||
|
|
||||||
if ( mSupportsNetCDF )
|
|
||||||
{
|
|
||||||
// netcdf file
|
|
||||||
res = gdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/mesh/trap_steady_05_3D.nc", Qgis::SublayerQueryFlag::FastScan );
|
|
||||||
QCOMPARE( res.count(), 1 );
|
|
||||||
QCOMPARE( res.at( 0 ).name(), QStringLiteral( "trap_steady_05_3D" ) );
|
|
||||||
QCOMPARE( res.at( 0 ).uri(), QStringLiteral( TEST_DATA_DIR ) + "/mesh/trap_steady_05_3D.nc" );
|
|
||||||
QCOMPARE( res.at( 0 ).providerKey(), QStringLiteral( "gdal" ) );
|
|
||||||
QCOMPARE( res.at( 0 ).type(), QgsMapLayerType::RasterLayer );
|
|
||||||
QVERIFY( res.at( 0 ).skippedContainerScan() );
|
|
||||||
|
|
||||||
// netcdf with open options
|
|
||||||
res = gdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/mesh/trap_steady_05_3D.nc|option:HONOUR_VALID_RANGE=YES", Qgis::SublayerQueryFlag::FastScan );
|
|
||||||
QCOMPARE( res.count(), 1 );
|
|
||||||
QCOMPARE( res.at( 0 ).name(), QStringLiteral( "trap_steady_05_3D" ) );
|
|
||||||
QCOMPARE( res.at( 0 ).uri(), QStringLiteral( TEST_DATA_DIR ) + "/mesh/trap_steady_05_3D.nc|option:HONOUR_VALID_RANGE=YES" );
|
|
||||||
QCOMPARE( res.at( 0 ).providerKey(), QStringLiteral( "gdal" ) );
|
|
||||||
QCOMPARE( res.at( 0 ).type(), QgsMapLayerType::RasterLayer );
|
|
||||||
QVERIFY( res.at( 0 ).skippedContainerScan() );
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
QSKIP( "NetCDF tests require the netcdf GDAL driver" );
|
|
||||||
}
|
|
||||||
|
|
||||||
// aigrid, pointing to .adf file
|
// aigrid, pointing to .adf file
|
||||||
res = gdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/aigrid/hdr.adf", Qgis::SublayerQueryFlag::FastScan );
|
res = gdalMetadata->querySublayers( QStringLiteral( TEST_DATA_DIR ) + "/aigrid/hdr.adf", Qgis::SublayerQueryFlag::FastScan );
|
||||||
QCOMPARE( res.count(), 1 );
|
QCOMPARE( res.count(), 1 );
|
||||||
@ -760,5 +746,41 @@ void TestQgsGdalProvider::testGdalProviderQuerySublayersFastScan()
|
|||||||
QCOMPARE( res.count(), 0 );
|
QCOMPARE( res.count(), 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TestQgsGdalProvider::testGdalProviderQuerySublayersFastScan_NetCDF()
|
||||||
|
{
|
||||||
|
if ( ! mSupportsNetCDF )
|
||||||
|
{
|
||||||
|
QSKIP( "NetCDF based tests require the netcdf GDAL driver" );
|
||||||
|
}
|
||||||
|
|
||||||
|
QList< QgsProviderSublayerDetails > res;
|
||||||
|
std::unique_ptr< QgsRasterLayer > rl;
|
||||||
|
|
||||||
|
// netcdf file
|
||||||
|
res = mGdalMetadata->querySublayers(
|
||||||
|
QStringLiteral( TEST_DATA_DIR ) + "/mesh/trap_steady_05_3D.nc",
|
||||||
|
Qgis::SublayerQueryFlag::FastScan
|
||||||
|
);
|
||||||
|
QCOMPARE( res.count(), 1 );
|
||||||
|
QCOMPARE( res.at( 0 ).name(), QStringLiteral( "trap_steady_05_3D" ) );
|
||||||
|
QCOMPARE( res.at( 0 ).uri(), QStringLiteral( TEST_DATA_DIR ) + "/mesh/trap_steady_05_3D.nc" );
|
||||||
|
QCOMPARE( res.at( 0 ).providerKey(), QStringLiteral( "gdal" ) );
|
||||||
|
QCOMPARE( res.at( 0 ).type(), QgsMapLayerType::RasterLayer );
|
||||||
|
QVERIFY( res.at( 0 ).skippedContainerScan() );
|
||||||
|
|
||||||
|
// netcdf with open options
|
||||||
|
res = mGdalMetadata->querySublayers(
|
||||||
|
QStringLiteral( TEST_DATA_DIR ) + "/mesh/trap_steady_05_3D.nc|option:HONOUR_VALID_RANGE=YES",
|
||||||
|
Qgis::SublayerQueryFlag::FastScan
|
||||||
|
);
|
||||||
|
QCOMPARE( res.count(), 1 );
|
||||||
|
QCOMPARE( res.at( 0 ).name(), QStringLiteral( "trap_steady_05_3D" ) );
|
||||||
|
QCOMPARE( res.at( 0 ).uri(), QStringLiteral( TEST_DATA_DIR ) + "/mesh/trap_steady_05_3D.nc|option:HONOUR_VALID_RANGE=YES" );
|
||||||
|
QCOMPARE( res.at( 0 ).providerKey(), QStringLiteral( "gdal" ) );
|
||||||
|
QCOMPARE( res.at( 0 ).type(), QgsMapLayerType::RasterLayer );
|
||||||
|
QVERIFY( res.at( 0 ).skippedContainerScan() );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
QGSTEST_MAIN( TestQgsGdalProvider )
|
QGSTEST_MAIN( TestQgsGdalProvider )
|
||||||
#include "testqgsgdalprovider.moc"
|
#include "testqgsgdalprovider.moc"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user