- Implemented operator+=, operator-=.
- Added unit tests.
This commit is contained in:
Paul Beckingham 2011-07-04 14:22:33 -04:00
parent b70f4e8528
commit 8ff3a1675d
3 changed files with 89 additions and 5 deletions

View file

@ -155,9 +155,60 @@ Duration& Duration::operator= (const Duration& other)
}
////////////////////////////////////////////////////////////////////////////////
Duration& Duration::operator- (const Duration& other)
Duration Duration::operator- (const Duration& other)
{
throw std::string ("Error: Duration::operator- unimplemented");
int left = mSecs * ( mNegative ? -1 : 1);
int right = other.mSecs * (other.mNegative ? -1 : 1);
left -= right;
Duration result;
result.mSecs = abs (left);
result.mNegative = left < 0;
return result;
}
////////////////////////////////////////////////////////////////////////////////
Duration Duration::operator+ (const Duration& other)
{
int left = mSecs * ( mNegative ? -1 : 1);
int right = other.mSecs * (other.mNegative ? -1 : 1);
left += right;
Duration result;
result.mSecs = abs (left);
result.mNegative = left < 0;
return result;
}
////////////////////////////////////////////////////////////////////////////////
Duration& Duration::operator-= (const Duration& other)
{
int left = mSecs * ( mNegative ? -1 : 1);
int right = other.mSecs * (other.mNegative ? -1 : 1);
left -= right;
mSecs = abs (left);
mNegative = left < 0;
return *this;
}
////////////////////////////////////////////////////////////////////////////////
Duration& Duration::operator+= (const Duration& other)
{
int left = mSecs * ( mNegative ? -1 : 1);
int right = other.mSecs * (other.mNegative ? -1 : 1);
left += right;
mSecs = abs (left);
mNegative = left < 0;
return *this;
}

View file

@ -43,7 +43,10 @@ public:
bool operator> (const Duration&);
bool operator>= (const Duration&);
Duration& operator= (const Duration&);
Duration& operator- (const Duration&);
Duration operator- (const Duration&);
Duration operator+ (const Duration&);
Duration& operator-= (const Duration&);
Duration& operator+= (const Duration&);
~Duration (); // Destructor
operator time_t () const;
@ -56,7 +59,7 @@ public:
static bool valid (const std::string&);
void parse (const std::string&);
private:
protected:
time_t mSecs;
bool mNegative;
};