diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2018-12-16 16:05:38 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2018-12-17 20:01:05 +0100 |
| commit | dcb58eb624f87fad1362bfc593b274f84fa44889 (patch) | |
| tree | ed148e4a19f507722383467264bbd02417b7c64a /test | |
| parent | a44a6231364d893d906711138035074fb95521a2 (diff) | |
| download | PROJ-dcb58eb624f87fad1362bfc593b274f84fa44889.tar.gz PROJ-dcb58eb624f87fad1362bfc593b274f84fa44889.zip | |
Add WKT1 grammar validation; change prototype of proj_obj_create_from_wkt()
Diffstat (limited to 'test')
| -rwxr-xr-x | test/cli/testprojinfo | 4 | ||||
| -rw-r--r-- | test/cli/testprojinfo_out.dist | 25 | ||||
| -rw-r--r-- | test/unit/test_c_api.cpp | 201 | ||||
| -rw-r--r-- | test/unit/test_io.cpp | 42 | ||||
| -rw-r--r-- | test/unit/test_operation.cpp | 28 |
5 files changed, 222 insertions, 78 deletions
diff --git a/test/cli/testprojinfo b/test/cli/testprojinfo index ea0dcc2d..bae38482 100755 --- a/test/cli/testprojinfo +++ b/test/cli/testprojinfo @@ -78,6 +78,10 @@ echo "Testing deprecated CRS: projinfo EPSG:26591" >> ${OUT} $EXE EPSG:26591 >>${OUT} 2>&1 echo "" >>${OUT} +echo "Testing non compliant WKT1" >> ${OUT} +$EXE 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563]],UNIT["degree",0.0174532925199433]]' >>${OUT} 2>&1 +echo "" >>${OUT} + # do 'diff' with distribution results echo "diff ${OUT} with testprojinfo_out.dist" diff -u ${OUT} ${TEST_CLI_DIR}/testprojinfo_out.dist diff --git a/test/cli/testprojinfo_out.dist b/test/cli/testprojinfo_out.dist index 40035489..1fd3bbbf 100644 --- a/test/cli/testprojinfo_out.dist +++ b/test/cli/testprojinfo_out.dist @@ -523,3 +523,28 @@ PROJCRS["Monte Mario (Rome) / Italy zone 1", BBOX[36.53,5.94,47.04,12], ID["EPSG",26591]] +Testing non compliant WKT1 +Warning: GEOGCS should have a PRIMEM node +Warning: Parsing error : syntax error, unexpected UNIT, expecting PRIMEM. Error occurred around: +HEROID["WGS 84",6378137,298.257223563]],UNIT["degree",0.0174532925199433]] + ^ +PROJ string: ++proj=pipeline +step +proj=longlat +ellps=WGS84 +step +proj=unitconvert +xy_in=rad +xy_out=deg + +WKT2_2015 string: +GEODCRS["WGS 84", + DATUM["World Geodetic System 1984", + ELLIPSOID["WGS 84",6378137,298.257223563, + LENGTHUNIT["metre",1, + ID["EPSG",9001]]]], + PRIMEM["Greenwich",0, + ANGLEUNIT["degree",0.0174532925199433], + ID["EPSG",8901]], + CS[ellipsoidal,2], + AXIS["longitude",east, + ORDER[1], + ANGLEUNIT["degree",0.0174532925199433]], + AXIS["latitude",north, + ORDER[2], + ANGLEUNIT["degree",0.0174532925199433]]] + diff --git a/test/unit/test_c_api.cpp b/test/unit/test_c_api.cpp index 7df7442a..37ca076c 100644 --- a/test/unit/test_c_api.cpp +++ b/test/unit/test_c_api.cpp @@ -166,14 +166,128 @@ TEST_F(CApi, proj_obj_create_from_user_input) { TEST_F(CApi, proj_obj_create_from_wkt) { proj_obj_destroy(nullptr); - EXPECT_EQ(proj_obj_create_from_wkt(m_ctxt, "invalid", nullptr), nullptr); - auto obj = proj_obj_create_from_wkt( - m_ctxt, - GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) - .c_str(), - nullptr); - ObjectKeeper keeper(obj); - EXPECT_NE(obj, nullptr); + { + EXPECT_EQ(proj_obj_create_from_wkt(m_ctxt, "invalid", nullptr, nullptr, + nullptr), + nullptr); + } + { + PROJ_STRING_LIST warningList = nullptr; + PROJ_STRING_LIST errorList = nullptr; + EXPECT_EQ(proj_obj_create_from_wkt(m_ctxt, "invalid", nullptr, + &warningList, &errorList), + nullptr); + EXPECT_EQ(warningList, nullptr); + proj_string_list_destroy(warningList); + EXPECT_NE(errorList, nullptr); + proj_string_list_destroy(errorList); + } + { + auto obj = proj_obj_create_from_wkt( + m_ctxt, + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr, nullptr, nullptr); + ObjectKeeper keeper(obj); + EXPECT_NE(obj, nullptr); + } + { + auto obj = proj_obj_create_from_wkt( + m_ctxt, + "GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\"unused\"]],\n" + " PRIMEM[\"Greenwich\",0],\n" + " UNIT[\"degree\",0.0174532925199433]]", + nullptr, nullptr, nullptr); + EXPECT_EQ(obj, nullptr); + } + { + PROJ_STRING_LIST warningList = nullptr; + PROJ_STRING_LIST errorList = nullptr; + auto obj = proj_obj_create_from_wkt( + m_ctxt, + "GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\"unused\"]],\n" + " PRIMEM[\"Greenwich\",0],\n" + " UNIT[\"degree\",0.0174532925199433]]", + nullptr, &warningList, &errorList); + EXPECT_EQ(obj, nullptr); + EXPECT_EQ(warningList, nullptr); + proj_string_list_destroy(warningList); + EXPECT_NE(errorList, nullptr); + proj_string_list_destroy(errorList); + } + { + PROJ_STRING_LIST warningList = nullptr; + PROJ_STRING_LIST errorList = nullptr; + const char *const options[] = {"STRICT=NO", nullptr}; + auto obj = proj_obj_create_from_wkt( + m_ctxt, + "GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563,\"unused\"]],\n" + " PRIMEM[\"Greenwich\",0],\n" + " UNIT[\"degree\",0.0174532925199433]]", + options, &warningList, &errorList); + ObjectKeeper keeper(obj); + EXPECT_NE(obj, nullptr); + EXPECT_EQ(warningList, nullptr); + proj_string_list_destroy(warningList); + EXPECT_NE(errorList, nullptr); + proj_string_list_destroy(errorList); + } + { + PROJ_STRING_LIST warningList = nullptr; + PROJ_STRING_LIST errorList = nullptr; + auto obj = proj_obj_create_from_wkt( + m_ctxt, + GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) + .c_str(), + nullptr, &warningList, &errorList); + ObjectKeeper keeper(obj); + EXPECT_NE(obj, nullptr); + EXPECT_EQ(warningList, nullptr); + EXPECT_EQ(errorList, nullptr); + } + // Warnings: missing projection parameters + { + PROJ_STRING_LIST warningList = nullptr; + PROJ_STRING_LIST errorList = nullptr; + auto obj = proj_obj_create_from_wkt( + m_ctxt, "PROJCS[\"test\",\n" + " GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563]],\n" + " PRIMEM[\"Greenwich\",0],\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " PROJECTION[\"Transverse_Mercator\"],\n" + " PARAMETER[\"latitude_of_origin\",31],\n" + " UNIT[\"metre\",1]]", + nullptr, &warningList, &errorList); + ObjectKeeper keeper(obj); + EXPECT_NE(obj, nullptr); + EXPECT_NE(warningList, nullptr); + proj_string_list_destroy(warningList); + EXPECT_EQ(errorList, nullptr); + proj_string_list_destroy(errorList); + } + { + auto obj = proj_obj_create_from_wkt( + m_ctxt, "PROJCS[\"test\",\n" + " GEOGCS[\"WGS 84\",\n" + " DATUM[\"WGS_1984\",\n" + " SPHEROID[\"WGS 84\",6378137,298.257223563]],\n" + " PRIMEM[\"Greenwich\",0],\n" + " UNIT[\"degree\",0.0174532925199433]],\n" + " PROJECTION[\"Transverse_Mercator\"],\n" + " PARAMETER[\"latitude_of_origin\",31],\n" + " UNIT[\"metre\",1]]", + nullptr, nullptr, nullptr); + ObjectKeeper keeper(obj); + EXPECT_NE(obj, nullptr); + } } // --------------------------------------------------------------------------- @@ -195,7 +309,7 @@ TEST_F(CApi, proj_obj_as_wkt) { m_ctxt, GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); @@ -298,7 +412,7 @@ TEST_F(CApi, proj_obj_as_wkt_check_db_use) { m_ctxt, "GEOGCS[\"AGD66\",DATUM[\"Australian_Geodetic_Datum_1966\"," "SPHEROID[\"Australian National Spheroid\",6378160,298.25]]," "PRIMEM[\"Greenwich\",0],UNIT[\"degree\",0.0174532925199433]]", - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); @@ -316,7 +430,7 @@ TEST_F(CApi, proj_obj_as_wkt_incompatible_WKT1) { auto obj = proj_obj_create_from_wkt( m_ctxt, createBoundCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); @@ -331,7 +445,7 @@ TEST_F(CApi, proj_obj_as_proj_string) { m_ctxt, GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); @@ -356,7 +470,7 @@ TEST_F(CApi, proj_obj_as_proj_string_incompatible_WKT1) { auto obj = proj_obj_create_from_wkt( m_ctxt, createBoundCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); @@ -449,7 +563,7 @@ TEST_F(CApi, proj_obj_crs_create_bound_crs_to_WGS84_on_invalid_type) { ->derivingConversion() ->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); @@ -464,7 +578,7 @@ TEST_F(CApi, proj_obj_get_name) { m_ctxt, GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); auto name = proj_obj_get_name(obj); @@ -480,7 +594,7 @@ TEST_F(CApi, proj_obj_get_id_auth_name) { m_ctxt, GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); auto auth = proj_obj_get_id_auth_name(obj, 0); @@ -498,7 +612,7 @@ TEST_F(CApi, proj_obj_get_id_code) { m_ctxt, GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); auto code = proj_obj_get_id_code(obj, 0); @@ -517,7 +631,7 @@ TEST_F(CApi, proj_obj_get_type) { m_ctxt, GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_GEOGRAPHIC_2D_CRS); @@ -527,7 +641,7 @@ TEST_F(CApi, proj_obj_get_type) { m_ctxt, GeographicCRS::EPSG_4979->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_GEOGRAPHIC_3D_CRS); @@ -537,7 +651,7 @@ TEST_F(CApi, proj_obj_get_type) { m_ctxt, GeographicCRS::EPSG_4978->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_GEOCENTRIC_CRS); @@ -547,7 +661,7 @@ TEST_F(CApi, proj_obj_get_type) { m_ctxt, GeographicCRS::EPSG_4326->datum() ->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_GEODETIC_REFERENCE_FRAME); @@ -557,7 +671,7 @@ TEST_F(CApi, proj_obj_get_type) { m_ctxt, GeographicCRS::EPSG_4326->ellipsoid() ->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_ELLIPSOID); @@ -567,7 +681,7 @@ TEST_F(CApi, proj_obj_get_type) { m_ctxt, createProjectedCRS() ->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_PROJECTED_CRS); @@ -577,7 +691,7 @@ TEST_F(CApi, proj_obj_get_type) { m_ctxt, createVerticalCRS() ->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_VERTICAL_CRS); @@ -588,7 +702,7 @@ TEST_F(CApi, proj_obj_get_type) { ->datum() ->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_VERTICAL_REFERENCE_FRAME); @@ -599,7 +713,7 @@ TEST_F(CApi, proj_obj_get_type) { ->derivingConversion() ->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_CONVERSION); @@ -608,7 +722,7 @@ TEST_F(CApi, proj_obj_get_type) { auto obj = proj_obj_create_from_wkt( m_ctxt, createBoundCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_BOUND_CRS); @@ -619,14 +733,14 @@ TEST_F(CApi, proj_obj_get_type) { ->transformation() ->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); EXPECT_EQ(proj_obj_get_type(obj), PJ_OBJ_TYPE_TRANSFORMATION); } { auto obj = proj_obj_create_from_wkt(m_ctxt, "AUTHORITY[\"EPSG\", 4326]", - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_EQ(obj, nullptr); } @@ -703,7 +817,7 @@ TEST_F(CApi, proj_crs) { ->exportToWKT( WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ASSERT_NE(crs, nullptr); ObjectKeeper keeper(crs); EXPECT_TRUE(proj_obj_is_crs(crs)); @@ -772,7 +886,7 @@ TEST_F(CApi, proj_obj_get_prime_meridian) { ->exportToWKT( WKTFormatter::create(WKTFormatter::Convention::WKT1_GDAL).get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ASSERT_NE(crs, nullptr); ObjectKeeper keeper(crs); @@ -811,7 +925,7 @@ TEST_F(CApi, proj_crs_compound) { auto crs = proj_obj_create_from_wkt( m_ctxt, createCompoundCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), - nullptr); + nullptr, nullptr, nullptr); ASSERT_NE(crs, nullptr); ObjectKeeper keeper(crs); EXPECT_EQ(proj_obj_get_type(crs), PJ_OBJ_TYPE_COMPOUND_CRS); @@ -837,7 +951,7 @@ TEST_F(CApi, proj_obj_get_source_target_crs_bound_crs) { auto crs = proj_obj_create_from_wkt( m_ctxt, createBoundCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), - nullptr); + nullptr, nullptr, nullptr); ASSERT_NE(crs, nullptr); ObjectKeeper keeper(crs); @@ -860,7 +974,7 @@ TEST_F(CApi, proj_obj_get_source_target_crs_transformation) { ->transformation() ->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ASSERT_NE(obj, nullptr); ObjectKeeper keeper(obj); @@ -881,7 +995,7 @@ TEST_F(CApi, proj_obj_get_source_crs_of_projected_crs) { auto crs = proj_obj_create_from_wkt( m_ctxt, createProjectedCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), - nullptr); + nullptr, nullptr, nullptr); ASSERT_NE(crs, nullptr); ObjectKeeper keeper(crs); @@ -911,7 +1025,8 @@ TEST_F(CApi, proj_obj_get_source_target_crs_conversion_without_crs) { TEST_F(CApi, proj_obj_get_source_target_crs_invalid_object) { auto obj = proj_obj_create_from_wkt( - m_ctxt, "ELLIPSOID[\"WGS 84\",6378137,298.257223563]", nullptr); + m_ctxt, "ELLIPSOID[\"WGS 84\",6378137,298.257223563]", nullptr, nullptr, + nullptr); ASSERT_NE(obj, nullptr); ObjectKeeper keeper(obj); @@ -1089,7 +1204,7 @@ TEST_F(CApi, transformation_from_boundCRS) { auto crs = proj_obj_create_from_wkt( m_ctxt, createBoundCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), - nullptr); + nullptr, nullptr, nullptr); ASSERT_NE(crs, nullptr); ObjectKeeper keeper(crs); @@ -1465,7 +1580,7 @@ TEST_F(CApi, proj_obj_identify) { m_ctxt, GeographicCRS::EPSG_4807->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(obj); ASSERT_NE(obj, nullptr); { @@ -1486,7 +1601,7 @@ TEST_F(CApi, proj_obj_identify) { m_ctxt, Ellipsoid::GRS1980->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeperEllps(objEllps); auto res = proj_obj_identify(m_ctxt, objEllps, nullptr, nullptr, nullptr); @@ -2245,7 +2360,7 @@ TEST_F(CApi, proj_obj_crs_alter_geodetic_crs) { auto projCRS = proj_obj_create_from_wkt( m_ctxt, createProjectedCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(projCRS); ASSERT_NE(projCRS, nullptr); @@ -2306,7 +2421,7 @@ TEST_F(CApi, proj_obj_crs_alter_cs_angular_unit) { m_ctxt, GeographicCRS::EPSG_4326->exportToWKT(WKTFormatter::create().get()) .c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(crs); ASSERT_NE(crs, nullptr); @@ -2363,7 +2478,7 @@ TEST_F(CApi, proj_obj_crs_alter_cs_linear_unit) { auto crs = proj_obj_create_from_wkt( m_ctxt, createProjectedCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(crs); ASSERT_NE(crs, nullptr); @@ -2420,7 +2535,7 @@ TEST_F(CApi, proj_obj_crs_alter_parameters_linear_unit) { auto crs = proj_obj_create_from_wkt( m_ctxt, createProjectedCRS()->exportToWKT(WKTFormatter::create().get()).c_str(), - nullptr); + nullptr, nullptr, nullptr); ObjectKeeper keeper(crs); ASSERT_NE(crs, nullptr); diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index a385fe87..8272cfb4 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -446,7 +446,7 @@ TEST(wkt_parse, wkt1_EPSG_4807_grad_mess) { " PRIMEM[\"Paris\",2.33722917,\n" " AUTHORITY[\"EPSG\",\"8903\"]],\n" " UNIT[\"grad\",0.015707963267949,\n" - " AUTHORITY[\"EPSG\",9105]],\n" + " AUTHORITY[\"EPSG\",\"9105\"]],\n" " AXIS[\"latitude\",NORTH],\n" " AXIS[\"longitude\",EAST],\n" " AUTHORITY[\"EPSG\",\"4807\"]]"); @@ -868,7 +868,7 @@ TEST(wkt_parse, wkt1_geocentric) { " PRIMEM[\"Greenwich\",0,\n" " AUTHORITY[\"EPSG\",\"8901\"]],\n" " UNIT[\"metre\",1,\n" - " AUTHORITY[\"EPSG\",9001]],\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" " AXIS[\"Geocentric X\",OTHER],\n" " AXIS[\"Geocentric Y\",OTHER],\n" " AXIS[\"Geocentric Z\",NORTH],\n" @@ -890,7 +890,7 @@ TEST(wkt_parse, wkt1_geocentric_with_z_OTHER) { " PRIMEM[\"Greenwich\",0,\n" " AUTHORITY[\"EPSG\",\"8901\"]],\n" " UNIT[\"metre\",1,\n" - " AUTHORITY[\"EPSG\",9001]],\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" " AXIS[\"Geocentric X\",OTHER],\n" " AXIS[\"Geocentric Y\",OTHER],\n" " AXIS[\"Geocentric Z\",OTHER],\n" @@ -1004,7 +1004,7 @@ TEST(wkt_parse, wkt1_projected) { " PRIMEM[\"Greenwich\",0,\n" " AUTHORITY[\"EPSG\",\"8901\"]],\n" " UNIT[\"degree\",0.0174532925199433,\n" - " AUTHORITY[\"EPSG\",9122]],\n" + " AUTHORITY[\"EPSG\",\"9122\"]],\n" " AXIS[\"latitude\",NORTH],\n" " AXIS[\"longitude\",EAST],\n" " AUTHORITY[\"EPSG\",\"4326\"]],\n" @@ -1015,7 +1015,7 @@ TEST(wkt_parse, wkt1_projected) { " PARAMETER[\"false_easting\",500000],\n" " PARAMETER[\"false_northing\",0],\n" " UNIT[\"metre\",1,\n" - " AUTHORITY[\"EPSG\",9001]],\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" " AXIS[\"(E)\",EAST],\n" " AXIS[\"(N)\",NORTH],\n" " AUTHORITY[\"EPSG\",\"32631\"]]"; @@ -1037,7 +1037,7 @@ TEST(wkt_parse, wkt1_projected_no_axis) { " PRIMEM[\"Greenwich\",0,\n" " AUTHORITY[\"EPSG\",\"8901\"]],\n" " UNIT[\"degree\",0.0174532925199433,\n" - " AUTHORITY[\"EPSG\",9122]],\n" + " AUTHORITY[\"EPSG\",\"9122\"]],\n" " AXIS[\"latitude\",NORTH],\n" " AXIS[\"longitude\",EAST],\n" " AUTHORITY[\"EPSG\",\"4326\"]],\n" @@ -1048,7 +1048,7 @@ TEST(wkt_parse, wkt1_projected_no_axis) { " PARAMETER[\"false_easting\",500000],\n" " PARAMETER[\"false_northing\",0],\n" " UNIT[\"metre\",1,\n" - " AUTHORITY[\"EPSG\",9001]],\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" " AUTHORITY[\"EPSG\",\"32631\"]]"; auto obj = WKTParser().createFromWKT(wkt); auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); @@ -1753,7 +1753,7 @@ TEST(wkt_parse, vertcrs_WKT1_GDAL) { " VERT_DATUM[\"Ordnance Datum Newlyn\",2005,\n" " AUTHORITY[\"EPSG\",\"5101\"]],\n" " UNIT[\"metre\",1,\n" - " AUTHORITY[\"EPSG\",9001]],\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" " AXIS[\"gravity-related height\",UP],\n" " AUTHORITY[\"EPSG\",\"5701\"]]"; @@ -1922,7 +1922,7 @@ TEST(wkt_parse, COMPD_CS) { " PRIMEM[\"Greenwich\",0,\n" " AUTHORITY[\"EPSG\",\"8901\"]],\n" " UNIT[\"degree\",0.0174532925199433,\n" - " AUTHORITY[\"EPSG\",9122]],\n" + " AUTHORITY[\"EPSG\",\"9122\"]],\n" " AXIS[\"Latitude\",NORTH],\n" " AXIS[\"Longitude\",EAST],\n" " AUTHORITY[\"EPSG\",\"4326\"]],\n" @@ -1933,7 +1933,7 @@ TEST(wkt_parse, COMPD_CS) { " PARAMETER[\"false_easting\",500000],\n" " PARAMETER[\"false_northing\",0],\n" " UNIT[\"metre\",1,\n" - " AUTHORITY[\"EPSG\",9001]],\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" " AXIS[\"Easting\",EAST],\n" " AXIS[\"Northing\",NORTH],\n" " AUTHORITY[\"EPSG\",\"32631\"]],\n" @@ -1941,7 +1941,7 @@ TEST(wkt_parse, COMPD_CS) { " VERT_DATUM[\"Ordnance Datum Newlyn\",2005,\n" " AUTHORITY[\"EPSG\",\"5101\"]],\n" " UNIT[\"metre\",1,\n" - " AUTHORITY[\"EPSG\",9001]],\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" " AXIS[\"Gravity-related height\",UP],\n" " AUTHORITY[\"EPSG\",\"5701\"]],\n" " AUTHORITY[\"codespace\",\"code\"]]"); @@ -2213,7 +2213,7 @@ TEST(wkt_parse, projcs_TOWGS84_7terms) { " PRIMEM[\"Greenwich\",0,\n" " AUTHORITY[\"EPSG\",\"8901\"]],\n" " UNIT[\"degree\",0.0174532925199433,\n" - " AUTHORITY[\"EPSG\",9122]],\n" + " AUTHORITY[\"EPSG\",\"9122\"]],\n" " AXIS[\"Latitude\",NORTH],\n" " AXIS[\"Longitude\",EAST]],\n" " PROJECTION[\"Transverse_Mercator\"],\n" @@ -2223,7 +2223,7 @@ TEST(wkt_parse, projcs_TOWGS84_7terms) { " PARAMETER[\"false_easting\",500000],\n" " PARAMETER[\"false_northing\",0],\n" " UNIT[\"metre\",1,\n" - " AUTHORITY[\"EPSG\",9001]],\n" + " AUTHORITY[\"EPSG\",\"9001\"]],\n" " AXIS[\"Easting\",EAST],\n" " AXIS[\"Northing\",NORTH]]"; @@ -4607,7 +4607,7 @@ TEST(wkt_parse, invalid_PROJCS) { " AUTHORITY[\"EPSG\",\"6326\"]],\n" " PRIMEM[\"x\",0],\n" " UNIT[\"degree\",0.0174532925199433,\n" - " AUTHORITY[\"EPSG\",9122]],\n" + " AUTHORITY[\"EPSG\",\"9122\"]],\n" " AXIS[\"latitude\",NORTH],\n" " AXIS[\"longitude\",EAST],\n" " AUTHORITY[\"EPSG\",\"4326\"]]\n"); @@ -4627,17 +4627,17 @@ TEST(wkt_parse, invalid_PROJCS) { ParsingException); // not enough children in PARAMETER - EXPECT_THROW( - WKTParser().createFromWKT( - startWKT + - ",PROJECTION[\"x\"],PARAMETER[\"z\",\"foo\"],UNIT[\"metre\",1]]"), - ParsingException); + EXPECT_THROW(WKTParser().createFromWKT( + startWKT + + ",PROJECTION[\"x\"],PARAMETER[\"z\"],UNIT[\"metre\",1]]"), + ParsingException); EXPECT_NO_THROW(WKTParser().createFromWKT( - startWKT + ",PROJECTION[\"x\"],UNIT[\"metre\",1]]")); + startWKT + ",PROJECTION[\"x\"],PARAMETER[\"z\",1],UNIT[\"metre\",1]]")); // missing UNIT - EXPECT_THROW(WKTParser().createFromWKT(startWKT + ",PROJECTION[\"x\"]]"), + EXPECT_THROW(WKTParser().createFromWKT( + startWKT + ",PROJECTION[\"x\"],PARAMETER[\"z\",1]]"), ParsingException); } diff --git a/test/unit/test_operation.cpp b/test/unit/test_operation.cpp index 905eecdb..636db7a7 100644 --- a/test/unit/test_operation.cpp +++ b/test/unit/test_operation.cpp @@ -3310,7 +3310,7 @@ TEST(operation, webmerc_import_from_broken_esri_WGS_84_Pseudo_Mercator) { "PARAMETER[\"false_northing\",0],UNIT[\"Meter\",1]," "PARAMETER[\"standard_parallel_1\",0.0]]"; - auto obj = WKTParser().createFromWKT(wkt1); + auto obj = WKTParser().setStrict(false).createFromWKT(wkt1); auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); ASSERT_TRUE(crs != nullptr); @@ -3620,7 +3620,7 @@ TEST(operation, wkt1_import_polar_stereographic_variantA) { " PARAMETER[\"central_meridian\",2],\n" " PARAMETER[\"scale_factor\",3],\n" " PARAMETER[\"false_easting\",4],\n" - " PARAMETER[\"false_northing\",5]" + " PARAMETER[\"false_northing\",5],\n" " UNIT[\"metre\",1]]"; auto obj = WKTParser().createFromWKT(wkt); auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); @@ -3649,7 +3649,7 @@ TEST(operation, wkt1_import_polar_stereographic_variantB) { " PARAMETER[\"central_meridian\",2],\n" " PARAMETER[\"scale_factor\",1],\n" " PARAMETER[\"false_easting\",4],\n" - " PARAMETER[\"false_northing\",5]" + " PARAMETER[\"false_northing\",5],\n" " UNIT[\"metre\",1]]"; auto obj = WKTParser().createFromWKT(wkt); auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); @@ -3678,7 +3678,7 @@ TEST(operation, wkt1_import_polar_stereographic_ambiguous) { " PARAMETER[\"central_meridian\",2],\n" " PARAMETER[\"scale_factor\",3],\n" " PARAMETER[\"false_easting\",4],\n" - " PARAMETER[\"false_northing\",5]" + " PARAMETER[\"false_northing\",5],\n" " UNIT[\"metre\",1]]"; auto obj = WKTParser().createFromWKT(wkt); auto crs = nn_dynamic_pointer_cast<ProjectedCRS>(obj); @@ -6827,9 +6827,9 @@ TEST(operation, conversion_missing_parameter) { " PARAMETER[\"false_easting\",500000]," " UNIT[\"metre\",1," " AUTHORITY[\"EPSG\",\"9001\"]]," - " AUTHORITY[\"EPSG\",\"2038\"]," " AXIS[\"Easting\",EAST]," - " AXIS[\"Northing\",NORTH]]"; + " AXIS[\"Northing\",NORTH]," + " AUTHORITY[\"EPSG\",\"2038\"]]"; auto obj1 = WKTParser().createFromWKT(wkt1); auto crs1 = nn_dynamic_pointer_cast<ProjectedCRS>(obj1); ASSERT_TRUE(crs1 != nullptr); @@ -6854,9 +6854,9 @@ TEST(operation, conversion_missing_parameter) { " PARAMETER[\"false_northing\",0]," " UNIT[\"metre\",1," " AUTHORITY[\"EPSG\",\"9001\"]]," - " AUTHORITY[\"EPSG\",\"2038\"]," " AXIS[\"Easting\",EAST]," - " AXIS[\"Northing\",NORTH]]"; + " AXIS[\"Northing\",NORTH]," + " AUTHORITY[\"EPSG\",\"2038\"]]"; auto obj2 = WKTParser().createFromWKT(wkt2); auto crs2 = nn_dynamic_pointer_cast<ProjectedCRS>(obj2); ASSERT_TRUE(crs2 != nullptr); @@ -6881,9 +6881,9 @@ TEST(operation, conversion_missing_parameter) { " PARAMETER[\"false_northing\",0]," " UNIT[\"metre\",1," " AUTHORITY[\"EPSG\",\"9001\"]]," - " AUTHORITY[\"EPSG\",\"2038\"]," " AXIS[\"Easting\",EAST]," - " AXIS[\"Northing\",NORTH]]"; + " AXIS[\"Northing\",NORTH]," + " AUTHORITY[\"EPSG\",\"2038\"]]"; auto obj3 = WKTParser().createFromWKT(wkt3); auto crs3 = nn_dynamic_pointer_cast<ProjectedCRS>(obj3); ASSERT_TRUE(crs3 != nullptr); @@ -6909,9 +6909,9 @@ TEST(operation, conversion_missing_parameter) { " PARAMETER[\"UNKNOWN\",13]," " UNIT[\"metre\",1," " AUTHORITY[\"EPSG\",\"9001\"]]," - " AUTHORITY[\"EPSG\",\"2038\"]," " AXIS[\"Easting\",EAST]," - " AXIS[\"Northing\",NORTH]]"; + " AXIS[\"Northing\",NORTH]," + " AUTHORITY[\"EPSG\",\"2038\"]]"; auto obj4 = WKTParser().createFromWKT(wkt4); auto crs4 = nn_dynamic_pointer_cast<ProjectedCRS>(obj4); ASSERT_TRUE(crs4 != nullptr); @@ -6936,9 +6936,9 @@ TEST(operation, conversion_missing_parameter) { " PARAMETER[\"false_northing\",-99999]," " UNIT[\"metre\",1," " AUTHORITY[\"EPSG\",\"9001\"]]," - " AUTHORITY[\"EPSG\",\"2038\"]," " AXIS[\"Easting\",EAST]," - " AXIS[\"Northing\",NORTH]]"; + " AXIS[\"Northing\",NORTH]," + " AUTHORITY[\"EPSG\",\"2038\"]]"; auto obj5 = WKTParser().createFromWKT(wkt5); auto crs5 = nn_dynamic_pointer_cast<ProjectedCRS>(obj5); ASSERT_TRUE(crs5 != nullptr); |
