aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-10-06 23:48:46 +0200
committerEven Rouault <even.rouault@spatialys.com>2020-10-08 17:31:56 +0200
commit9dc3bf503b0455526a4d180930f8414621ea6187 (patch)
tree853db7b562f76ba86a17ef627f7b7edacab24146 /test
parentb5369cc79eccc625419d37bb97a5361731fd8f0f (diff)
downloadPROJ-9dc3bf503b0455526a4d180930f8414621ea6187.tar.gz
PROJ-9dc3bf503b0455526a4d180930f8414621ea6187.zip
Add DatumEnsemble::asDatum() and use it in exportToWkt()
to allow exporting DatumEnsemble to WKT < 2019.
Diffstat (limited to 'test')
-rw-r--r--test/unit/test_datum.cpp11
-rw-r--r--test/unit/test_factory.cpp34
2 files changed, 43 insertions, 2 deletions
diff --git a/test/unit/test_datum.cpp b/test/unit/test_datum.cpp
index adf0ae4b..26098d5c 100644
--- a/test/unit/test_datum.cpp
+++ b/test/unit/test_datum.cpp
@@ -409,8 +409,7 @@ TEST(datum, datum_ensemble) {
PositionalAccuracy::create("100"));
EXPECT_EQ(ensemble->datums().size(), 2U);
EXPECT_EQ(ensemble->positionalAccuracy()->value(), "100");
- EXPECT_THROW(ensemble->exportToWKT(WKTFormatter::create().get()),
- FormattingException);
+
EXPECT_EQ(
ensemble->exportToWKT(
WKTFormatter::create(WKTFormatter::Convention::WKT2_2019).get()),
@@ -422,6 +421,14 @@ TEST(datum, datum_ensemble) {
" LENGTHUNIT[\"metre\",1],\n"
" ID[\"EPSG\",7030]],\n"
" ENSEMBLEACCURACY[100]]");
+
+ EXPECT_EQ(
+ ensemble->exportToWKT(
+ WKTFormatter::create(WKTFormatter::Convention::WKT2_2015).get()),
+ "DATUM[\"test\",\n"
+ " ELLIPSOID[\"WGS 84\",6378137,298.257223563,\n"
+ " LENGTHUNIT[\"metre\",1],\n"
+ " ID[\"EPSG\",7030]]]");
}
// ---------------------------------------------------------------------------
diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp
index 6b87fba6..b17a3077 100644
--- a/test/unit/test_factory.cpp
+++ b/test/unit/test_factory.cpp
@@ -334,6 +334,24 @@ TEST(factory, AuthorityFactory_createDatumEnsembleGeodetic) {
auto extent = domain->domainOfValidity();
ASSERT_TRUE(extent != nullptr);
EXPECT_TRUE(extent->isEquivalentTo(factory->createExtent("1262").get()));
+
+ {
+ // Without using db
+ auto datum = ensemble->asDatum(nullptr);
+ EXPECT_EQ(datum->nameStr(), "World Geodetic System 1984");
+ auto grf = dynamic_cast<GeodeticReferenceFrame *>(datum.get());
+ ASSERT_TRUE(grf != nullptr);
+ EXPECT_TRUE(grf->isEquivalentTo(factory->createDatum("6326").get()));
+ }
+
+ {
+ // Using db
+ auto datum = ensemble->asDatum(DatabaseContext::create());
+ EXPECT_EQ(datum->nameStr(), "World Geodetic System 1984");
+ auto grf = dynamic_cast<GeodeticReferenceFrame *>(datum.get());
+ ASSERT_TRUE(grf != nullptr);
+ EXPECT_TRUE(grf->isEquivalentTo(factory->createDatum("6326").get()));
+ }
}
// ---------------------------------------------------------------------------
@@ -354,6 +372,22 @@ TEST(factory, AuthorityFactory_createDatumEnsembleVertical) {
auto extent = domain->domainOfValidity();
ASSERT_TRUE(extent != nullptr);
EXPECT_TRUE(extent->isEquivalentTo(factory->createExtent("4606").get()));
+
+ {
+ // Without using db
+ auto datum = ensemble->asDatum(nullptr);
+ auto vrf = dynamic_cast<VerticalReferenceFrame *>(datum.get());
+ ASSERT_TRUE(vrf != nullptr);
+ EXPECT_TRUE(vrf->isEquivalentTo(factory->createDatum("1288").get()));
+ }
+
+ {
+ // Using db
+ auto datum = ensemble->asDatum(DatabaseContext::create());
+ auto vrf = dynamic_cast<VerticalReferenceFrame *>(datum.get());
+ ASSERT_TRUE(vrf != nullptr);
+ EXPECT_TRUE(vrf->isEquivalentTo(factory->createDatum("1288").get()));
+ }
}
// ---------------------------------------------------------------------------