Make wxTimeSpan::operator-() const

Due to an oversight, it wasn't declared as const, making it impossible to
subtract from a const wxTimeSpan object.

Fix this and add a unit test verifying that this compiles and works as
expected.

Closes #17583.
This commit is contained in:
Vadim Zeitlin
2016-06-30 16:49:20 +02:00
parent 9bf97bd607
commit ffcdcc1617
3 changed files with 16 additions and 1 deletions

View File

@@ -1210,7 +1210,7 @@ public:
inline wxTimeSpan& Subtract(const wxTimeSpan& diff);
// subtract another timespan
wxTimeSpan& operator-=(const wxTimeSpan& diff) { return Subtract(diff); }
inline wxTimeSpan operator-(const wxTimeSpan& ts)
inline wxTimeSpan operator-(const wxTimeSpan& ts) const
{
return wxTimeSpan(GetValue() - ts.GetValue());
}

View File

@@ -1346,6 +1346,10 @@ void DateTimeTestCase::TestTimeArithmetics()
// And a reverse. Now we should use days in Jun (again 30 => 4w 1d)
CPPUNIT_ASSERT_EQUAL( wxDateSpan(0, -10, -4, -1), dtd1.DiffAsDateSpan(dtd2) );
const wxTimeSpan ts1 = wxTimeSpan::Seconds(30);
const wxTimeSpan ts2 = wxTimeSpan::Seconds(5);
CPPUNIT_ASSERT_EQUAL( wxTimeSpan::Seconds(25), ts1 - ts2 );
}
void DateTimeTestCase::TestDSTBug()

View File

@@ -30,6 +30,17 @@ inline std::ostream& operator<<(std::ostream& ostr, const wxDateSpan& span)
return ostr;
}
inline std::ostream& operator<<(std::ostream& ostr, const wxTimeSpan& span)
{
ostr << span.GetWeeks() << "W, "
<< span.GetDays() << "D, "
<< span.GetHours() << ":"
<< span.GetMinutes() << ":"
<< span.GetSeconds() << "."
<< span.GetMilliseconds();
return ostr;
}
WX_CPPUNIT_ALLOW_EQUALS_TO_INT(wxDateTime::wxDateTime_t)
#endif // _WX_TESTS_TESTDATE_H_