diff options
Diffstat (limited to 'test/unit/test_factory.cpp')
| -rw-r--r-- | test/unit/test_factory.cpp | 53 |
1 files changed, 33 insertions, 20 deletions
diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp index d3976688..9ca844b1 100644 --- a/test/unit/test_factory.cpp +++ b/test/unit/test_factory.cpp @@ -1511,32 +1511,35 @@ class FactoryWithTmpDatabase : public ::testing::Test { auto factoryOTHER = AuthorityFactory::create( DatabaseContext::create(m_ctxt), "OTHER"); auto res = factoryOTHER->createFromCRSCodesWithIntermediates( - "NS_SOURCE", "SOURCE", "NS_TARGET", "TARGET", false, false, {}); + "NS_SOURCE", "SOURCE", "NS_TARGET", "TARGET", false, false, + false, {}); EXPECT_EQ(res.size(), 1); EXPECT_TRUE(res.empty() || nn_dynamic_pointer_cast<ConcatenatedOperation>(res[0])); res = factoryOTHER->createFromCRSCodesWithIntermediates( "NS_SOURCE", "SOURCE", "NS_TARGET", "TARGET", false, false, - {std::make_pair(std::string("NS_PIVOT"), - std::string("PIVOT"))}); + false, {std::make_pair(std::string("NS_PIVOT"), + std::string("PIVOT"))}); EXPECT_EQ(res.size(), 1); EXPECT_TRUE(res.empty() || nn_dynamic_pointer_cast<ConcatenatedOperation>(res[0])); res = factoryOTHER->createFromCRSCodesWithIntermediates( "NS_SOURCE", "SOURCE", "NS_TARGET", "TARGET", false, false, - {std::make_pair(std::string("NS_PIVOT"), - std::string("NOT_EXISTING"))}); + false, {std::make_pair(std::string("NS_PIVOT"), + std::string("NOT_EXISTING"))}); EXPECT_EQ(res.size(), 0); res = factoryOTHER->createFromCRSCodesWithIntermediates( "NS_SOURCE", "SOURCE", "NS_TARGET", "TARGET", false, false, + false, {std::make_pair(std::string("BAD_NS"), std::string("PIVOT"))}); EXPECT_EQ(res.size(), 0); res = factoryOTHER->createFromCRSCodesWithIntermediates( - "NS_TARGET", "TARGET", "NS_SOURCE", "SOURCE", false, false, {}); + "NS_TARGET", "TARGET", "NS_SOURCE", "SOURCE", false, false, + false, {}); EXPECT_EQ(res.size(), 1); EXPECT_TRUE(res.empty() || nn_dynamic_pointer_cast<ConcatenatedOperation>(res[0])); @@ -1545,7 +1548,8 @@ class FactoryWithTmpDatabase : public ::testing::Test { auto factory = AuthorityFactory::create( DatabaseContext::create(m_ctxt), std::string()); auto res = factory->createFromCRSCodesWithIntermediates( - "NS_SOURCE", "SOURCE", "NS_TARGET", "TARGET", false, false, {}); + "NS_SOURCE", "SOURCE", "NS_TARGET", "TARGET", false, false, + false, {}); EXPECT_EQ(res.size(), 1); EXPECT_TRUE(res.empty() || nn_dynamic_pointer_cast<ConcatenatedOperation>(res[0])); @@ -1720,6 +1724,15 @@ TEST(factory, AuthorityFactory_createFromCoordinateReferenceSystemCodes) { EXPECT_EQ(list[1]->getEPSGCode(), 15993); // Romania - 10m EXPECT_EQ(list[2]->getEPSGCode(), 1644); // Poland - 1m } + { + // Test removal of superseded transform + auto list = factory->createFromCoordinateReferenceSystemCodes( + "EPSG", "4179", "EPSG", "4258", false, false, true); + ASSERT_EQ(list.size(), 2); + // Romania has a larger area than Poland (given our approx formula) + EXPECT_EQ(list[0]->getEPSGCode(), 15994); // Romania - 3m + EXPECT_EQ(list[1]->getEPSGCode(), 1644); // Poland - 1m + } } // --------------------------------------------------------------------------- @@ -1732,12 +1745,12 @@ TEST( { auto res = factory->createFromCoordinateReferenceSystemCodes( - "EPSG", "4326", "EPSG", "32631", false, false); + "EPSG", "4326", "EPSG", "32631", false, false, false); ASSERT_EQ(res.size(), 1); } { auto res = factory->createFromCoordinateReferenceSystemCodes( - "EPSG", "4209", "EPSG", "4326", false, false); + "EPSG", "4209", "EPSG", "4326", false, false, false); EXPECT_TRUE(!res.empty()); for (const auto &conv : res) { EXPECT_TRUE(conv->sourceCRS()->getEPSGCode() == 4209); @@ -1770,7 +1783,7 @@ TEST_F(FactoryWithTmpDatabase, DatabaseContext::create(m_ctxt), std::string()); { auto res = factoryGeneral->createFromCoordinateReferenceSystemCodes( - "OTHER", "OTHER_4326", "OTHER", "OTHER_32631", false, false); + "OTHER", "OTHER_4326", "OTHER", "OTHER_32631", false, false, false); ASSERT_EQ(res.size(), 1); } @@ -1778,7 +1791,7 @@ TEST_F(FactoryWithTmpDatabase, AuthorityFactory::create(DatabaseContext::create(m_ctxt), "EPSG"); { auto res = factoryEPSG->createFromCoordinateReferenceSystemCodes( - "OTHER", "OTHER_4326", "OTHER", "OTHER_32631", false, false); + "OTHER", "OTHER_4326", "OTHER", "OTHER_32631", false, false, false); ASSERT_EQ(res.size(), 1); } @@ -1800,17 +1813,17 @@ TEST_F(FactoryWithTmpDatabase, << last_error(); { auto res = factoryGeneral->createFromCoordinateReferenceSystemCodes( - "EPSG", "4326", "OTHER", "OTHER_4326", false, false); + "EPSG", "4326", "OTHER", "OTHER_4326", false, false, false); ASSERT_EQ(res.size(), 1); } { auto res = factoryEPSG->createFromCoordinateReferenceSystemCodes( - "EPSG", "4326", "OTHER", "OTHER_4326", false, false); + "EPSG", "4326", "OTHER", "OTHER_4326", false, false, false); ASSERT_EQ(res.size(), 0); } { auto res = factoryOTHER->createFromCoordinateReferenceSystemCodes( - "EPSG", "4326", "OTHER", "OTHER_4326", false, false); + "EPSG", "4326", "OTHER", "OTHER_4326", false, false, false); ASSERT_EQ(res.size(), 1); } } @@ -1861,7 +1874,7 @@ TEST_F(FactoryWithTmpDatabase, auto factoryOTHER = AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); auto res = factoryOTHER->createFromCoordinateReferenceSystemCodes( - "EPSG", "4326", "EPSG", "4326", false, false); + "EPSG", "4326", "EPSG", "4326", false, false, false); ASSERT_EQ(res.size(), 3); EXPECT_EQ(*(res[0]->name()->description()), "TRANSFORMATION_1M"); EXPECT_EQ(*(res[1]->name()->description()), "TRANSFORMATION_10M"); @@ -1880,7 +1893,7 @@ TEST_F( auto factory = AuthorityFactory::create(DatabaseContext::create(m_ctxt), std::string()); auto res = factory->createFromCRSCodesWithIntermediates( - "EPSG", "4326", "EPSG", "4326", false, false, {}); + "EPSG", "4326", "EPSG", "4326", false, false, false, {}); EXPECT_EQ(res.size(), 0); } @@ -1964,7 +1977,7 @@ TEST_F(FactoryWithTmpDatabase, AuthorityFactory_proj_based_transformation) { auto factoryOTHER = AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); auto res = factoryOTHER->createFromCoordinateReferenceSystemCodes( - "EPSG", "4326", "EPSG", "4326", false, false); + "EPSG", "4326", "EPSG", "4326", false, false, false); ASSERT_EQ(res.size(), 1); EXPECT_EQ(res[0]->nameStr(), "My PROJ string based op"); EXPECT_EQ(res[0]->exportToPROJString(PROJStringFormatter::create().get()), @@ -2025,7 +2038,7 @@ TEST_F(FactoryWithTmpDatabase, AuthorityFactory_wkt_based_transformation) { auto factoryOTHER = AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); auto res = factoryOTHER->createFromCoordinateReferenceSystemCodes( - "EPSG", "4326", "EPSG", "4326", false, false); + "EPSG", "4326", "EPSG", "4326", false, false, false); ASSERT_EQ(res.size(), 1); EXPECT_EQ(res[0]->nameStr(), "My WKT string based op"); EXPECT_EQ(res[0]->exportToPROJString(PROJStringFormatter::create().get()), @@ -2059,7 +2072,7 @@ TEST_F(FactoryWithTmpDatabase, auto factoryOTHER = AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); EXPECT_THROW(factoryOTHER->createFromCoordinateReferenceSystemCodes( - "EPSG", "4326", "EPSG", "4326", false, false), + "EPSG", "4326", "EPSG", "4326", false, false, false), FactoryException); } @@ -2086,7 +2099,7 @@ TEST_F(FactoryWithTmpDatabase, auto factoryOTHER = AuthorityFactory::create(DatabaseContext::create(m_ctxt), "OTHER"); EXPECT_THROW(factoryOTHER->createFromCoordinateReferenceSystemCodes( - "EPSG", "4326", "EPSG", "4326", false, false), + "EPSG", "4326", "EPSG", "4326", false, false, false), FactoryException); } |
