aboutsummaryrefslogtreecommitdiff
path: root/test/unit/test_datum.cpp
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2022-03-16 21:09:11 +0100
committerGitHub <noreply@github.com>2022-03-16 21:09:11 +0100
commitafb279808b4d1d027e52f7c6fd772896111dfac2 (patch)
tree427524ce97649db5fc9e014acc0d790911837255 /test/unit/test_datum.cpp
parentcd8609b915bbcd2fe6948dbc30e248fb5dcefb55 (diff)
parent9296f97e45ace4afb574f93af8de0734cc34eae1 (diff)
downloadPROJ-afb279808b4d1d027e52f7c6fd772896111dfac2.tar.gz
PROJ-afb279808b4d1d027e52f7c6fd772896111dfac2.zip
Merge pull request #3120 from OSGeo/backport-3118-to-9.0
[Backport 9.0] 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));
}
// ---------------------------------------------------------------------------