From fc793e7b1de6d777e78a130dea852a7ade380104 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Mon, 4 Jul 2011 13:34:20 -0400 Subject: [PATCH] Duration - Implemented missing operator<=, operator>=. - Added corresponding unit tests. --- src/Duration.cpp | 18 ++++++++++++++++++ src/Duration.h | 2 ++ test/duration.t.cpp | 12 +++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/Duration.cpp b/src/Duration.cpp index 5b5c86230..423558f6e 100644 --- a/src/Duration.cpp +++ b/src/Duration.cpp @@ -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 () { diff --git a/src/Duration.h b/src/Duration.h index 9d2b05731..ceef31a71 100644 --- a/src/Duration.h +++ b/src/Duration.h @@ -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 diff --git a/test/duration.t.cpp b/test/duration.t.cpp index 5e11b35cf..a9892b153 100644 --- a/test/duration.t.cpp +++ b/test/duration.t.cpp @@ -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); }