diff options
| author | Kristian Evers <kristianevers@gmail.com> | 2019-01-03 22:12:22 +0100 |
|---|---|---|
| committer | Kristian Evers <kristianevers@gmail.com> | 2019-01-04 14:02:06 +0100 |
| commit | edb068401822c0cb7047019ae7a1dac587778ce3 (patch) | |
| tree | 00897a41abd674fa841492cdf4fda86d4778d399 /test/unit/proj_angular_io_test.cpp | |
| parent | 78d4126eb54d3f066d7225c160707fc68ae31229 (diff) | |
| download | PROJ-edb068401822c0cb7047019ae7a1dac587778ce3.tar.gz PROJ-edb068401822c0cb7047019ae7a1dac587778ce3.zip | |
Replace PJ_IO_UNITS_WHATEVER with units from neighbour steps
With this commit we make sure that proj_angular_input() and
proj_angular_output return the correct result for any given pipeline.
Diffstat (limited to 'test/unit/proj_angular_io_test.cpp')
| -rw-r--r-- | test/unit/proj_angular_io_test.cpp | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/test/unit/proj_angular_io_test.cpp b/test/unit/proj_angular_io_test.cpp new file mode 100644 index 00000000..fdb44704 --- /dev/null +++ b/test/unit/proj_angular_io_test.cpp @@ -0,0 +1,101 @@ +/****************************************************************************** + * + * Project: PROJ + * Purpose: Test that in- and output units behave correctly, especially + * angular units that need special treatment. + * Author: Kristian Evers <kristianevers@gmail.com> + * + ****************************************************************************** + * Copyright (c) 2019, Kristian Evers + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + ****************************************************************************/ + +#include "proj.h" + +#include "gtest_include.h" + +namespace { + +TEST(AngularUnits, Basic) { + auto ctx = proj_context_create(); + auto P = proj_create(ctx, "proj=latlong"); + + EXPECT_TRUE(proj_angular_input(P, PJ_FWD)); + EXPECT_TRUE(proj_angular_output(P, PJ_FWD)); + EXPECT_TRUE(proj_angular_input(P, PJ_INV)); + EXPECT_TRUE(proj_angular_output(P, PJ_INV)); + + proj_destroy(P); + proj_context_destroy(ctx); +} + +TEST(AngularUnits, Pipelines) { + auto ctx = proj_context_create(); + auto P = proj_create(ctx, "proj=pipeline +step +proj=axisswap +order=2,1 +step +proj=latlong +step +proj=axisswap +order=2,1"); + + EXPECT_TRUE(proj_angular_input(P, PJ_FWD)); + EXPECT_TRUE(proj_angular_output(P, PJ_FWD)); + EXPECT_TRUE(proj_angular_input(P, PJ_INV)); + EXPECT_TRUE(proj_angular_output(P, PJ_INV)); + + proj_destroy(P); + proj_context_destroy(ctx); + +} + +TEST(AngularUnits, Pipelines2) { + auto ctx = proj_context_create(); + auto P = proj_create( + ctx, + "+proj=pipeline " + "+step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=deg +xy_out=rad " + "+step +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 " + "+step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=m +z_in=m +xy_out=us-ft +z_out=us-ft"); + + EXPECT_FALSE(proj_angular_input(P, PJ_FWD)); + EXPECT_FALSE(proj_angular_output(P, PJ_FWD)); + + proj_destroy(P); + proj_context_destroy(ctx); + +} + +TEST(AngularUnits, Pipelines3) { + auto ctx = proj_context_create(); + auto P = proj_create( + ctx, + "+proj=pipeline " + "+step +proj=axisswap +order=2,1 " + "+step +proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.001016002 +y_0=0 +ellps=WGS84 " + "+step +proj=axisswap +order=2,1 " + "+step +proj=unitconvert +xy_in=m +z_in=m +xy_out=us-ft +z_out=us-ft"); + + EXPECT_TRUE(proj_angular_input(P, PJ_FWD)); + EXPECT_FALSE(proj_angular_output(P, PJ_FWD)); + + proj_destroy(P); + proj_context_destroy(ctx); + +} + + +} // namespace |
