From 2db54cc09a6587eba855aebac05baa1ae5130c2c Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Fri, 17 Sep 2021 19:19:37 +0200 Subject: Database: add a 'anchor' field to geodetic_datum and vertical_datum tables Update database layout version number to 1.2 consequently This new capability will be used by IAU planetary CRS (refs #2601) --- test/cli/testprojinfo_out.dist | 4 ++-- test/unit/test_c_api.cpp | 4 ++-- test/unit/test_factory.cpp | 28 ++++++++++++++++++---------- 3 files changed, 22 insertions(+), 14 deletions(-) (limited to 'test') diff --git a/test/cli/testprojinfo_out.dist b/test/cli/testprojinfo_out.dist index 2cb30c63..b90774f7 100644 --- a/test/cli/testprojinfo_out.dist +++ b/test/cli/testprojinfo_out.dist @@ -262,7 +262,7 @@ INSERT INTO usage VALUES('HOBU','USAGE_PROJECTED_CRS_MY_CRS','projected_crs','HO Testing projinfo "+proj=merc +lat_ts=5 +datum=WGS84 +type=crs" --output-id HOBU:MY_CRS --authority HOBU -o SQL -q INSERT INTO ellipsoid VALUES('HOBU','ELLPS_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','WGS 84','','PROJ','EARTH',6378137,'EPSG','9001',298.257223563,NULL,0); INSERT INTO prime_meridian VALUES('HOBU','PM_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','Greenwich',0,'EPSG','9122',0); -INSERT INTO geodetic_datum VALUES('HOBU','GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','World Geodetic System 1984','','HOBU','ELLPS_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','HOBU','PM_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS',NULL,NULL,NULL,0); +INSERT INTO geodetic_datum VALUES('HOBU','GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','World Geodetic System 1984','','HOBU','ELLPS_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','HOBU','PM_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS',NULL,NULL,NULL,NULL,0); INSERT INTO usage VALUES('HOBU','USAGE_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','geodetic_datum','HOBU','GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); INSERT INTO geodetic_crs VALUES('HOBU','GEODETIC_CRS_MY_CRS','unknown','','geographic 2D','EPSG','6424','HOBU','GEODETIC_DATUM_GEODETIC_CRS_MY_CRS',NULL,0); INSERT INTO usage VALUES('HOBU','USAGE_GEODETIC_CRS_MY_CRS','geodetic_crs','HOBU','GEODETIC_CRS_MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN'); @@ -1567,7 +1567,7 @@ CREATE TABLE unit_of_measure( Testing projinfo --dump-db-structure --output-id HOBU:XXXX EPSG:4326 | tail -n 4 INSERT INTO metadata VALUES('DATABASE.LAYOUT.VERSION.MAJOR',1); -INSERT INTO metadata VALUES('DATABASE.LAYOUT.VERSION.MINOR',1); +INSERT INTO metadata VALUES('DATABASE.LAYOUT.VERSION.MINOR',2); INSERT INTO geodetic_crs VALUES('HOBU','XXXX','WGS 84','','geographic 2D','EPSG','6422','EPSG','6326',NULL,0); INSERT INTO usage VALUES('HOBU','USAGE_GEODETIC_CRS_XXXX','geodetic_crs','HOBU','XXXX','EPSG','1262','EPSG','1183'); diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp index 4898345c..05e99237 100644 --- a/test/unit/test_c_api.cpp +++ b/test/unit/test_c_api.cpp @@ -5579,7 +5579,7 @@ TEST_F(CApi, proj_get_insert_statements) { EXPECT_EQ(std::string(list[0]), "INSERT INTO geodetic_datum VALUES('HOBU'," "'GEODETIC_DATUM_XXXX','GDA2020','','EPSG','7019'," - "'EPSG','8901',NULL,NULL,NULL,0);"); + "'EPSG','8901',NULL,NULL,NULL,NULL,0);"); EXPECT_EQ(sizeOfStringList(list), 4); proj_string_list_destroy(list); } @@ -5627,7 +5627,7 @@ TEST_F(CApi, proj_get_insert_statements) { EXPECT_EQ(std::string(list[0]), "INSERT INTO geodetic_datum VALUES('HOBU'," "'GEODETIC_DATUM_XXXX','GDA2020','','EPSG','7019'," - "'EPSG','8901',NULL,NULL,NULL,0);"); + "'EPSG','8901',NULL,NULL,NULL,NULL,0);"); proj_string_list_destroy(list); } diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp index 1ecea9d6..50a4b971 100644 --- a/test/unit/test_factory.cpp +++ b/test/unit/test_factory.cpp @@ -1619,7 +1619,8 @@ class FactoryWithTmpDatabase : public ::testing::Test { ASSERT_TRUE( execute("INSERT INTO geodetic_datum " "VALUES('EPSG','6326','World Geodetic System 1984',''," - "'EPSG','7030','EPSG','8901',NULL,NULL,NULL,0);")) + "'EPSG','7030','EPSG','8901',NULL,NULL,NULL," + "'my anchor',0);")) << last_error(); ASSERT_TRUE(execute("INSERT INTO usage VALUES('EPSG'," "'geodetic_datum_6326_usage','geodetic_datum'," @@ -1627,7 +1628,7 @@ class FactoryWithTmpDatabase : public ::testing::Test { << last_error(); ASSERT_TRUE( execute("INSERT INTO vertical_datum VALUES('EPSG','1027','EGM2008 " - "geoid',NULL,NULL,NULL,NULL,0);")) + "geoid',NULL,NULL,NULL,NULL,'my anchor',0);")) << last_error(); ASSERT_TRUE(execute("INSERT INTO usage VALUES('EPSG'," "'vertical_datum_1027_usage','vertical_datum'," @@ -1827,7 +1828,7 @@ class FactoryWithTmpDatabase : public ::testing::Test { val + "','" + val + "',''," "'EPSG','7030','EPSG','8901'," - "NULL,NULL,NULL,0);")) + "NULL,NULL,NULL,NULL,0);")) << last_error(); ASSERT_TRUE(execute("INSERT INTO usage VALUES('FOO'," "'geodetic_datum_" + @@ -2038,11 +2039,15 @@ TEST_F(FactoryWithTmpDatabase, AuthorityFactory_test_with_fake_EPSG_database) { EXPECT_TRUE(nn_dynamic_pointer_cast( factory->createObject("7030")) != nullptr); - EXPECT_TRUE(nn_dynamic_pointer_cast( - factory->createObject("6326")) != nullptr); + auto grf = nn_dynamic_pointer_cast( + factory->createObject("6326")); + ASSERT_TRUE(grf != nullptr); + EXPECT_EQ(*grf->anchorDefinition(), "my anchor"); - EXPECT_TRUE(nn_dynamic_pointer_cast( - factory->createObject("1027")) != nullptr); + auto vrf = nn_dynamic_pointer_cast( + factory->createObject("1027")); + ASSERT_TRUE(vrf != nullptr); + EXPECT_EQ(*vrf->anchorDefinition(), "my anchor"); EXPECT_TRUE(nn_dynamic_pointer_cast( factory->createObject("4326")) != nullptr); @@ -3876,7 +3881,8 @@ TEST(factory, objectInsertion) { ASSERT_EQ(sql.size(), 4U); EXPECT_EQ(sql[0], "INSERT INTO geodetic_datum VALUES('HOBU','1','my " - "datum','','EPSG','7030','EPSG','8901',NULL,NULL,NULL,0);"); + "datum','','EPSG','7030','EPSG','8901',NULL,NULL,NULL,NULL," + "0);"); const auto identified = crs->identify(AuthorityFactory::create(ctxt, std::string())); ASSERT_EQ(identified.size(), 1U); @@ -3911,7 +3917,8 @@ TEST(factory, objectInsertion) { EXPECT_EQ(sql[0], "INSERT INTO geodetic_datum " "VALUES('HOBU','GEODETIC_DATUM_MY_EPSG_4326','my " - "datum','','EPSG','7030','EPSG','8901',NULL,NULL,NULL,0);"); + "datum','','EPSG','7030','EPSG','8901',NULL,NULL,NULL,NULL," + "0);"); const auto identified = crs->identify(AuthorityFactory::create(ctxt, std::string())); ASSERT_EQ(identified.size(), 1U); @@ -4175,7 +4182,8 @@ TEST(factory, objectInsertion) { ASSERT_EQ(sql.size(), 4U); EXPECT_EQ(sql[0], "INSERT INTO vertical_datum VALUES('HOBU'," - "'VERTICAL_DATUM_XXXX','my datum','',NULL,NULL,NULL,0);"); + "'VERTICAL_DATUM_XXXX','my datum','',NULL,NULL,NULL,NULL," + "0);"); const auto identified = crs->identify(AuthorityFactory::create(ctxt, std::string())); ASSERT_EQ(identified.size(), 1U); -- cgit v1.2.3