aboutsummaryrefslogtreecommitdiff
path: root/test/unit/test_datum.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2022-03-16 14:00:35 +0100
committergithub-actions[bot] <github-actions[bot]@users.noreply.github.com>2022-03-16 13:01:01 +0000
commit9296f97e45ace4afb574f93af8de0734cc34eae1 (patch)
tree427524ce97649db5fc9e014acc0d790911837255 /test/unit/test_datum.cpp
parentcd8609b915bbcd2fe6948dbc30e248fb5dcefb55 (diff)
downloadPROJ-9296f97e45ace4afb574f93af8de0734cc34eae1.tar.gz
PROJ-9296f97e45ace4afb574f93af8de0734cc34eae1.zip
Merge pull request #3118 from rouault/dynamic_datum_isequivalentto
Fix comparison of GeodeticRefrenceFrame vs DynamicGeodeticReferenceFrame
Diffstat (limited to 'test/unit/test_datum.cpp')
-rw-r--r--test/unit/test_datum.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/test/unit/test_datum.cpp b/test/unit/test_datum.cpp
index 26098d5c..457bde4d 100644
--- a/test/unit/test_datum.cpp
+++ b/test/unit/test_datum.cpp
@@ -287,6 +287,33 @@ TEST(datum, dynamic_geodetic_reference_frame) {
drf->exportToWKT(
WKTFormatter::create(WKTFormatter::Convention::WKT2_2019).get()),
expected_wtk2_2019);
+
+ EXPECT_TRUE(drf->isEquivalentTo(drf.get()));
+ EXPECT_TRUE(
+ drf->isEquivalentTo(drf.get(), IComparable::Criterion::EQUIVALENT));
+ EXPECT_FALSE(drf->isEquivalentTo(createUnrelatedObject().get()));
+
+ // "Same" datum, except that it is a non-dynamic one
+ auto datum = GeodeticReferenceFrame::create(
+ PropertyMap().set(IdentifiedObject::NAME_KEY, "test"), Ellipsoid::WGS84,
+ optional<std::string>("My anchor"), PrimeMeridian::GREENWICH);
+ EXPECT_FALSE(datum->isEquivalentTo(drf.get()));
+ EXPECT_FALSE(drf->isEquivalentTo(datum.get()));
+ EXPECT_TRUE(
+ datum->isEquivalentTo(drf.get(), IComparable::Criterion::EQUIVALENT));
+ EXPECT_TRUE(
+ drf->isEquivalentTo(datum.get(), IComparable::Criterion::EQUIVALENT));
+
+ auto unrelated_datum = GeodeticReferenceFrame::create(
+ PropertyMap().set(IdentifiedObject::NAME_KEY, "test2"),
+ Ellipsoid::WGS84, optional<std::string>("My anchor"),
+ PrimeMeridian::GREENWICH);
+ EXPECT_FALSE(unrelated_datum->isEquivalentTo(drf.get()));
+ EXPECT_FALSE(drf->isEquivalentTo(unrelated_datum.get()));
+ EXPECT_FALSE(unrelated_datum->isEquivalentTo(
+ drf.get(), IComparable::Criterion::EQUIVALENT));
+ EXPECT_FALSE(drf->isEquivalentTo(unrelated_datum.get(),
+ IComparable::Criterion::EQUIVALENT));
}
// ---------------------------------------------------------------------------
@@ -395,6 +422,32 @@ TEST(datum, dynamic_vertical_reference_frame) {
drf->exportToWKT(
WKTFormatter::create(WKTFormatter::Convention::WKT2_2019).get()),
expected_wtk2_2019);
+
+ EXPECT_TRUE(drf->isEquivalentTo(drf.get()));
+ EXPECT_TRUE(
+ drf->isEquivalentTo(drf.get(), IComparable::Criterion::EQUIVALENT));
+ EXPECT_FALSE(drf->isEquivalentTo(createUnrelatedObject().get()));
+
+ // "Same" datum, except that it is a non-dynamic one
+ auto datum = VerticalReferenceFrame::create(
+ PropertyMap().set(IdentifiedObject::NAME_KEY, "test"),
+ optional<std::string>("My anchor"), optional<RealizationMethod>());
+ EXPECT_FALSE(datum->isEquivalentTo(drf.get()));
+ EXPECT_FALSE(drf->isEquivalentTo(datum.get()));
+ EXPECT_TRUE(
+ datum->isEquivalentTo(drf.get(), IComparable::Criterion::EQUIVALENT));
+ EXPECT_TRUE(
+ drf->isEquivalentTo(datum.get(), IComparable::Criterion::EQUIVALENT));
+
+ auto unrelated_datum = VerticalReferenceFrame::create(
+ PropertyMap().set(IdentifiedObject::NAME_KEY, "test2"),
+ optional<std::string>("My anchor"), optional<RealizationMethod>());
+ EXPECT_FALSE(unrelated_datum->isEquivalentTo(drf.get()));
+ EXPECT_FALSE(drf->isEquivalentTo(unrelated_datum.get()));
+ EXPECT_FALSE(unrelated_datum->isEquivalentTo(
+ drf.get(), IComparable::Criterion::EQUIVALENT));
+ EXPECT_FALSE(drf->isEquivalentTo(unrelated_datum.get(),
+ IComparable::Criterion::EQUIVALENT));
}
// ---------------------------------------------------------------------------