aboutsummaryrefslogtreecommitdiff
path: root/test/unit
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2022-02-14 23:09:17 +0100
committerEven Rouault <even.rouault@spatialys.com>2022-02-14 23:09:17 +0100
commit7968d389aa180df520b4924dbc367170048a2ebd (patch)
tree390e4d8fbd16013ac8f10684169a3226d8c12f06 /test/unit
parentd4deb549982a16c0b7b324739af781d2779f2324 (diff)
downloadPROJ-7968d389aa180df520b4924dbc367170048a2ebd.tar.gz
PROJ-7968d389aa180df520b4924dbc367170048a2ebd.zip
Fix importing CRS definition with +proj=peirce_q and +shape different from square or diamond. Follow-up of #3014. Fixes #3056. master only
Diffstat (limited to 'test/unit')
-rw-r--r--test/unit/test_io.cpp32
1 files changed, 31 insertions, 1 deletions
diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp
index 33f4c731..69cab65c 100644
--- a/test/unit/test_io.cpp
+++ b/test/unit/test_io.cpp
@@ -9963,7 +9963,7 @@ TEST(io, projparse_ortho_spherical_on_sphere) {
// ---------------------------------------------------------------------------
-TEST(io, projparse_peirce_q) {
+TEST(io, projparse_peirce_q_square) {
std::string input("+proj=peirce_q +shape=square +type=crs");
auto obj = PROJStringParser().createFromPROJString(input);
auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
@@ -9978,6 +9978,36 @@ TEST(io, projparse_peirce_q) {
// ---------------------------------------------------------------------------
+TEST(io, projparse_peirce_q_diamond) {
+ std::string input("+proj=peirce_q +shape=diamond +type=crs");
+ auto obj = PROJStringParser().createFromPROJString(input);
+ auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
+ ASSERT_TRUE(crs != nullptr);
+ EXPECT_EQ(
+ crs->exportToPROJString(
+ PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4)
+ .get()),
+ "+proj=peirce_q +shape=diamond +lat_0=90 +lon_0=0 +k_0=1 +x_0=0 +y_0=0 "
+ "+datum=WGS84 +units=m +no_defs +type=crs");
+}
+
+// ---------------------------------------------------------------------------
+
+TEST(io, projparse_peirce_q_horizontal) {
+ std::string input("+proj=peirce_q +shape=horizontal +datum=WGS84 +units=m "
+ "+no_defs +type=crs");
+ auto obj = PROJStringParser().createFromPROJString(input);
+ auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj);
+ ASSERT_TRUE(crs != nullptr);
+ EXPECT_EQ(
+ crs->exportToPROJString(
+ PROJStringFormatter::create(PROJStringFormatter::Convention::PROJ_4)
+ .get()),
+ input);
+}
+
+// ---------------------------------------------------------------------------
+
TEST(io, projparse_peirce_q_invalid_lat_0) {
std::string input("+proj=peirce_q +lat_0=0 +shape=square +type=crs");
auto obj = PROJStringParser().createFromPROJString(input);