aboutsummaryrefslogtreecommitdiff
path: root/test/unit/gie_self_tests.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-12-15 01:12:58 +0100
committerEven Rouault <even.rouault@spatialys.com>2020-12-15 17:24:54 +0100
commit1d803550e7059729cf2734fc6190993e8b8404bf (patch)
tree9ead2265d639388da39ad52aa88cd9861b508831 /test/unit/gie_self_tests.cpp
parent2abc0aaf3a03493aaa3f940e1d420d8d9a7b804f (diff)
downloadPROJ-1d803550e7059729cf2734fc6190993e8b8404bf.tar.gz
PROJ-1d803550e7059729cf2734fc6190993e8b8404bf.zip
proj_trans_array(): make it transform all coordinates even when an error occurs
Diffstat (limited to 'test/unit/gie_self_tests.cpp')
-rw-r--r--test/unit/gie_self_tests.cpp33
1 files changed, 31 insertions, 2 deletions
diff --git a/test/unit/gie_self_tests.cpp b/test/unit/gie_self_tests.cpp
index 70e67dcc..4244766e 100644
--- a/test/unit/gie_self_tests.cpp
+++ b/test/unit/gie_self_tests.cpp
@@ -46,7 +46,7 @@ TEST(gie, cart_selftest) {
PJ_CONTEXT *ctx;
PJ *P;
PJ_COORD a, b, obs[2];
- PJ_COORD coord[2];
+ PJ_COORD coord[3];
size_t n, sz;
double dist, h, t;
@@ -200,7 +200,7 @@ TEST(gie, cart_selftest) {
coord[0] = proj_coord(proj_torad(12), proj_torad(55), 45, 0);
coord[1] = proj_coord(proj_torad(12), proj_torad(56), 50, 0);
- ASSERT_FALSE(proj_trans_array(P, PJ_FWD, 2, coord));
+ ASSERT_EQ(proj_trans_array(P, PJ_FWD, 2, coord), 0);
ASSERT_EQ(a.lpz.lam, coord[0].lpz.lam);
ASSERT_EQ(a.lpz.phi, coord[0].lpz.phi);
@@ -209,6 +209,35 @@ TEST(gie, cart_selftest) {
ASSERT_EQ(b.lpz.phi, coord[1].lpz.phi);
ASSERT_EQ(b.lpz.z, coord[1].lpz.z);
+ /* test proj_trans_array () with two failed points for the same reason */
+
+ coord[0] =
+ proj_coord(proj_torad(12), proj_torad(95), 45, 0); // invalid latitude
+ coord[1] = proj_coord(proj_torad(12), proj_torad(56), 50, 0);
+ coord[2] =
+ proj_coord(proj_torad(12), proj_torad(95), 45, 0); // invalid latitude
+ ASSERT_EQ(proj_trans_array(P, PJ_FWD, 3, coord),
+ PROJ_ERR_COORD_TRANSFM_INVALID_COORD);
+
+ ASSERT_EQ(HUGE_VAL, coord[0].lpz.lam);
+ ASSERT_EQ(HUGE_VAL, coord[0].lpz.phi);
+ ASSERT_EQ(HUGE_VAL, coord[0].lpz.z);
+ ASSERT_EQ(b.lpz.lam, coord[1].lpz.lam);
+ ASSERT_EQ(b.lpz.phi, coord[1].lpz.phi);
+ ASSERT_EQ(b.lpz.z, coord[1].lpz.z);
+ ASSERT_EQ(HUGE_VAL, coord[2].lpz.lam);
+ ASSERT_EQ(HUGE_VAL, coord[2].lpz.phi);
+ ASSERT_EQ(HUGE_VAL, coord[2].lpz.z);
+
+ /* test proj_trans_array () with two failed points for different reasons */
+
+ coord[0] =
+ proj_coord(proj_torad(12), proj_torad(95), 45, 0); // invalid latitude
+ coord[1] =
+ proj_coord(proj_torad(105), proj_torad(0), 45,
+ 0); // in the equatorial axis, at 90° of the central meridian
+ ASSERT_EQ(proj_trans_array(P, PJ_FWD, 2, coord), PROJ_ERR_COORD_TRANSFM);
+
/* Clean up after proj_trans_* tests */
proj_destroy(P);
}