diff options
Diffstat (limited to 'test/unit')
| -rw-r--r-- | test/unit/test_c_api.cpp | 7 | ||||
| -rw-r--r-- | test/unit/test_factory.cpp | 343 |
2 files changed, 249 insertions, 101 deletions
diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp index 564833db..5c0ac699 100644 --- a/test/unit/test_c_api.cpp +++ b/test/unit/test_c_api.cpp @@ -3792,8 +3792,8 @@ TEST_F(CApi, proj_get_scope) { auto scope = proj_get_scope(co); ASSERT_NE(scope, nullptr); EXPECT_EQ(scope, - std::string("Conformal transformation of GDA94 coordinates " - "that have been derived through GNSS CORS.")); + std::string("Transformation of GDA94 coordinates that have " + "been derived through GNSS CORS.")); } // Conversion @@ -3807,8 +3807,7 @@ TEST_F(CApi, proj_get_scope) { auto scope = proj_get_scope(co); ASSERT_NE(scope, nullptr); EXPECT_EQ(scope, - std::string("Large and medium scale topographic mapping " - "and engineering survey.")); + std::string("Engineering survey, topographic mapping.")); } { diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp index c34723f2..8881402c 100644 --- a/test/unit/test_factory.cpp +++ b/test/unit/test_factory.cpp @@ -835,14 +835,14 @@ TEST(factory, AuthorityFactory_createCoordinateOperation_helmert_15_CF) { " ID[\"EPSG\",1047]],\n" " OPERATIONACCURACY[0.03],\n" " USAGE[\n" - " SCOPE[\"Geodesy. RMS residuals 5mm north, 8mm east and 28mm " - "vertical, maximum residuals 10mm north, 13mm east and 51mm " - "vertical.\"],\n" + " SCOPE[\"Geodesy.\"],\n" " AREA[\"Australia - onshore and EEZ\"],\n" " BBOX[-47.2,109.23,-8.88,163.2]],\n" " ID[\"EPSG\",6276],\n" - " REMARK[\"Scale difference in ppb and scale difference rate in " - "ppb/yr where 1/billion = 1E-9 or nm/m.\"]]"; + " REMARK[\"RMS residuals 5mm north, 8mm east and 28mm vertical, " + "maximum residuals 10mm north, 13mm east and 51mm vertical. Scale " + "difference in ppb and scale difference rate in ppb/yr where " + "1/billion = 1E-9 or nm/m.\"]]"; EXPECT_EQ( op->exportToWKT( @@ -943,12 +943,12 @@ TEST( "file\",\"RGNC1991_NEA74Noumea.gsb\"],\n" " OPERATIONACCURACY[0.05],\n" " USAGE[\n" - " SCOPE[\"Accuracy 5-10cm.\"],\n" + " SCOPE[\"Geodesy.\"],\n" " AREA[\"New Caledonia - Grande Terre - Noumea\"],\n" " BBOX[-22.37,166.35,-22.19,166.54]],\n" " ID[\"EPSG\",1295],\n" " REMARK[\"Emulation using NTv2 method of tfm NEA74 Noumea to " - "RGNC91-93 (3) (code 9328). Note reversal of sign of parameter values " + "RGNC91-93 (3) (code 15943). Note reversal of sign of parameter values " "in grid file.\"]]"; EXPECT_EQ( op->exportToWKT( @@ -1415,11 +1415,14 @@ class FactoryWithTmpDatabase : public ::testing::Test { "0);")) << last_error(); ASSERT_TRUE( - execute("INSERT INTO area " + execute("INSERT INTO extent " "VALUES('EPSG','1262','World','World.',-90.0,90.0,-180." "0,180.0,0);")) << last_error(); ASSERT_TRUE( + execute("INSERT INTO scope VALUES('EPSG','1024','Not known.',0);")) + << last_error(); + ASSERT_TRUE( execute("INSERT INTO prime_meridian " "VALUES('EPSG','8901','Greenwich',0.0,'EPSG','9102',0);")) << last_error(); @@ -1434,12 +1437,20 @@ class FactoryWithTmpDatabase : public ::testing::Test { << last_error(); ASSERT_TRUE( execute("INSERT INTO geodetic_datum " - "VALUES('EPSG','6326','World Geodetic System 1984','',NULL," - "'EPSG','7030','EPSG','8901','EPSG','1262',NULL,0);")) + "VALUES('EPSG','6326','World Geodetic System 1984',''," + "'EPSG','7030','EPSG','8901',NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('EPSG'," + "'geodetic_datum_6326_usage','geodetic_datum'," + "'EPSG','6326','EPSG','1262','EPSG','1024');")) << last_error(); ASSERT_TRUE( execute("INSERT INTO vertical_datum VALUES('EPSG','1027','EGM2008 " - "geoid',NULL,NULL,'EPSG','1262',NULL,0);")) + "geoid',NULL,NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('EPSG'," + "'vertical_datum_1027_usage','vertical_datum'," + "'EPSG','1027','EPSG','1262','EPSG','1024');")) << last_error(); ASSERT_TRUE(execute("INSERT INTO coordinate_system " "VALUES('EPSG','6422','ellipsoidal',2);")) @@ -1454,8 +1465,12 @@ class FactoryWithTmpDatabase : public ::testing::Test { << last_error(); ASSERT_TRUE( execute("INSERT INTO geodetic_crs VALUES('EPSG','4326','WGS " - "84',NULL,NULL,'geographic " - "2D','EPSG','6422','EPSG','6326','EPSG','1262',NULL,0);")) + "84',NULL,'geographic " + "2D','EPSG','6422','EPSG','6326',NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('EPSG'," + "'geodetic_crs4326_usage','geodetic_crs'," + "'EPSG','4326','EPSG','1262','EPSG','1024');")) << last_error(); ASSERT_TRUE(execute("INSERT INTO coordinate_system " @@ -1467,8 +1482,11 @@ class FactoryWithTmpDatabase : public ::testing::Test { << last_error(); ASSERT_TRUE( execute("INSERT INTO vertical_crs VALUES('EPSG','3855','EGM2008 " - "height',NULL,NULL,'EPSG','6499','EPSG','1027','EPSG'," - "'1262',0);")) + "height',NULL,'EPSG','6499','EPSG','1027',0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('EPSG'," + "'vertical_crs3855_usage','vertical_crs'," + "'EPSG','3855','EPSG','1262','EPSG','1024');")) << last_error(); ASSERT_TRUE(execute("INSERT INTO unit_of_measure " @@ -1477,13 +1495,13 @@ class FactoryWithTmpDatabase : public ::testing::Test { << last_error(); ASSERT_TRUE(execute( - "INSERT INTO area VALUES('EPSG','1933','World - N hemisphere - " + "INSERT INTO extent VALUES('EPSG','1933','World - N hemisphere - " "0°E to 6°E','',0.0,84.0,0.0,6.0,0);")) << last_error(); ASSERT_TRUE(execute( "INSERT INTO conversion VALUES('EPSG','16031','UTM zone " - "31N',NULL,NULL,'EPSG','1933','EPSG','9807','Transverse " + "31N',NULL,'EPSG','9807','Transverse " "Mercator','EPSG','8801','Latitude " "of " "natural origin',0.0,'EPSG','9102','EPSG','8802','Longitude of " @@ -1495,9 +1513,13 @@ class FactoryWithTmpDatabase : public ::testing::Test { "NULL," "NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('EPSG'," + "'conversion16031_usage','conversion'," + "'EPSG','16031','EPSG','1933','EPSG','1024');")) + << last_error(); ASSERT_TRUE(execute( - "INSERT INTO area VALUES('EPSG','2060','World - N hemisphere - " + "INSERT INTO extent VALUES('EPSG','2060','World - N hemisphere - " "0°E to 6°E - by country','',0.0,84.0,0.0,6.0,0);")) << last_error(); @@ -1517,36 +1539,56 @@ class FactoryWithTmpDatabase : public ::testing::Test { ASSERT_TRUE(execute("INSERT INTO projected_crs " "VALUES('EPSG','32631','WGS 84 / UTM zone " - "31N',NULL,NULL,'EPSG','4400','EPSG','4326'," - "'EPSG','16031','" - "EPSG','2060',NULL,0);")) + "31N',NULL,'EPSG','4400','EPSG','4326'," + "'EPSG','16031',NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('EPSG'," + "'projected_crs32631_usage','projected_crs'," + "'EPSG','32631','EPSG','2060','EPSG','1024');")) << last_error(); ASSERT_TRUE(execute( "INSERT INTO compound_crs VALUES('EPSG','MY_COMPOUND','WGS 84 + " - "EGM2008 geoid height',NULL,NULL,'EPSG','4326','EPSG','3855'," - "'EPSG','1262',0);")) + "EGM2008 geoid height',NULL,'EPSG','4326','EPSG','3855',0);")) + << last_error(); + ASSERT_TRUE( + execute("INSERT INTO usage VALUES('EPSG'," + "'compound_crsMY_COMPOUND_usage','compound_crs'," + "'EPSG','MY_COMPOUND','EPSG','1262','EPSG','1024');")) << last_error(); ASSERT_TRUE(execute( "INSERT INTO helmert_transformation " - "VALUES('EPSG','DUMMY_HELMERT','name',NULL,NULL,'EPSG','9603','" + "VALUES('EPSG','DUMMY_HELMERT','name',NULL,'EPSG','9603','" "Geocentric translations (geog2D domain)','EPSG','4326'," - "'EPSG','4326','EPSG','1262',44.0,-143." + "'EPSG','4326',44.0,-143." "0,-90.0,-294.0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE( + execute("INSERT INTO usage VALUES('EPSG'," + "'helmert_transformation_DUMMY_HELMERT_usage'," + "'helmert_transformation'," + "'EPSG','DUMMY_HELMERT','EPSG','1262','EPSG','1024');")) + << last_error(); ASSERT_TRUE(execute( "INSERT INTO grid_transformation " - "VALUES('EPSG','DUMMY_GRID_TRANSFORMATION','name',NULL,NULL," + "VALUES('EPSG','DUMMY_GRID_TRANSFORMATION','name',NULL," "'EPSG','9615'" - ",'NTv2','EPSG','4326','EPSG','4326','EPSG','1262',1.0,'EPSG','" + ",'NTv2','EPSG','4326','EPSG','4326',1.0,'EPSG','" "8656','Latitude and longitude difference " "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL," "0);")) << last_error(); + ASSERT_TRUE( + execute("INSERT INTO usage VALUES('EPSG'," + "'grid_transformation_DUMMY_GRID_TRANSFORMATION_usage'," + "'grid_transformation'," + "'EPSG','DUMMY_GRID_TRANSFORMATION'," + "'EPSG','1262','EPSG','1024');")) + << last_error(); ASSERT_TRUE(execute( "INSERT INTO unit_of_measure VALUES('EPSG','9110','sexagesimal " @@ -1555,21 +1597,33 @@ class FactoryWithTmpDatabase : public ::testing::Test { ASSERT_TRUE(execute( "INSERT INTO other_transformation " - "VALUES('EPSG','DUMMY_OTHER_TRANSFORMATION','name',NULL,NULL," + "VALUES('EPSG','DUMMY_OTHER_TRANSFORMATION','name',NULL," "'EPSG','9601','Longitude rotation'," - "'EPSG','4326','EPSG','4326','EPSG','1262',0.0,'EPSG'" + "'EPSG','4326','EPSG','4326',0.0,'EPSG'" ",'8602','Longitude " "offset',-17.4,'EPSG','9110',NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) << last_error(); - ASSERT_TRUE( - execute("INSERT INTO concatenated_operation " - "VALUES('EPSG','DUMMY_CONCATENATED','name',NULL,NULL," - "'EPSG','4326','EPSG'" - ",'4326','EPSG','1262',NULL,NULL,0);")) + execute("INSERT INTO usage VALUES('EPSG'," + "'other_transformation_DUMMY_OTHER_TRANSFORMATION_usage'," + "'other_transformation'," + "'EPSG','DUMMY_OTHER_TRANSFORMATION'," + "'EPSG','1262','EPSG','1024');")) + << last_error(); + + ASSERT_TRUE(execute("INSERT INTO concatenated_operation " + "VALUES('EPSG','DUMMY_CONCATENATED','name',NULL," + "'EPSG','4326','EPSG'" + ",'4326',NULL,NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('EPSG'," + "'concatenated_operation_DUMMY_CONCATENATED_usage'," + "'concatenated_operation'," + "'EPSG','DUMMY_CONCATENATED'," + "'EPSG','1262','EPSG','1024');")) << last_error(); ASSERT_TRUE(execute("INSERT INTO concatenated_operation_step " @@ -1587,20 +1641,35 @@ class FactoryWithTmpDatabase : public ::testing::Test { const auto vals = std::vector<std::string>{"SOURCE", "TARGET", "PIVOT"}; for (const auto &val : vals) { - ASSERT_TRUE( - execute("INSERT INTO geodetic_datum " - "VALUES('FOO','" + - val + "','" + val + - "','',NULL," - "'EPSG','7030','EPSG','8901','EPSG','1262',NULL,0);")) + ASSERT_TRUE(execute("INSERT INTO geodetic_datum " + "VALUES('FOO','" + + val + "','" + val + + "',''," + "'EPSG','7030','EPSG','8901',NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('FOO'," + "'geodetic_datum_" + + val + "_usage'," + "'geodetic_datum'," + "'FOO','" + + val + "'," + "'EPSG','1262','EPSG','1024');")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO geodetic_crs " "VALUES('NS_" + val + "','" + val + "','" + val + - "',NULL,NULL,'geographic 2D','EPSG','6422'," + "',NULL,'geographic 2D','EPSG','6422'," "'FOO','" + - val + "'," - "'EPSG','1262',NULL,0);")) + val + "',NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('FOO'," + "'geodetic_crs_" + + val + "_usage'," + "'geodetic_crs'," + "'NS_" + + val + "','" + val + + "','EPSG','1262','EPSG','1024');")) << last_error(); } } @@ -1612,14 +1681,21 @@ class FactoryWithTmpDatabase : public ::testing::Test { "INSERT INTO helmert_transformation " "VALUES('OTHER','" + src + "_" + dst + "','Transformation from " + src + " to " + dst + - "',NULL,NULL,'EPSG','9603','" + "',NULL,'EPSG','9603','" "Geocentric translations (geog2D domain)','NS_" + src + "','" + src + "','NS_" + dst + "','" + dst + - "','EPSG'" - ",'1262',1.0,0,0,0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL," + "',1.0,0,0,0,'EPSG','9001',NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER'," + "'helmert_transformation" + + src + '_' + dst + "_usage'," + "'helmert_transformation'," + "'OTHER','" + + src + "_" + dst + "'," + "'EPSG','1262','EPSG','1024');")) + << last_error(); } void checkSourceToOther() { @@ -1886,14 +1962,22 @@ TEST_F(FactoryWithTmpDatabase, ASSERT_TRUE( execute("INSERT INTO geodetic_crs VALUES('OTHER','OTHER_4326','WGS " - "84',NULL,NULL,'geographic " - "2D','EPSG','6422','EPSG','6326','EPSG','1262',NULL,0);")) + "84',NULL,'geographic " + "2D','EPSG','6422','EPSG','6326',NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER'," + "'geodetic_crs_OTHER_4326_usage','geodetic_crs'," + "'OTHER','OTHER_4326','EPSG','1262','EPSG','1024');")) << last_error(); ASSERT_TRUE(execute("INSERT INTO projected_crs " "VALUES('OTHER','OTHER_32631','WGS 84 / UTM zone " - "31N',NULL,NULL,'EPSG','4400','OTHER','OTHER_4326'," - "'EPSG','16031','EPSG','2060',NULL,0);")) + "31N',NULL,'EPSG','4400','OTHER','OTHER_4326'," + "'EPSG','16031',NULL,0);")) + << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER'," + "'projected_crs_OTHER_32631_usage','projected_crs'," + "'OTHER','OTHER_32631','EPSG','2060','EPSG','1024');")) << last_error(); auto factoryGeneral = AuthorityFactory::create( @@ -1924,12 +2008,19 @@ TEST_F(FactoryWithTmpDatabase, ASSERT_TRUE(execute( "INSERT INTO grid_transformation " - "VALUES('OTHER','OTHER_GRID_TRANSFORMATION','name',NULL,NULL," + "VALUES('OTHER','OTHER_GRID_TRANSFORMATION','name',NULL," "'EPSG','9615'" - ",'NTv2','EPSG','4326','OTHER','OTHER_4326','EPSG','1262',1.0,'EPSG','" + ",'NTv2','EPSG','4326','OTHER','OTHER_4326',1.0,'EPSG','" "8656','Latitude and longitude difference " "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute( + "INSERT INTO usage VALUES('OTHER'," + "'grid_transformation_OTHER_GRID_TRANSFORMATION_usage'," + "'grid_transformation'," + "'OTHER','OTHER_GRID_TRANSFORMATION','EPSG','1262','EPSG','1024');")) + << last_error(); + { auto res = factoryGeneral->createFromCoordinateReferenceSystemCodes( "EPSG", "4326", "OTHER", "OTHER_4326", false, false, false, false); @@ -1956,41 +2047,67 @@ TEST_F(FactoryWithTmpDatabase, ASSERT_TRUE(execute( "INSERT INTO grid_transformation " - "VALUES('OTHER','TRANSFORMATION_10M','TRANSFORMATION_10M',NULL,NULL," + "VALUES('OTHER','TRANSFORMATION_10M','TRANSFORMATION_10M',NULL," "'EPSG','9615'" - ",'NTv2','EPSG','4326','EPSG','4326','EPSG','1262',10.0,'EPSG','" + ",'NTv2','EPSG','4326','EPSG','4326',10.0,'EPSG','" "8656','Latitude and longitude difference " "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE( + execute("INSERT INTO usage VALUES('OTHER'," + "'grid_transformation_TTRANSFORMATION_10M_usage'," + "'grid_transformation'," + "'OTHER','TRANSFORMATION_10M','EPSG','1262','EPSG','1024');")) + << last_error(); ASSERT_TRUE( execute("INSERT INTO grid_transformation " "VALUES('OTHER','TRANSFORMATION_1M_SMALL_EXTENT','" - "TRANSFORMATION_1M_SMALL_EXTENT',NULL,NULL,'EPSG','9615'" - ",'NTv2','EPSG','4326','EPSG','4326','EPSG','2060',1.0,'EPSG','" + "TRANSFORMATION_1M_SMALL_EXTENT',NULL,'EPSG','9615'" + ",'NTv2','EPSG','4326','EPSG','4326',1.0,'EPSG','" "8656','Latitude and longitude difference " "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL," "NULL,0);")) << last_error(); + ASSERT_TRUE( + execute("INSERT INTO usage VALUES('OTHER'," + "'grid_transformation_TRANSFORMATION_1M_SMALL_EXTENT_usage'," + "'grid_transformation'," + "'OTHER','TRANSFORMATION_1M_SMALL_EXTENT'," + "'EPSG','2060','EPSG','1024');")) + << last_error(); ASSERT_TRUE(execute( "INSERT INTO grid_transformation " - "VALUES('OTHER','TRANSFORMATION_1M','TRANSFORMATION_1M',NULL,NULL," + "VALUES('OTHER','TRANSFORMATION_1M','TRANSFORMATION_1M',NULL," "'EPSG','9615'" - ",'NTv2','EPSG','4326','EPSG','4326','EPSG','1262',1.0,'EPSG','" + ",'NTv2','EPSG','4326','EPSG','4326',1.0,'EPSG','" "8656','Latitude and longitude difference " "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE( + execute("INSERT INTO usage VALUES('OTHER'," + "'grid_transformation_TRANSFORMATION_1M_usage'," + "'grid_transformation'," + "'OTHER','TRANSFORMATION_1M','EPSG','1262','EPSG','1024');")) + << last_error(); ASSERT_TRUE( execute("INSERT INTO grid_transformation " "VALUES('OTHER','TRANSFORMATION_0.5M_DEPRECATED','" - "TRANSFORMATION_0.5M_DEPRECATED',NULL,NULL,'EPSG','9615'" - ",'NTv2','EPSG','4326','EPSG','4326','EPSG','1262',1.0,'EPSG','" + "TRANSFORMATION_0.5M_DEPRECATED',NULL,'EPSG','9615'" + ",'NTv2','EPSG','4326','EPSG','4326',1.0,'EPSG','" "8656','Latitude and longitude difference " "file','nzgd2kgrid0005.gsb',NULL,NULL,NULL,NULL,NULL,NULL," "NULL,1);")) << last_error(); + ASSERT_TRUE( + execute("INSERT INTO usage VALUES('OTHER'," + "'grid_transformation_TRANSFORMATION_0.5M_DEPRECATED_usage'," + "'grid_transformation'," + "'OTHER','TRANSFORMATION_0.5M_DEPRECATED'," + "'EPSG','1262','EPSG','1024');")) + << last_error(); auto factoryOTHER = AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); @@ -2086,14 +2203,20 @@ TEST_F(FactoryWithTmpDatabase, AuthorityFactory_proj_based_transformation) { ASSERT_TRUE(execute( "INSERT INTO other_transformation " - "VALUES('OTHER','FOO','My PROJ string based op',NULL,NULL,'PROJ'," + "VALUES('OTHER','FOO','My PROJ string based op',NULL,'PROJ'," "'PROJString','+proj=pipeline +ellps=WGS84 +step +proj=longlat'," - "'EPSG','4326','EPSG','4326','EPSG','1262',0.0,NULL,NULL,NULL," + "'EPSG','4326','EPSG','4326',0.0,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER'," + "'other_transformation_FOO_usage'," + "'other_transformation'," + "'OTHER','FOO'," + "'EPSG','1262','EPSG','1024');")) + << last_error(); auto factoryOTHER = AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); @@ -2145,16 +2268,22 @@ TEST_F(FactoryWithTmpDatabase, AuthorityFactory_wkt_based_transformation) { ASSERT_TRUE( execute("INSERT INTO other_transformation " - "VALUES('OTHER','FOO','My WKT string based op',NULL,NULL," + "VALUES('OTHER','FOO','My WKT string based op',NULL," "'PROJ','WKT','" + std::string(wkt) + "'," - "'EPSG','4326','EPSG','4326','EPSG','1262',0.0,NULL,NULL,NULL," + "'EPSG','4326','EPSG','4326',0.0,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER'," + "'other_transformation_FOO_usage'," + "'other_transformation'," + "'OTHER','FOO'," + "'EPSG','1262','EPSG','1024');")) + << last_error(); auto factoryOTHER = AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); @@ -2180,16 +2309,22 @@ TEST_F(FactoryWithTmpDatabase, ASSERT_TRUE( execute("INSERT INTO other_transformation " - "VALUES('OTHER','FOO','My WKT string based op',NULL,NULL," + "VALUES('OTHER','FOO','My WKT string based op',NULL," "'PROJ','WKT','" + std::string("invalid_wkt") + "'," - "'EPSG','4326','EPSG','4326','EPSG','1262',0.0,NULL,NULL,NULL," + "'EPSG','4326','EPSG','4326',0.0,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER'," + "'other_transformation_FOO_usage'," + "'other_transformation'," + "'OTHER','FOO'," + "'EPSG','1262','EPSG','1024');")) + << last_error(); auto factoryOTHER = AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); @@ -2208,16 +2343,22 @@ TEST_F(FactoryWithTmpDatabase, ASSERT_TRUE( execute("INSERT INTO other_transformation " - "VALUES('OTHER','FOO','My WKT string based op',NULL,NULL," + "VALUES('OTHER','FOO','My WKT string based op',NULL," "'PROJ','WKT','" + std::string("LOCAL_CS[\"foo\"]") + "'," - "'EPSG','4326','EPSG','4326','EPSG','1262',0.0,NULL,NULL,NULL," + "'EPSG','4326','EPSG','4326',0.0,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER'," + "'other_transformation_FOO_usage'," + "'other_transformation'," + "'OTHER','FOO'," + "'EPSG','1262','EPSG','1024');")) + << last_error(); auto factoryOTHER = AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); @@ -2297,40 +2438,40 @@ TEST_F(FactoryWithTmpDatabase, custom_geodetic_crs) { populateWithFakeEPSG(); ASSERT_TRUE(execute("INSERT INTO geodetic_crs VALUES('TEST_NS','TEST','my " - "name TEST',NULL,NULL,'geographic 2D'," - "NULL,NULL,NULL,NULL,NULL,NULL,'+proj=longlat +a=2 " + "name TEST',NULL,'geographic 2D'," + "NULL,NULL,NULL,NULL,'+proj=longlat +a=2 " "+rf=300',0);")) << last_error(); ASSERT_TRUE(execute("INSERT INTO geodetic_crs VALUES" "('TEST_NS','TEST_BOUND'," - "'my name TEST',NULL,NULL,'geographic 2D'," - "NULL,NULL,NULL,NULL,NULL,NULL,'+proj=longlat +a=2 " + "'my name TEST',NULL,'geographic 2D'," + "NULL,NULL,NULL,NULL,'+proj=longlat +a=2 " "+rf=300 +towgs84=1,2,3',0);")) << last_error(); ASSERT_TRUE(execute("INSERT INTO geodetic_crs VALUES('TEST_NS','TEST_GC'," - "'my name',NULL,NULL,'geocentric',NULL,NULL,NULL,NULL," + "'my name',NULL,'geocentric',NULL,NULL," "NULL,NULL,'+proj=geocent +a=2 +rf=300',0);")) << last_error(); ASSERT_TRUE(execute( "INSERT INTO geodetic_crs " "VALUES('TEST_NS','TEST_REF_ANOTHER','my name TEST_REF_ANOTHER'," - "NULL,NULL," - "'geographic 2D',NULL,NULL,NULL,NULL,NULL,NULL,'TEST_NS:TEST',0);")) + "NULL," + "'geographic 2D',NULL,NULL,NULL,NULL,'TEST_NS:TEST',0);")) << last_error(); ASSERT_TRUE(execute("INSERT INTO geodetic_crs " - "VALUES('TEST_NS','TEST_WRONG','my name',NULL,NULL," - "'geographic 2D',NULL,NULL,NULL,NULL,NULL,NULL," + "VALUES('TEST_NS','TEST_WRONG','my name',NULL," + "'geographic 2D',NULL,NULL,NULL,NULL," "'+proj=merc',0);")) << last_error(); ASSERT_TRUE(execute( "INSERT INTO geodetic_crs " - "VALUES('TEST_NS','TEST_RECURSIVE','my name',NULL,NULL,'geographic 2D'," - "NULL,NULL,NULL,NULL,NULL,NULL,'TEST_NS:TEST_RECURSIVE',0);")) + "VALUES('TEST_NS','TEST_RECURSIVE','my name',NULL,'geographic 2D'," + "NULL,NULL,NULL,NULL,'TEST_NS:TEST_RECURSIVE',0);")) << last_error(); auto factory = @@ -2383,42 +2524,42 @@ TEST_F(FactoryWithTmpDatabase, custom_projected_crs) { populateWithFakeEPSG(); ASSERT_TRUE(execute("INSERT INTO projected_crs " - "VALUES('TEST_NS','TEST','my name',NULL,NULL,NULL," - "NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "VALUES('TEST_NS','TEST','my name',NULL,NULL," + "NULL,NULL,NULL,NULL,NULL," "'+proj=mbt_s +unused_flag',0);")) << last_error(); ASSERT_TRUE(execute("INSERT INTO projected_crs " - "VALUES('TEST_NS','TEST_BOUND','my name',NULL,NULL," - "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "VALUES('TEST_NS','TEST_BOUND','my name',NULL," + "NULL,NULL,NULL,NULL,NULL,NULL," "'+proj=mbt_s +unused_flag +towgs84=1,2,3',0);")) << last_error(); ASSERT_TRUE(execute("INSERT INTO projected_crs " - "VALUES('TEST_NS','TEST_WRONG','my name',NULL,NULL," - "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "VALUES('TEST_NS','TEST_WRONG','my name',NULL," + "NULL,NULL,NULL,NULL,NULL,NULL," "'+proj=longlat',0);")) << last_error(); // Unknown ellipsoid ASSERT_TRUE(execute("INSERT INTO projected_crs " - "VALUES('TEST_NS','TEST_MERC','merc',NULL,NULL,NULL," - "NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "VALUES('TEST_NS','TEST_MERC','merc',NULL,NULL," + "NULL,NULL,NULL,NULL,NULL," "'+proj=merc +x_0=0 +R=1',0);")) << last_error(); // Well-known ellipsoid ASSERT_TRUE(execute("INSERT INTO projected_crs " - "VALUES('TEST_NS','TEST_MERC2','merc2',NULL,NULL,NULL," - "NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "VALUES('TEST_NS','TEST_MERC2','merc2',NULL,NULL," + "NULL,NULL,NULL,NULL,NULL," "'+proj=merc +x_0=0 +ellps=GRS80',0);")) << last_error(); // WKT1_GDAL ASSERT_TRUE( execute("INSERT INTO projected_crs " - "VALUES('TEST_NS','TEST_WKT1_GDAL','WKT1_GDAL',NULL,NULL,NULL," - "NULL,NULL,NULL,NULL,NULL,NULL,NULL," + "VALUES('TEST_NS','TEST_WKT1_GDAL','WKT1_GDAL',NULL,NULL," + "NULL,NULL,NULL,NULL,NULL," "'" "PROJCS[\"unknown\",\n" " GEOGCS[\"unknown\",\n" @@ -2578,8 +2719,8 @@ TEST(factory, attachExtraDatabases_auxiliary) { sqlite3_exec( dbAux, "INSERT INTO geodetic_crs VALUES('OTHER','OTHER_4326','WGS " - "84',NULL,NULL,'geographic 2D','EPSG','6422','EPSG','6326'," - "'EPSG','1262',NULL,0);", + "84',NULL,'geographic 2D','EPSG','6422','EPSG','6326'," + "NULL,0);", nullptr, nullptr, nullptr) == SQLITE_OK); ASSERT_TRUE(sqlite3_exec(dbAux, "COMMIT", nullptr, nullptr, nullptr) == SQLITE_OK); @@ -2704,26 +2845,34 @@ TEST_F(FactoryWithTmpDatabase, ASSERT_TRUE( execute("INSERT INTO other_transformation " "VALUES('OTHER','PARTIAL_AREA_PERFECT_ACCURACY'," - "'PARTIAL_AREA_PERFECT_ACCURACY',NULL,NULL,'PROJ'," + "'PARTIAL_AREA_PERFECT_ACCURACY',NULL,'PROJ'," "'PROJString','+proj=helmert +x=1'," - "'EPSG','4326','EPSG','4326','EPSG','1933',0.0,NULL,NULL,NULL," + "'EPSG','4326','EPSG','4326',0.0,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER', " + "'1','other_transformation','OTHER','PARTIAL_AREA_" + "PERFECT_ACCURACY','EPSG','1933','EPSG','1024')")) + << last_error(); ASSERT_TRUE( execute("INSERT INTO other_transformation " "VALUES('OTHER','WHOLE_AREA_APPROX_ACCURACY'," - "'WHOLE_AREA_APPROX_ACCURACY',NULL,NULL,'PROJ'," + "'WHOLE_AREA_APPROX_ACCURACY',NULL,'PROJ'," "'PROJString','+proj=helmert +x=2'," - "'EPSG','4326','EPSG','4326','EPSG','1262',1.0,NULL,NULL,NULL," + "'EPSG','4326','EPSG','4326',1.0,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL," "NULL,NULL,NULL,NULL,NULL,NULL,NULL,0);")) << last_error(); + ASSERT_TRUE(execute("INSERT INTO usage VALUES('OTHER', " + "'2','other_transformation','OTHER','WHOLE_AREA_APPROX_" + "ACCURACY','EPSG','1262','EPSG','1024')")) + << last_error(); auto dbContext = DatabaseContext::create(m_ctxt); auto authFactory = |
