testReferenceEllipsoid.cc
Go to the documentation of this file.
1 
10 #include <utl/ReferenceEllipsoid.h>
11 #include <utl/Point.h>
12 #include <utl/AugerUnits.h>
13 
14 #include <tst/Verify.h>
15 #include <utl/Triple.h>
16 
17 #include <cppunit/extensions/HelperMacros.h>
18 
19 using namespace utl;
20 using namespace tst;
21 
22 
26 class testReferenceEllipsoid : public CppUnit::TestFixture {
27 
28  CPPUNIT_TEST_SUITE(testReferenceEllipsoid);
29  CPPUNIT_TEST(testEllipsoidCreation);
30  CPPUNIT_TEST_EXCEPTION(testGetEllipsoid0,
32  CPPUNIT_TEST_EXCEPTION(testGetEllipsoid999, AugerException);
33  CPPUNIT_TEST(testEllipsoidComparison);
34  CPPUNIT_TEST(testLatLongConversion);
35  CPPUNIT_TEST_SUITE_END();
36 
37 public:
38  void setUp() { }
39 
40  void tearDown() { }
41 
42  void
44  {
46  CPPUNIT_ASSERT(Verify<CloseTo>(r.GetEquatorialRadius(), 6378137.));
47  CPPUNIT_ASSERT(Verify<CloseTo>(r.GetEccentricity2(), 0.00669437999013));
48  CPPUNIT_ASSERT(Verify<CloseTo>(r.GetPolarRadius(), 6356752.3142));
49  CPPUNIT_ASSERT(Verify<CloseTo>(1/r.GetFlattening(), 298.257223563));
50  }
51 
52  void
54  {
55  typedef ReferenceEllipsoid::EllipsoidID EllipsoidID;
56  // catch specific exception
57  tst::Expected();
58  ReferenceEllipsoid::Get(EllipsoidID(0));
59  // ReferenceEllipsoid::InvalidEllipsoidException;
60  }
61 
62  void
64  {
65  typedef ReferenceEllipsoid::EllipsoidID EllipsoidID;
66  // catch generic auger exception
67  tst::Expected();
68  ReferenceEllipsoid::Get(EllipsoidID(999));
69  // AugerException
70  }
71 
72  void
74  {
76  // same parameters as in ReferenceEllipsoid code
77  const ReferenceEllipsoid e(6378137., 0.00669437999013,
78  CoordinateSystem::GetRootCoordinateSystem());
79  CPPUNIT_ASSERT(wgs84 == e);
80 
82 
83  CPPUNIT_ASSERT(wgs84 == wgs84a);
84  }
85 
86  void
88  {
90  const CoordinateSystemPtr ECEF = wgs84.GetECEF();
91 
92  const Point GmEq1 = Point(wgs84.GetEquatorialRadius(), 0, 0, ECEF);
93  CPPUNIT_ASSERT(Verify<CloseTo>(
94  wgs84.PointToLatitudeLongitudeHeight(GmEq1), Triple(0,0,0)));
95 
96  const Point GmEq2 = wgs84.LatitudeLongitudeHeightToPoint(0, 0, 0);
97  CPPUNIT_ASSERT(Verify<CloseTo>(
98  GmEq2.GetCoordinates(ECEF), Triple(wgs84.GetEquatorialRadius(),0,0)));
99 
100  const Point EastEq1 = Point(0, wgs84.GetEquatorialRadius(), 0, ECEF);
101  CPPUNIT_ASSERT(Verify<CloseTo>(
102  wgs84.PointToLatitudeLongitudeHeight(EastEq1), Triple(0,90*deg,0)));
103 
104  const Point EastEq2 = wgs84.LatitudeLongitudeHeightToPoint(0, 90*deg, 0);
105  CPPUNIT_ASSERT(Verify<CloseTo>(
106  EastEq2.GetCoordinates(ECEF), Triple(0, wgs84.GetEquatorialRadius(), 0)));
107 
108  const Point NPole1 = Point(0, 0, wgs84.GetPolarRadius(), ECEF);
109  CPPUNIT_ASSERT(Verify<CloseTo>(
110  wgs84.PointToLatitudeLongitudeHeight(NPole1), Triple(90*deg,0,0)));
111 
112  const Point NPole2 = wgs84.LatitudeLongitudeHeightToPoint(90*deg, 0, 0);
113  CPPUNIT_ASSERT(Verify<CloseTo>(
114  NPole2.GetCoordinates(ECEF), Triple(0,0,wgs84.GetPolarRadius())));
115  }
116 
117 };
118 
119 
121 
122 
123 // Configure (x)emacs for this file ...
124 // Local Variables:
125 // mode:c++
126 // compile-command: "make -C .. -k run-testGeometry"
127 // End:
Point object.
Definition: Point.h:32
double GetEccentricity2() const
Get eccentricity.
Base class for all exceptions used in the auger offline code.
Point LatitudeLongitudeHeightToPoint(double const latitude, double const longitude, double const height) const
Convert Lat/Long/Height to Point.
static const ReferenceEllipsoid & Get(const EllipsoidID theID)
Get known ellipsoid by registered ID.
CPPUNIT_TEST_SUITE_REGISTRATION(testAiresShowerFile)
constexpr double deg
Definition: AugerUnits.h:140
boost::shared_ptr< const CoordinateTransformer > CoordinateSystemPtr
Shared pointer for coordinate systems.
boost::tuple< double, double, double > Triple
Coordinate triple for easy getting or setting of coordinates.
Definition: Triple.h:15
Reference ellipsoids for UTM transformations.
double GetEquatorialRadius() const
Get equatorial radius ( )
double GetFlattening() const
Get flattening.
Triple PointToLatitudeLongitudeHeight(const Point &thePoint) const
Convert Point to Lat/Long/Height.
static const ReferenceEllipsoid & GetWGS84()
Get the auger standard ellipsoid: wgs84.
void Expected()
Print `Expected&#39; for expected failures.
Definition: Verify.h:85
Report request for non-existent ellipsoid.
double GetPolarRadius() const
Get Polar radius ( )
const CoordinateSystemPtr GetECEF() const
Get the ECEF.
EllipsoidID
ID&#39;s of known reference ellipsoid&#39;s.

, generated on Tue Sep 26 2023.