aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2021-08-16 11:00:05 +0200
committerEven Rouault <even.rouault@spatialys.com>2021-08-16 11:14:30 +0200
commitbac2521fe750831de3d36796a3dfde8a0d9874d5 (patch)
treec824a6887fe5ff5b77045b3bab4918a6f6ed74f2 /test
parent88322b46e756a950ff2d312169a68c7f56ff105e (diff)
downloadPROJ-bac2521fe750831de3d36796a3dfde8a0d9874d5.tar.gz
PROJ-bac2521fe750831de3d36796a3dfde8a0d9874d5.zip
Implement promoteTo3D() / demoteTo2D() for DerivedGeographicCRS (fixes #2803)
Diffstat (limited to 'test')
-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()));
+ }
}
// ---------------------------------------------------------------------------