From 9181fcfebde8a3969dc49100674f16286119059b Mon Sep 17 00:00:00 2001 From: Kristian Evers Date: Tue, 16 Jan 2018 13:16:18 +0100 Subject: Fix "double inversions" in pipelines, require a defined forward operation. "+proj=pipeline +inv +step +urm5 +n=0.5 +inv" now works as expected, returning the forward operation of urm5. In principle adding more +inv's should also work, resulting in the forward operation when an even number of +inv's are present, and the inverse when an odd number of +inv's are present. "+proj=pipeline +step +urm5 +n=0.5 +inv" fails at initialization since no forward operation can be performed. This is a new requirement, but aligns perfectly with the rest of the library since no operation without a forward method exists. --- test/gie/more_builtins.gie | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/gie/more_builtins.gie b/test/gie/more_builtins.gie index 099934a7..00f584b4 100644 --- a/test/gie/more_builtins.gie +++ b/test/gie/more_builtins.gie @@ -115,10 +115,26 @@ expect 691875.63214 6098907.82501 0 0 direction inverse accept 12 55 0 0 expect 12 55 0 0 +------------------------------------------------------------------------------- +Test a few inversion scenarios (urm5 has no inverse operation) +------------------------------------------------------------------------------- +operation proj=pipeline step + proj=urm5 n=0.5 inv +expect failure pjd_err_malformed_pipeline +operation proj=pipeline inv step + proj=urm5 n=0.5 +expect failure pjd_err_malformed_pipeline +operation proj=pipeline inv step + proj=urm5 n=0.5 inv +accept 12 56 +expect 1215663.2814182492 5452209.5424045017 - +operation proj=pipeline step + proj=urm5 n=0.5 +accept 12 56 +expect 1215663.2814182492 5452209.5424045017 ------------------------------------------------------------------------------- Some tests from PJ_vgridshift.c -- cgit v1.2.3 From 046ce54719f3224b1b9299ee8d370cc92b0929af Mon Sep 17 00:00:00 2001 From: Kristian Evers Date: Tue, 16 Jan 2018 14:08:39 +0100 Subject: Adding a few more test cases for pipeline, ensuring better test coverage --- test/gie/more_builtins.gie | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/gie/more_builtins.gie b/test/gie/more_builtins.gie index 00f584b4..20bffbd9 100644 --- a/test/gie/more_builtins.gie +++ b/test/gie/more_builtins.gie @@ -65,7 +65,7 @@ roundtrip 100 1 m ------------------------------------------------------------------------------- Some tests from PJ_pipeline.c ------------------------------------------------------------------------------- -Forward-reverse geo->utm->geo +Forward-reverse geo->utm->geo (4D functions) ------------------------------------------------------------------------------- operation proj=pipeline zone=32 step proj=utm ellps=GRS80 step @@ -81,7 +81,7 @@ Now the inverse direction (still same result: the pipeline is symmetrical) direction inverse expect 12 55 0 0 ------------------------------------------------------------------------------- -And now the back-to-back situation utm->geo->utm +And now the back-to-back situation utm->geo->utm (4D functions) ------------------------------------------------------------------------------- operation proj=pipeline zone=32 ellps=GRS80 step proj=utm inv step @@ -92,6 +92,33 @@ expect 691875.63214 6098907.82501 0 0 direction inverse expect 691875.63214 6098907.82501 0 0 ------------------------------------------------------------------------------- +Forward-reverse geo->utm->geo (3D functions) +------------------------------------------------------------------------------- +operation proj=pipeline zone=32 step + proj=utm ellps=GRS80 step + proj=utm ellps=GRS80 inv +------------------------------------------------------------------------------- +tolerance 0.1 mm + +accept 12 55 0 +expect 12 55 0 + +Now the inverse direction (still same result: the pipeline is symmetrical) + +direction inverse +expect 12 55 0 +------------------------------------------------------------------------------- +And now the back-to-back situation utm->geo->utm (3D functions) +------------------------------------------------------------------------------- +operation proj=pipeline zone=32 ellps=GRS80 step + proj=utm inv step + proj=utm +------------------------------------------------------------------------------- +accept 691875.63214 6098907.82501 0 +expect 691875.63214 6098907.82501 0 +direction inverse +expect 691875.63214 6098907.82501 0 +------------------------------------------------------------------------------- Test a corner case: A rather pointless one-step pipeline geo->utm ------------------------------------------------------------------------------- operation proj=pipeline step proj=utm zone=32 ellps=GRS80 @@ -135,6 +162,20 @@ operation proj=pipeline step proj=urm5 n=0.5 accept 12 56 expect 1215663.2814182492 5452209.5424045017 +------------------------------------------------------------------------------- +Test various failing scenarios. +------------------------------------------------------------------------------- +operation proj=pipeline step + proj=pipeline step + proj=merc +expect failure pjd_err_malformed_pipeline + +operation step proj=pipeline step proj=merc +expect failure pjd_err_malformed_pipeline + +operation proj=pipeline +expect failure pjd_err_malformed_pipeline + ------------------------------------------------------------------------------- Some tests from PJ_vgridshift.c -- cgit v1.2.3