diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2020-12-15 01:12:58 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2020-12-15 17:24:54 +0100 |
| commit | 1d803550e7059729cf2734fc6190993e8b8404bf (patch) | |
| tree | 9ead2265d639388da39ad52aa88cd9861b508831 /test/unit/gie_self_tests.cpp | |
| parent | 2abc0aaf3a03493aaa3f940e1d420d8d9a7b804f (diff) | |
| download | PROJ-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.cpp | 33 |
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); } |
