aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-10-06 22:15:31 +0200
committerEven Rouault <even.rouault@spatialys.com>2020-10-08 17:31:56 +0200
commitb5369cc79eccc625419d37bb97a5361731fd8f0f (patch)
tree73bea46ce8b3daf40e65b538f4bc15149ac99756 /test
parentfece8a6c6e2e5eebeac6f9b4fc47ca830f2e3a3a (diff)
downloadPROJ-b5369cc79eccc625419d37bb97a5361731fd8f0f.tar.gz
PROJ-b5369cc79eccc625419d37bb97a5361731fd8f0f.zip
Add a AuthorityFactory::createDatumEnsemble() method, and make it inherit from ObjectUsage
as mandated by ISO 19111:2019
Diffstat (limited to 'test')
-rw-r--r--test/unit/test_factory.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/test/unit/test_factory.cpp b/test/unit/test_factory.cpp
index 1d070a43..6b87fba6 100644
--- a/test/unit/test_factory.cpp
+++ b/test/unit/test_factory.cpp
@@ -316,6 +316,48 @@ TEST(factory, AuthorityFactory_createDatum) {
// ---------------------------------------------------------------------------
+TEST(factory, AuthorityFactory_createDatumEnsembleGeodetic) {
+ auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG");
+ EXPECT_THROW(factory->createDatumEnsemble("-1"),
+ NoSuchAuthorityCodeException);
+ EXPECT_THROW(factory->createDatumEnsemble("6326", "vertical_datum"),
+ NoSuchAuthorityCodeException);
+ auto ensemble = factory->createDatumEnsemble("6326");
+ EXPECT_EQ(ensemble->nameStr(), "World Geodetic System 1984 ensemble");
+ ASSERT_EQ(ensemble->identifiers().size(), 1U);
+ EXPECT_EQ(ensemble->identifiers()[0]->code(), "6326");
+ EXPECT_EQ(*(ensemble->identifiers()[0]->codeSpace()), "EPSG");
+ EXPECT_EQ(ensemble->datums().size(), 6U);
+ EXPECT_EQ(ensemble->positionalAccuracy()->value(), "2.0");
+ ASSERT_TRUE(!ensemble->domains().empty());
+ auto domain = ensemble->domains()[0];
+ auto extent = domain->domainOfValidity();
+ ASSERT_TRUE(extent != nullptr);
+ EXPECT_TRUE(extent->isEquivalentTo(factory->createExtent("1262").get()));
+}
+
+// ---------------------------------------------------------------------------
+
+TEST(factory, AuthorityFactory_createDatumEnsembleVertical) {
+ auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG");
+ EXPECT_THROW(factory->createDatumEnsemble("1288", "geodetic_datum"),
+ NoSuchAuthorityCodeException);
+ auto ensemble = factory->createDatumEnsemble("1288");
+ EXPECT_EQ(ensemble->nameStr(), "British Isles height ensemble");
+ ASSERT_EQ(ensemble->identifiers().size(), 1U);
+ EXPECT_EQ(ensemble->identifiers()[0]->code(), "1288");
+ EXPECT_EQ(*(ensemble->identifiers()[0]->codeSpace()), "EPSG");
+ EXPECT_EQ(ensemble->datums().size(), 9U);
+ EXPECT_EQ(ensemble->positionalAccuracy()->value(), "0.4");
+ ASSERT_TRUE(!ensemble->domains().empty());
+ auto domain = ensemble->domains()[0];
+ auto extent = domain->domainOfValidity();
+ ASSERT_TRUE(extent != nullptr);
+ EXPECT_TRUE(extent->isEquivalentTo(factory->createExtent("4606").get()));
+}
+
+// ---------------------------------------------------------------------------
+
TEST(factory, AuthorityFactory_createCoordinateSystem_ellipsoidal_2_axis) {
auto factory = AuthorityFactory::create(DatabaseContext::create(), "EPSG");
EXPECT_THROW(factory->createCoordinateSystem("-1"),