From c43381139ad8c003d086a2d0310e574797f49fc8 Mon Sep 17 00:00:00 2001 From: Nyall Dawson Date: Mon, 7 Oct 2019 11:26:42 +1000 Subject: [PATCH] Update/enhance unit tests for CRS validation --- .../core/testqgscoordinatereferencesystem.cpp | 44 +++++++++++++++++-- 1 file changed, 41 insertions(+), 3 deletions(-) diff --git a/tests/src/core/testqgscoordinatereferencesystem.cpp b/tests/src/core/testqgscoordinatereferencesystem.cpp index 959889f6abc..2a20f95842c 100644 --- a/tests/src/core/testqgscoordinatereferencesystem.cpp +++ b/tests/src/core/testqgscoordinatereferencesystem.cpp @@ -99,8 +99,23 @@ class TestQgsCoordinateReferenceSystem: public QObject QStringList myAuthIdStrings; QString mTempFolder; QString testESRIWkt( int i, QgsCoordinateReferenceSystem &crs ); + + static bool sValidateCalled; + + static void testValidationCrs( QgsCoordinateReferenceSystem &crs ) + { + sValidateCalled = true; + + crs.createFromString( QStringLiteral( "EPSG:3111" ) ); + } + + static void testNoActionValidationCrs( QgsCoordinateReferenceSystem & ) + { + sValidateCalled = true; + } }; +bool TestQgsCoordinateReferenceSystem::sValidateCalled = false; void TestQgsCoordinateReferenceSystem::initTestCase() { @@ -625,6 +640,7 @@ void TestQgsCoordinateReferenceSystem::fromStringCache() QgsCoordinateReferenceSystem::invalidateCache(); QVERIFY( !QgsCoordinateReferenceSystem::sStringCache.contains( "EPSG:3113" ) ); } + void TestQgsCoordinateReferenceSystem::isValid() { QgsCoordinateReferenceSystem myCrs; @@ -632,14 +648,36 @@ void TestQgsCoordinateReferenceSystem::isValid() QVERIFY( myCrs.isValid() ); debugPrint( myCrs ); } + void TestQgsCoordinateReferenceSystem::validate() { - QgsCoordinateReferenceSystem myCrs; - myCrs.createFromSrid( GEOSRID ); + // no validator set + QgsCoordinateReferenceSystem::setCustomCrsValidation( nullptr ); + QgsCoordinateReferenceSystem myCrs( QStringLiteral( "EPSG:28356" ) ); myCrs.validate(); QVERIFY( myCrs.isValid() ); - debugPrint( myCrs ); + QCOMPARE( myCrs.authid(), QStringLiteral( "EPSG:28356" ) ); + myCrs = QgsCoordinateReferenceSystem(); + myCrs.validate(); + // no change, no custom function + QVERIFY( !myCrs.isValid() ); + + QgsCoordinateReferenceSystem::setCustomCrsValidation( &TestQgsCoordinateReferenceSystem::testValidationCrs ); + myCrs.validate(); + QVERIFY( myCrs.isValid() ); + QCOMPARE( myCrs.authid(), QStringLiteral( "EPSG:3111" ) ); + QVERIFY( sValidateCalled ); + sValidateCalled = false; + + myCrs = QgsCoordinateReferenceSystem(); + QgsCoordinateReferenceSystem::setCustomCrsValidation( &TestQgsCoordinateReferenceSystem::testNoActionValidationCrs ); + myCrs.validate(); + QVERIFY( !myCrs.isValid() ); + QVERIFY( sValidateCalled ); + + QgsCoordinateReferenceSystem::setCustomCrsValidation( nullptr ); } + void TestQgsCoordinateReferenceSystem::equality() { QgsCoordinateReferenceSystem myCrs;