aboutsummaryrefslogtreecommitdiff
path: root/test/unit/test_crs.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2021-08-16 12:25:07 +0200
committerGitHub <noreply@github.com>2021-08-16 12:25:07 +0200
commit2ddf80a41b90e866ecf113030ff2e241464cb1c8 (patch)
treeeb4942d69214eabd8e10398cfe852016dcf0ea36 /test/unit/test_crs.cpp
parent0d64108dc8c91bed36ea49ac04e56f4f43a84d27 (diff)
parentbc97ca635668e5457afc9dbb491c5aa5525ca7de (diff)
downloadPROJ-2ddf80a41b90e866ecf113030ff2e241464cb1c8.tar.gz
PROJ-2ddf80a41b90e866ecf113030ff2e241464cb1c8.zip
Merge pull request #2806 from OSGeo/backport-2805-to-8.1
[Backport 8.1] Implement promoteTo3D() / demoteTo2D() for DerivedGeographicCRS (fixes #2803)
Diffstat (limited to 'test/unit/test_crs.cpp')
-rw-r--r--test/unit/test_crs.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/test/unit/test_crs.cpp b/test/unit/test_crs.cpp
index 10b21ee5..fb3c14ae 100644
--- a/test/unit/test_crs.cpp
+++ b/test/unit/test_crs.cpp
@@ -6403,6 +6403,32 @@ TEST(crs, promoteTo3D_and_demoteTo2D) {
EXPECT_TRUE(dynamic_cast<const ProjectedCRS *>(demoted.get()) !=
nullptr);
}
+
+ {
+ auto crs = createDerivedGeographicCRS();
+ auto crs3D = crs->promoteTo3D(std::string(), dbContext);
+ auto crs3DAsDerivedGeog =
+ nn_dynamic_pointer_cast<DerivedGeographicCRS>(crs3D);
+ ASSERT_TRUE(crs3DAsDerivedGeog != nullptr);
+ EXPECT_EQ(crs3DAsDerivedGeog->baseCRS()
+ ->coordinateSystem()
+ ->axisList()
+ .size(),
+ 3U);
+ EXPECT_EQ(crs3DAsDerivedGeog->coordinateSystem()->axisList().size(),
+ 3U);
+ EXPECT_TRUE(crs3DAsDerivedGeog->promoteTo3D(std::string(), nullptr)
+ ->isEquivalentTo(crs3DAsDerivedGeog.get()));
+
+ auto demoted = crs3DAsDerivedGeog->demoteTo2D(std::string(), dbContext);
+ EXPECT_EQ(demoted->baseCRS()->coordinateSystem()->axisList().size(),
+ 2U);
+ EXPECT_EQ(demoted->coordinateSystem()->axisList().size(), 2U);
+ EXPECT_TRUE(demoted->isEquivalentTo(
+ crs.get(), IComparable::Criterion::EQUIVALENT));
+ EXPECT_TRUE(demoted->demoteTo2D(std::string(), nullptr)
+ ->isEquivalentTo(demoted.get()));
+ }
}
// ---------------------------------------------------------------------------