File failed to load: https://isis.astrogeology.usgs.gov/3.9.0/Object/assets/jax/output/NativeMML/config.js
Isis 3 Programmer Reference
LongitudeTests.cpp
1 #include <gtest/gtest.h>
2 
3 #include "Longitude.h"
4 #include "SpecialPixel.h"
5 
6 using namespace Isis;
7 
8 // ----- Testing Constructors -----
9 // Default constructor
10 TEST(Longitude, DefaultConstructor) {
11  Longitude lon;
12  EXPECT_EQ(Isis::Null, lon.degrees());
13 }
14 
15 // Constructor given a value in degrees
16 TEST(Longitude, DegreesConstructor) {
17  Longitude lon(180.0, Angle::Degrees);
18  EXPECT_EQ(180, lon.degrees());
19 }
20 
21 
22 // Constructor given a positive west value in degrees
23 TEST(Longitude, PositiveWest) {
25  EXPECT_EQ(180, lon.degrees());
26 }
27 
28 // Constructor given a positive west, -90 value in degrees
29 TEST(Longitude, PWNegative90) {
32  EXPECT_EQ(90, lon.degrees());
33 }
34 
35 // Constructor given -90 degrees PW & 360 domain
36 TEST(Longitude, PW360Domain) {
39  EXPECT_EQ(450, lon.degrees());
40 }
41 
42 // Copy constructor
43 TEST(Longitude, CopyConstructor) {
44  Longitude lon(90.0, Angle::Degrees);
45  EXPECT_EQ(lon.degrees(), Longitude(lon).degrees());
46 
47  Longitude lonCopy(lon);
48  lonCopy = lon;
49  EXPECT_EQ(90, lonCopy.degrees());
50 }
51 
52 // ----- Testing Set Methods -----
53 // Set to 90 degrees
54 TEST(Longitude, Set90Degrees) {
55  Longitude lon(270.0, Angle::Degrees);
57  EXPECT_EQ(90, lon.degrees());
58 }
59 
60 // Set to 90 degrees PW
61 TEST(Longitude, Set90DegreesPW) {
62  Longitude lon(270.0, Angle::Degrees);
64  EXPECT_EQ(270, lon.degrees());
65 }
66 
67 // ----- Testing Get Methods -----
68 TEST(Longitude, Get90Degrees) {
69  Longitude lon(90.0, Angle::Degrees);
70 
71  // degrees universal
72  EXPECT_EQ(90, lon.degrees());
73 
74  // degrees positive east
75  EXPECT_EQ(90, lon.positiveEast(Angle::Degrees));
76 
77  // radians positive east
78  EXPECT_EQ(0.5, lon.positiveEast(Angle::Radians) / PI);
79 
80  // degrees positive west
81  EXPECT_EQ(270, lon.positiveWest(Angle::Degrees));
82 
83  // radians positive west
84  EXPECT_EQ(1.5, lon.positiveWest(Angle::Radians) / PI);
85 }
86 
87 TEST(Longitude, Get450Degrees) {
88  Longitude lon(450.0, Angle::Degrees);
89 
90  // degrees universal
91  EXPECT_EQ(450, lon.degrees());
92 
93  // degrees positive east
94  EXPECT_EQ(450, lon.positiveEast(Angle::Degrees));
95 
96  // radians positive east
97  EXPECT_EQ(2.5, lon.positiveEast(Angle::Radians) / PI);
98 
99  // degrees positive west
100  EXPECT_EQ(-90, lon.positiveWest(Angle::Degrees));
101 
102  // radians positive west
103  EXPECT_EQ(-0.5, lon.positiveWest(Angle::Radians) / PI);
104 }
105 
106 TEST(Longitude, GetNegative450Degrees) {
107  Longitude lon(-450.0, Angle::Degrees);
108 
109  // degrees universal
110  EXPECT_EQ(-450, lon.degrees());
111 
112  // degrees positive east
113  EXPECT_EQ(-450, lon.positiveEast(Angle::Degrees));
114 
115  // radians positive east
116  EXPECT_EQ(-2.5, lon.positiveEast(Angle::Radians) / PI);
117 
118  // degrees positive west
119  EXPECT_EQ(810, lon.positiveWest(Angle::Degrees));
120 
121  // radians positive west
122  EXPECT_EQ(4.5, lon.positiveWest(Angle::Radians) / PI);
123 }
124 
125 TEST(Longitude, GetNegative450DegreesPW) {
127 
128  // degrees universal
129  EXPECT_EQ(810, lon.degrees());
130 
131  // degrees positive east
132  EXPECT_EQ(810, lon.positiveEast(Angle::Degrees));
133 
134  // radians positive east
135  EXPECT_EQ(4.5, lon.positiveEast(Angle::Radians) / PI);
136 
137  // degrees positive west
138  EXPECT_EQ(-450, lon.positiveWest(Angle::Degrees));
139 
140  // radians positive west
141  EXPECT_EQ(-2.5, lon.positiveWest(Angle::Radians) / PI);
142 }
143 
144 // ----- Testing Domain Methods -----
145 TEST(Longitude, ForceDomain) {
146  Longitude lon(270.0, Angle::Degrees);
147 
148  // Test force180Domain
149  EXPECT_EQ(-90, lon.force180Domain().degrees());
150 
151  // Test force360Domain
152  EXPECT_EQ(270, lon.force360Domain().degrees());
153 
154  // Force 360 to the 360 domain
155  lon.setPositiveEast(360.0, Angle::Degrees);
156  EXPECT_EQ(360, lon.force360Domain().degrees());
157 
158 }
159 
160 // ----- Testing Range Methods -----
161 
162 TEST(Longitude, InRange) {
163 
164  Longitude lon(45.0, Angle::Degrees);
165 
166  EXPECT_TRUE(lon.inRange(Longitude(0, Angle::Degrees), Longitude(360, Angle::Degrees)));
167  EXPECT_FALSE(lon.inRange(Longitude(360, Angle::Degrees), Longitude(0, Angle::Degrees)));
168  EXPECT_FALSE(lon.inRange(Longitude(350, Angle::Degrees), Longitude(355, Angle::Degrees)));
169  EXPECT_TRUE(lon.inRange(Longitude(0, Angle::Degrees), Longitude(160, Angle::Degrees)));
170  EXPECT_FALSE(lon.inRange(Longitude(0, Angle::Degrees), Longitude(44, Angle::Degrees)));
171  EXPECT_FALSE(lon.inRange(Longitude(46, Angle::Degrees), Longitude(90, Angle::Degrees)));
172  EXPECT_TRUE(lon.inRange(Longitude(0, Angle::Degrees), Longitude(45, Angle::Degrees)));
173  EXPECT_TRUE(lon.inRange(Longitude(45, Angle::Degrees), Longitude(90, Angle::Degrees)));
174 }
const double Null
Value for an Isis Null pixel.
Definition: SpecialPixel.h:110
const double PI
The mathematical constant PI.
Definition: Constants.h:56
double positiveWest(Angle::Units units=Angle::Radians) const
Get the longitude in the PositiveWest coordinate system.
Definition: Longitude.cpp:171
Longitude force180Domain() const
This returns a longitude that is constricted to -180 to 180 degrees.
Definition: Longitude.cpp:302
Longitude force360Domain() const
This returns a longitude that is constricted to 0-360 degrees.
Definition: Longitude.cpp:280
double degrees() const
Get the angle in units of Degrees.
Definition: Angle.h:249
As the longitude increases the actual position is more west.
Definition: Longitude.h:62
void setPositiveEast(double longitude, Angle::Units units=Angle::Radians)
Set the longitude given a value in the PositiveEast longitude system.
Definition: Longitude.cpp:212
This class is designed to encapsulate the concept of a Longitude.
Definition: Longitude.h:52
Degrees are generally considered more human readable, 0-360 is one circle, however most math does not...
Definition: Angle.h:73
As the longitude increases the actual position is more east.
Definition: Longitude.h:76
double positiveEast(Angle::Units units=Angle::Radians) const
Get the longitude in the PositiveEast coordinate system.
Definition: Longitude.cpp:159
Unless noted otherwise, the portions of Isis written by the USGS are public domain.
void setPositiveWest(double longitude, Angle::Units units=Angle::Radians)
Set the longitude given a value in the PositiveWest longitude system.
Definition: Longitude.cpp:223
As the longitude increases the actual position is more west.
Definition: Longitude.h:78
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
bool inRange(Longitude min, Longitude max) const
Checks if this longitude value is within the given range.
Definition: Longitude.cpp:332
Radians are generally used in mathematical equations, 0-2*PI is one circle, however these are more di...
Definition: Angle.h:80

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the USGS Astrogeology Discussion Board
To report a bug, or suggest a feature go to: ISIS Github
File Modified: 07/12/2023 23:24:02