diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2021-09-28 14:47:09 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2021-09-28 14:47:09 +0200 |
| commit | e6e6e4ca345e774910afa5bbe485c3d9f7851cd4 (patch) | |
| tree | dd1cd3df30565228b932bbfc1d8d97e142111344 /test/unit | |
| parent | f982d9d3104731727c445930bf14008d1c572d0a (diff) | |
| download | PROJ-e6e6e4ca345e774910afa5bbe485c3d9f7851cd4.tar.gz PROJ-e6e6e4ca345e774910afa5bbe485c3d9f7851cd4.zip | |
Add a mapping for versioned authorities, so that one can use IAU:xxxx or IAU_2015:xxxx transparently
Diffstat (limited to 'test/unit')
| -rw-r--r-- | test/unit/test_crs.cpp | 47 | ||||
| -rw-r--r-- | test/unit/test_io.cpp | 16 |
2 files changed, 63 insertions, 0 deletions
diff --git a/test/unit/test_crs.cpp b/test/unit/test_crs.cpp index 42e6018b..449da2bf 100644 --- a/test/unit/test_crs.cpp +++ b/test/unit/test_crs.cpp @@ -747,6 +747,53 @@ TEST(crs, EPSG_4268_geogcrs_deprecated_as_WKT1_GDAL) { // --------------------------------------------------------------------------- +TEST(crs, IAU_1000_as_WKT2) { + auto dbContext = DatabaseContext::create(); + auto factory = AuthorityFactory::create(dbContext, "IAU_2015"); + auto crs = factory->createCoordinateReferenceSystem("1000"); + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2019, dbContext)); + auto wkt = crs->exportToWKT(f.get()); + // Check that IAU_2015 is split into a authority name and version + EXPECT_TRUE(wkt.find("ID[\"IAU\",1000,2015]") != std::string::npos) << wkt; + + auto obj = createFromUserInput(wkt, dbContext); + auto crs2 = nn_dynamic_pointer_cast<CRS>(obj); + ASSERT_TRUE(crs2 != nullptr); + auto wkt2 = crs2->exportToWKT(f.get()); + // Check that IAU_2015 is split into a authority name and version + EXPECT_TRUE(wkt2.find("ID[\"IAU\",1000,2015]") != std::string::npos) + << wkt2; +} + +// --------------------------------------------------------------------------- + +TEST(crs, IAU_1000_as_PROJJSON) { + auto dbContext = DatabaseContext::create(); + auto factory = AuthorityFactory::create(dbContext, "IAU_2015"); + auto crs = factory->createCoordinateReferenceSystem("1000"); + auto projjson = crs->exportToJSON(JSONFormatter::create(dbContext).get()); + // Check that IAU_2015 is split into a authority name and version + EXPECT_TRUE(projjson.find("\"authority\": \"IAU\",") != std::string::npos) + << projjson; + EXPECT_TRUE(projjson.find("\"code\": 1000,") != std::string::npos) + << projjson; + EXPECT_TRUE(projjson.find("\"version\": 2015") != std::string::npos) + << projjson; + + auto obj = createFromUserInput(projjson, dbContext); + auto crs2 = nn_dynamic_pointer_cast<CRS>(obj); + ASSERT_TRUE(crs2 != nullptr); + WKTFormatterNNPtr f( + WKTFormatter::create(WKTFormatter::Convention::WKT2_2019, dbContext)); + auto wkt2 = crs2->exportToWKT(f.get()); + // Check that IAU_2015 is split into a authority name and version + EXPECT_TRUE(wkt2.find("ID[\"IAU\",1000,2015]") != std::string::npos) + << wkt2; +} + +// --------------------------------------------------------------------------- + TEST(crs, EPSG_2008_projcrs_deprecated_as_WKT1_GDAL) { auto dbContext = DatabaseContext::create(); auto factory = AuthorityFactory::create(dbContext, "EPSG"); diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp index f9a54f3c..646a990a 100644 --- a/test/unit/test_io.cpp +++ b/test/unit/test_io.cpp @@ -10495,6 +10495,8 @@ TEST(io, createFromUserInput) { EXPECT_NO_THROW(createFromUserInput("epsg:4326", dbContext)); EXPECT_NO_THROW( createFromUserInput("urn:ogc:def:crs:EPSG::4326", dbContext)); + EXPECT_NO_THROW( + createFromUserInput("urn:ogc:def:crs:EPSG:10:4326", dbContext)); EXPECT_THROW(createFromUserInput("urn:ogc:def:crs:EPSG::4326", nullptr), ParsingException); EXPECT_NO_THROW(createFromUserInput( @@ -10508,6 +10510,20 @@ TEST(io, createFromUserInput) { EXPECT_NO_THROW( createFromUserInput("urn:ogc:def:ellipsoid:EPSG::7030", dbContext)); + EXPECT_NO_THROW(createFromUserInput("IAU:1000", dbContext)); + EXPECT_NO_THROW(createFromUserInput("IAU_2015:1000", dbContext)); + EXPECT_NO_THROW( + createFromUserInput("urn:ogc:def:crs:IAU::1000", dbContext)); + EXPECT_NO_THROW( + createFromUserInput("urn:ogc:def:crs:IAU_2015::1000", dbContext)); + EXPECT_NO_THROW( + createFromUserInput("urn:ogc:def:crs:IAU:2015:1000", dbContext)); + + EXPECT_THROW(createFromUserInput("urn:ogc:def:crs:IAU_2015::xxxx", nullptr), + ParsingException); + EXPECT_THROW(createFromUserInput("urn:ogc:def:crs:IAU:xxxx:1000", nullptr), + ParsingException); + // Found as srsName in some GMLs... EXPECT_NO_THROW( createFromUserInput("URN:OGC:DEF:CRS:OGC:1.3:CRS84", dbContext)); |
