aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2021-09-28 14:47:08 +0200
committerEven Rouault <even.rouault@spatialys.com>2021-09-28 14:47:08 +0200
commitf982d9d3104731727c445930bf14008d1c572d0a (patch)
tree1f9a9febc6e759ccee0f120bffaee25b2fe1b3dd /test
parentbc30adc7d84aa07a551391f722c1ab7bcaae60ee (diff)
downloadPROJ-f982d9d3104731727c445930bf14008d1c572d0a.tar.gz
PROJ-f982d9d3104731727c445930bf14008d1c572d0a.zip
Database: add IAU_2015 CRS
Diffstat (limited to 'test')
-rw-r--r--test/cli/testprojinfo_out.dist2
-rw-r--r--test/unit/test_c_api.cpp12
-rw-r--r--test/unit/test_factory.cpp90
3 files changed, 93 insertions, 11 deletions
diff --git a/test/cli/testprojinfo_out.dist b/test/cli/testprojinfo_out.dist
index a21e7501..0c9673a0 100644
--- a/test/cli/testprojinfo_out.dist
+++ b/test/cli/testprojinfo_out.dist
@@ -270,7 +270,7 @@ INSERT INTO projected_crs VALUES('HOBU','MY_CRS','unknown','','EPSG','4400','HOB
INSERT INTO usage VALUES('HOBU','USAGE_PROJECTED_CRS_MY_CRS','projected_crs','HOBU','MY_CRS','PROJ','EXTENT_UNKNOWN','PROJ','SCOPE_UNKNOWN');
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 ellipsoid VALUES('HOBU','ELLPS_GEODETIC_DATUM_GEODETIC_CRS_MY_CRS','WGS 84','','IAU_2015','399',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,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');
diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp
index 1049ce35..aceae656 100644
--- a/test/unit/test_c_api.cpp
+++ b/test/unit/test_c_api.cpp
@@ -1357,14 +1357,16 @@ TEST_F(CApi, proj_get_authorities_from_database) {
ASSERT_TRUE(list[1] != nullptr);
EXPECT_EQ(list[1], std::string("ESRI"));
ASSERT_TRUE(list[2] != nullptr);
- EXPECT_EQ(list[2], std::string("IGNF"));
+ EXPECT_EQ(list[2], std::string("IAU_2015"));
ASSERT_TRUE(list[3] != nullptr);
- EXPECT_EQ(list[3], std::string("NKG"));
+ EXPECT_EQ(list[3], std::string("IGNF"));
ASSERT_TRUE(list[4] != nullptr);
- EXPECT_EQ(list[4], std::string("OGC"));
+ EXPECT_EQ(list[4], std::string("NKG"));
ASSERT_TRUE(list[5] != nullptr);
- EXPECT_EQ(list[5], std::string("PROJ"));
- EXPECT_EQ(list[6], nullptr);
+ EXPECT_EQ(list[5], std::string("OGC"));
+ ASSERT_TRUE(list[6] != nullptr);
+ EXPECT_EQ(list[6], std::string("PROJ"));
+ EXPECT_EQ(list[7], nullptr);
}
// ---------------------------------------------------------------------------
diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp
index 9319968d..a3156faf 100644
--- a/test/unit/test_factory.cpp
+++ b/test/unit/test_factory.cpp
@@ -1561,6 +1561,86 @@ TEST(factory, AuthorityFactory_getDescriptionText) {
// ---------------------------------------------------------------------------
+TEST(factory, AuthorityFactory_IAU_2015) {
+ auto factory =
+ AuthorityFactory::create(DatabaseContext::create(), "IAU_2015");
+
+ {
+ auto crs = factory->createGeographicCRS("19900");
+ EXPECT_EQ(crs->nameStr(), "Mercury (2015) - Sphere / Ocentric");
+
+ const auto ellps = crs->ellipsoid();
+ EXPECT_TRUE(ellps->isSphere());
+ EXPECT_NEAR(ellps->semiMajorAxis().value(), 2440530.0, 1e-6);
+
+ const auto &axisList = crs->coordinateSystem()->axisList();
+ EXPECT_EQ(axisList.size(), 2U);
+
+ EXPECT_EQ(*(axisList[0]->name()->description()), "Geodetic latitude");
+ EXPECT_EQ(axisList[0]->abbreviation(), "Lat");
+ EXPECT_EQ(axisList[0]->direction(), AxisDirection::NORTH);
+ EXPECT_EQ(axisList[0]->unit(), UnitOfMeasure::DEGREE);
+
+ EXPECT_EQ(*(axisList[1]->name()->description()), "Geodetic longitude");
+ EXPECT_EQ(axisList[1]->abbreviation(), "Lon");
+ EXPECT_EQ(axisList[1]->direction(), AxisDirection::EAST);
+ EXPECT_EQ(axisList[1]->unit(), UnitOfMeasure::DEGREE);
+ }
+
+ {
+ auto crs = factory->createGeographicCRS("19901");
+ EXPECT_EQ(crs->nameStr(), "Mercury (2015) / Ographic");
+
+ const auto ellps = crs->ellipsoid();
+ EXPECT_TRUE(!ellps->isSphere());
+ EXPECT_NEAR(ellps->semiMajorAxis().value(), 2440530.0, 1e-6);
+ EXPECT_NEAR(ellps->computeSemiMinorAxis().value(), 2438260.0, 1e-6);
+
+ const auto &axisList = crs->coordinateSystem()->axisList();
+ EXPECT_EQ(axisList.size(), 2U);
+
+ EXPECT_EQ(*(axisList[0]->name()->description()), "Geodetic latitude");
+ EXPECT_EQ(axisList[0]->abbreviation(), "Lat");
+ EXPECT_EQ(axisList[0]->direction(), AxisDirection::NORTH);
+ EXPECT_EQ(axisList[0]->unit(), UnitOfMeasure::DEGREE);
+
+ EXPECT_EQ(*(axisList[1]->name()->description()), "Geodetic longitude");
+ EXPECT_EQ(axisList[1]->abbreviation(), "Lon");
+ EXPECT_EQ(axisList[1]->direction(), AxisDirection::WEST); // WEST !
+ EXPECT_EQ(axisList[1]->unit(), UnitOfMeasure::DEGREE);
+ }
+
+ {
+ auto crs = factory->createGeodeticCRS("19902");
+ EXPECT_EQ(crs->nameStr(), "Mercury (2015) / Ocentric");
+ EXPECT_TRUE(dynamic_cast<GeographicCRS *>(crs.get()) == nullptr);
+
+ const auto ellps = crs->ellipsoid();
+ EXPECT_TRUE(!ellps->isSphere());
+ EXPECT_NEAR(ellps->semiMajorAxis().value(), 2440530.0, 1e-6);
+ EXPECT_NEAR(ellps->computeSemiMinorAxis().value(), 2438260.0, 1e-6);
+
+ const auto &cs = crs->coordinateSystem();
+ EXPECT_TRUE(dynamic_cast<SphericalCS *>(cs.get()) != nullptr);
+ const auto &axisList = cs->axisList();
+ EXPECT_EQ(axisList.size(), 2U);
+
+ EXPECT_EQ(*(axisList[0]->name()->description()),
+ "Planetocentric latitude");
+ EXPECT_EQ(axisList[0]->abbreviation(), "U");
+ EXPECT_EQ(axisList[0]->direction(), AxisDirection::NORTH);
+ EXPECT_EQ(axisList[0]->unit(), UnitOfMeasure::DEGREE);
+
+ EXPECT_EQ(*(axisList[1]->name()->description()),
+ "Planetocentric longitude");
+ EXPECT_EQ(axisList[1]->abbreviation(), "V");
+ EXPECT_EQ(axisList[1]->direction(), AxisDirection::EAST);
+ EXPECT_EQ(axisList[1]->unit(), UnitOfMeasure::DEGREE);
+ }
+}
+
+// ---------------------------------------------------------------------------
+
class FactoryWithTmpDatabase : public ::testing::Test {
protected:
void SetUp() override { sqlite3_open(":memory:", &m_ctxt); }
@@ -3950,10 +4030,9 @@ TEST(factory, objectInsertion) {
const auto sql =
ctxt->getInsertStatementsFor(crs, "HOBU", "XXXX", true);
ASSERT_EQ(sql.size(), 5U);
- EXPECT_EQ(
- sql[0],
- "INSERT INTO ellipsoid VALUES('HOBU','1','my "
- "ellipsoid','','PROJ','EARTH',6378137,'EPSG','9001',295,NULL,0);");
+ EXPECT_EQ(sql[0], "INSERT INTO ellipsoid VALUES('HOBU','1','my "
+ "ellipsoid','','IAU_2015','399',6378137,'EPSG','9001'"
+ ",295,NULL,0);");
const auto identified =
crs->identify(AuthorityFactory::create(ctxt, std::string()));
ASSERT_EQ(identified.size(), 1U);
@@ -3986,7 +4065,8 @@ TEST(factory, objectInsertion) {
ASSERT_EQ(sql.size(), 5U);
EXPECT_EQ(sql[0], "INSERT INTO ellipsoid "
"VALUES('HOBU','ELLPS_GEODETIC_DATUM_XXXX','my "
- "ellipsoid','','PROJ','EARTH',6378137,'EPSG','9001',"
+ "ellipsoid','','IAU_2015','399',6378137,"
+ "'EPSG','9001',"
"NULL,6378136,0);");
const auto identified =
crs->identify(AuthorityFactory::create(ctxt, std::string()));