diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2021-03-19 12:01:17 +0100 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2021-03-19 12:01:17 +0100 |
| commit | ed9b63dcce0037d8ebb3a34e764c16ef594f3559 (patch) | |
| tree | cd632686544c866a738420a20d12cb715a5f9d8a /test/unit/test_factory.cpp | |
| parent | 219758a4c9cfa84d15c593b1d0239250606cb7a2 (diff) | |
| download | PROJ-ed9b63dcce0037d8ebb3a34e764c16ef594f3559.tar.gz PROJ-ed9b63dcce0037d8ebb3a34e764c16ef594f3559.zip | |
Tests: add new error cases of SQL output
Diffstat (limited to 'test/unit/test_factory.cpp')
| -rw-r--r-- | test/unit/test_factory.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp index d153d401..c67f1490 100644 --- a/test/unit/test_factory.cpp +++ b/test/unit/test_factory.cpp @@ -4019,6 +4019,7 @@ TEST(factory, objectInsertion) { ->createDatum("1165"); // ITRF2014 const auto sql = ctxt->getInsertStatementsFor(datum, "HOBU", "XXXX", false, {"HOBU"}); + EXPECT_TRUE(!sql.empty()); const auto datumNew = AuthorityFactory::create(ctxt, "HOBU")->createDatum("XXXX"); EXPECT_TRUE(datumNew->isEquivalentTo( @@ -4034,6 +4035,7 @@ TEST(factory, objectInsertion) { ->createDatum("1096"); // Norway Normal Null 2000 const auto sql = ctxt->getInsertStatementsFor(datum, "HOBU", "XXXX", false, {"HOBU"}); + EXPECT_TRUE(!sql.empty()); const auto datumNew = AuthorityFactory::create(ctxt, "HOBU")->createDatum("XXXX"); EXPECT_TRUE(datumNew->isEquivalentTo( @@ -4049,6 +4051,7 @@ TEST(factory, objectInsertion) { ->createDatumEnsemble("6326"); // WGS84 const auto sql = ctxt->getInsertStatementsFor(ensemble, "HOBU", "XXXX", false, {"HOBU"}); + EXPECT_TRUE(!sql.empty()); const auto ensembleNew = AuthorityFactory::create(ctxt, "HOBU")->createDatumEnsemble("XXXX"); EXPECT_TRUE(ensembleNew->isEquivalentTo( @@ -4064,6 +4067,7 @@ TEST(factory, objectInsertion) { ->createDatumEnsemble("6326"); // WGS84 const auto sql = ctxt->getInsertStatementsFor(ensemble, "HOBU", "XXXX", false); + EXPECT_TRUE(!sql.empty()); const auto ensembleNew = AuthorityFactory::create(ctxt, "HOBU")->createDatumEnsemble("XXXX"); EXPECT_TRUE(ensembleNew->isEquivalentTo( @@ -4080,6 +4084,7 @@ TEST(factory, objectInsertion) { AuthorityFactory::create(ctxt, "EPSG")->createDatumEnsemble("1288"); const auto sql = ctxt->getInsertStatementsFor(ensemble, "HOBU", "XXXX", false, {"HOBU"}); + EXPECT_TRUE(!sql.empty()); const auto ensembleNew = AuthorityFactory::create(ctxt, "HOBU")->createDatumEnsemble("XXXX"); EXPECT_TRUE(ensembleNew->isEquivalentTo( @@ -4177,6 +4182,66 @@ TEST(factory, objectInsertion) { IComparable::Criterion::EQUIVALENT)); ctxt->stopInsertStatementsSession(); } + + // Error: unknown projection method. + { + auto ctxt = DatabaseContext::create(); + ctxt->startInsertStatementsSession(); + const auto wkt = + "PROJCRS[\"unknown\",\n" + " BASEGEOGCRS[\"unknown\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " CONVERSION[\"unknown\",\n" + " METHOD[\"unknown\"]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"(N)\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1]]]"; + const auto crs = + nn_dynamic_pointer_cast<CRS>(WKTParser().createFromWKT(wkt)); + ASSERT_TRUE(crs != nullptr); + EXPECT_THROW(ctxt->getInsertStatementsFor(NN_NO_CHECK(crs), "HOBU", + "XXXX", false), + std::exception); + } + + // Error: unknown projection parameter. + { + auto ctxt = DatabaseContext::create(); + ctxt->startInsertStatementsSession(); + const auto wkt = + "PROJCRS[\"unknown\",\n" + " BASEGEOGCRS[\"unknown\",\n" + " DATUM[\"World Geodetic System 1984\",\n" + " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n" + " LENGTHUNIT[\"metre\",1]]],\n" + " PRIMEM[\"Greenwich\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " CONVERSION[\"unknown\",\n" + " METHOD[\"Transverse Mercator\"],\n" + " PARAMETER[\"unknown\",0,\n" + " ANGLEUNIT[\"degree\",0.0174532925199433]]],\n" + " CS[Cartesian,2],\n" + " AXIS[\"(E)\",east,\n" + " ORDER[1],\n" + " LENGTHUNIT[\"metre\",1]],\n" + " AXIS[\"(N)\",north,\n" + " ORDER[2],\n" + " LENGTHUNIT[\"metre\",1]]]"; + const auto crs = + nn_dynamic_pointer_cast<CRS>(WKTParser().createFromWKT(wkt)); + ASSERT_TRUE(crs != nullptr); + EXPECT_THROW(ctxt->getInsertStatementsFor(NN_NO_CHECK(crs), "HOBU", + "XXXX", false), + std::exception); + } } } // namespace |
