- Implemented missing operator<=, operator>=.
- Added corresponding unit tests.
This commit is contained in:
Paul Beckingham 2011-07-04 13:34:20 -04:00
parent 33bb6b6d85
commit fc793e7b1d
3 changed files with 31 additions and 1 deletions

View file

@ -226,6 +226,15 @@ bool Duration::operator< (const Duration& other)
return left < right;
}
////////////////////////////////////////////////////////////////////////////////
bool Duration::operator<= (const Duration& other)
{
long left = (long) ( mNegative ? -mSecs : mSecs);
long right = (long) (other.mNegative ? -other.mSecs : other.mSecs);
return left <= right;
}
////////////////////////////////////////////////////////////////////////////////
bool Duration::operator> (const Duration& other)
{
@ -235,6 +244,15 @@ bool Duration::operator> (const Duration& other)
return left > right;
}
////////////////////////////////////////////////////////////////////////////////
bool Duration::operator>= (const Duration& other)
{
long left = (long) ( mNegative ? -mSecs : mSecs);
long right = (long) (other.mNegative ? -other.mSecs : other.mSecs);
return left >= right;
}
////////////////////////////////////////////////////////////////////////////////
Duration::~Duration ()
{

View file

@ -39,7 +39,9 @@ public:
Duration (time_t); // Constructor
Duration (const std::string&); // Parse
bool operator< (const Duration&);
bool operator<= (const Duration&);
bool operator> (const Duration&);
bool operator>= (const Duration&);
Duration& operator= (const Duration&);
Duration& operator- (const Duration&);
~Duration (); // Destructor

View file

@ -48,7 +48,7 @@ int convertDuration (const std::string& input)
int main (int argc, char** argv)
{
UnitTest t (608);
UnitTest t (618);
Duration d;
@ -731,6 +731,16 @@ int main (int argc, char** argv)
left = Duration ("1y"); right = Duration ("1q"); t.ok (left > right, "1y > 1q");
left = Duration ("-3s"); right = Duration ("-6s"); t.ok (left > right, "duration -3s > -6s");
// operator<=
left = Duration ("1sec"); right = Duration ("2secs"); t.ok (left <= right, "duration 1sec <= 2secs");
left = Duration ("2secs"); right = Duration ("2secs"); t.ok (left <= right, "duration 1sec <= 2secs");
left = Duration ("2secs"); right = Duration ("1secs"); t.notok (left <= right, "duration NOT 1sec <= 2secs");
// operator>=
left = Duration ("1sec"); right = Duration ("2secs"); t.notok (left >= right, "duration NOT 1sec >= 2secs");
left = Duration ("2secs"); right = Duration ("2secs"); t.ok (left >= right, "duration 1sec >= 2secs");
left = Duration ("2secs"); right = Duration ("1secs"); t.ok (left >= right, "duration 1sec >= 2secs");
}
catch (const std::string& e) { t.diag (e); }