aboutsummaryrefslogtreecommitdiff
path: root/test/unit
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2019-10-27 19:16:04 +0100
committerEven Rouault <even.rouault@spatialys.com>2019-10-27 19:16:04 +0100
commit46c6ddf84defeb4ae855285da4416dff7178cacc (patch)
tree31789cfd11ea72eb9e5fc07eb2b2ac0839cfd5fd /test/unit
parente7dff6e3a9895af20b3d02337299d5f05c2ea4bc (diff)
downloadPROJ-46c6ddf84defeb4ae855285da4416dff7178cacc.tar.gz
PROJ-46c6ddf84defeb4ae855285da4416dff7178cacc.zip
Database: add an auxiliary concatenated_operation_step table to allow arbitrary number of steps (fixes #1632)
EPSG:9103 (NAD27 to ITRF2014 (1)) is now handled. Note:EPSG:9104 (NAD27 to ITRF2014 (2)) is not currently, since it uses for step EPSG:8861 (NAD83(HARN) to NAD83(FBN) (1)) an unsupported transformation method (NADCON5 (3D), EPSG:1075).
Diffstat (limited to 'test/unit')
-rw-r--r--test/unit/test_c_api.cpp2
-rw-r--r--test/unit/test_factory.cpp43
-rw-r--r--test/unit/test_operation.cpp2
3 files changed, 39 insertions, 8 deletions
diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp
index d8968e97..8ac5a511 100644
--- a/test/unit/test_c_api.cpp
+++ b/test/unit/test_c_api.cpp
@@ -1344,7 +1344,7 @@ TEST_F(CApi, proj_create_operations) {
ASSERT_NE(res, nullptr);
ObjListKeeper keeper_res(res);
- EXPECT_EQ(proj_list_get_count(res), 8);
+ EXPECT_EQ(proj_list_get_count(res), 10);
EXPECT_EQ(proj_list_get(m_ctxt, res, -1), nullptr);
EXPECT_EQ(proj_list_get(m_ctxt, res, proj_list_get_count(res)), nullptr);
diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp
index 7784d8a2..47cee060 100644
--- a/test/unit/test_factory.cpp
+++ b/test/unit/test_factory.cpp
@@ -1116,6 +1116,28 @@ TEST(
// ---------------------------------------------------------------------------
+TEST(
+ factory,
+ AuthorityFactory_createCoordinateOperation_concatenated_operation_epsg_9103) {
+ auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG");
+ auto op = factory->createCoordinateOperation("9103", false);
+ auto concatenated = nn_dynamic_pointer_cast<ConcatenatedOperation>(op);
+ ASSERT_TRUE(concatenated != nullptr);
+ auto operations = concatenated->operations();
+ ASSERT_EQ(operations.size(),
+ 5U); // we've added an explicit geographic -> geocentric step
+ EXPECT_EQ(operations[0]->nameStr(), "NAD27 to NAD83 (1)");
+ EXPECT_EQ(operations[1]->nameStr(), "NAD83 to NAD83(2011) (1)");
+ EXPECT_EQ(
+ operations[2]->nameStr(),
+ "Conversion from NAD83(2011) (geog2D) to NAD83(2011) (geocentric)");
+ EXPECT_EQ(operations[3]->nameStr(),
+ "Inverse of ITRF2008 to NAD83(2011) (1)");
+ EXPECT_EQ(operations[4]->nameStr(), "ITRF2008 to ITRF2014 (1)");
+}
+
+// ---------------------------------------------------------------------------
+
static bool in(const std::string &str, const std::vector<std::string> &list) {
for (const auto &listItem : list) {
if (str == listItem) {
@@ -1514,12 +1536,21 @@ class FactoryWithTmpDatabase : public ::testing::Test {
"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,'EPSG','DUMMY_OTHER_TRANSFORMATION'"
- ",'EPSG','DUMMY_OTHER_TRANSFORMATION',NULL,NULL,NULL,0);"))
+ ASSERT_TRUE(
+ execute("INSERT INTO concatenated_operation "
+ "VALUES('EPSG','DUMMY_CONCATENATED','name',NULL,NULL,"
+ "'EPSG','4326','EPSG'"
+ ",'4326','EPSG','1262',NULL,NULL,0);"))
+ << last_error();
+
+ ASSERT_TRUE(execute("INSERT INTO concatenated_operation_step "
+ "VALUES('EPSG','DUMMY_CONCATENATED',1,"
+ "'EPSG','DUMMY_OTHER_TRANSFORMATION');"))
+ << last_error();
+
+ ASSERT_TRUE(execute("INSERT INTO concatenated_operation_step "
+ "VALUES('EPSG','DUMMY_CONCATENATED',2,"
+ "'EPSG','DUMMY_OTHER_TRANSFORMATION');"))
<< last_error();
}
diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp
index 53dcb861..8805e6a1 100644
--- a/test/unit/test_operation.cpp
+++ b/test/unit/test_operation.cpp
@@ -4516,7 +4516,7 @@ TEST(operation, geogCRS_to_geogCRS_context_ntv1_ntv2_ctable2) {
authFactory->createCoordinateReferenceSystem("4267"), // NAD27
authFactory->createCoordinateReferenceSystem("4269"), // NAD83
ctxt);
- ASSERT_EQ(list.size(), 8U);
+ ASSERT_EQ(list.size(), 10U);
EXPECT_EQ(list[0]->exportToPROJString(PROJStringFormatter::create().get()),
"+proj=pipeline +step +proj=axisswap +order=2,1 +step "
"+proj=unitconvert +xy_in=deg +xy_out=rad +step +proj=hgridshift "