From a53601e5d04260357d854dbc2a0767b94a40cb52 Mon Sep 17 00:00:00 2001 From: Martchus Date: Sun, 25 Jun 2017 15:08:23 +0200 Subject: [PATCH] Improve chrono tests --- tests/chronotests.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/tests/chronotests.cpp b/tests/chronotests.cpp index bfc1899..a40e890 100644 --- a/tests/chronotests.cpp +++ b/tests/chronotests.cpp @@ -63,14 +63,20 @@ void ChronoTests::testDateTime() CPPUNIT_ASSERT_EQUAL("Wed 2012-02-29 15:34:20.033"s, test1.toString(DateTimeOutputFormat::DateTimeAndShortWeekday)); // test fromTimeStamp() - const auto test2 = DateTime::fromTimeStampGmt(1453840331); - CPPUNIT_ASSERT_EQUAL("Tue 2016-01-26 20:32:11"s, test2.toString(DateTimeOutputFormat::DateTimeAndShortWeekday)); + CPPUNIT_ASSERT_EQUAL("Tue 2016-01-26 20:32:11"s, DateTime::fromTimeStampGmt(1453840331).toString(DateTimeOutputFormat::DateTimeAndShortWeekday)); + CPPUNIT_ASSERT_EQUAL("Tuesday 2016-01-26 21:32:11"s, DateTime::fromTimeStamp(1453840331).toString(DateTimeOutputFormat::DateTimeAndWeekday)); + CPPUNIT_ASSERT_EQUAL(DateTime(), DateTime::fromTimeStamp(0)); // test whether ConversionException() is thrown when invalid values are specified + CPPUNIT_ASSERT_THROW(DateTime::fromDate(0, 1, 1), ConversionException); + CPPUNIT_ASSERT_THROW(DateTime::fromDate(2012, 15, 1), ConversionException); + CPPUNIT_ASSERT_THROW(DateTime::fromDateAndTime(0, 2, 29, 15, 34, 20, 33), ConversionException); CPPUNIT_ASSERT_THROW(DateTime::fromDateAndTime(2013, 2, 29, 15, 34, 20, 33), ConversionException); CPPUNIT_ASSERT_THROW(DateTime::fromDateAndTime(2012, 2, 29, 15, 61, 20, 33), ConversionException); CPPUNIT_ASSERT_THROW(DateTime::fromDateAndTime(2012, 4, 31, 15, 0, 20, 33), ConversionException); CPPUNIT_ASSERT_THROW(DateTime::fromDateAndTime(2012, 3, 31, 15, 0, 61, 33), ConversionException); + CPPUNIT_ASSERT_THROW(DateTime::fromDateAndTime(2012, 1, 1, 61, 2, 1), ConversionException); + CPPUNIT_ASSERT_THROW(DateTime::fromDateAndTime(2012, 1, 1, 15, 2, 1, 2000.0), ConversionException); // test fromString()/toString() CPPUNIT_ASSERT_EQUAL(test1, DateTime::fromString("2012-02-29 15:34:20.033")); @@ -78,6 +84,7 @@ void ChronoTests::testDateTime() CPPUNIT_ASSERT_THROW(TimeSpan::fromString("2012-02-29 15:34:34:20.033"), ConversionException); const auto test3 = DateTime::fromIsoString("2016-08-29T21:32:31.125+02:00"); CPPUNIT_ASSERT_EQUAL("2016-08-29T21:32:31.125+02:00"s, test3.first.toIsoString(test3.second)); + CPPUNIT_ASSERT_THROW(DateTime::fromString("#"), ConversionException); // test now() and exactNow() (or at least whether both behave the same) #if defined(PLATFORM_UNIX) @@ -92,7 +99,11 @@ void ChronoTests::testDateTime() void ChronoTests::testTimeSpan() { // test fromString(...), this should also test all other from...() methods and + operator - auto test1 = TimeSpan::fromString("2:34:53:2.5"); + CPPUNIT_ASSERT_EQUAL(TimeSpan(), TimeSpan::fromString(string())); + CPPUNIT_ASSERT_EQUAL(TimeSpan::fromSeconds(5.0), TimeSpan::fromString("5.0")); + CPPUNIT_ASSERT_EQUAL(TimeSpan::fromMinutes(5.5), TimeSpan::fromString("5:30")); + CPPUNIT_ASSERT_EQUAL(TimeSpan::fromHours(7) + TimeSpan::fromMinutes(5.5), TimeSpan::fromString("7:5:30")); + const auto test1 = TimeSpan::fromString("2:34:53:2.5"); // test days(), hours(), ... CPPUNIT_ASSERT_EQUAL(3, test1.days()); CPPUNIT_ASSERT_EQUAL(10, test1.hours()); @@ -102,7 +113,12 @@ void ChronoTests::testTimeSpan() CPPUNIT_ASSERT(test1.totalDays() > 3.0 && test1.totalDays() < 4.0); CPPUNIT_ASSERT(test1.totalHours() > (2 * 24 + 34) && test1.totalHours() < (2 * 24 + 35)); CPPUNIT_ASSERT(test1.totalMinutes() > (2 * 24 * 60 + 34 * 60 + 53) && test1.totalHours() < (2 * 24 * 60 + 34 * 60 + 54)); + // test toString(...) CPPUNIT_ASSERT_EQUAL("3 d 10 h 53 min 2 s 500 ms"s, test1.toString(TimeSpanOutputFormat::WithMeasures, false)); + CPPUNIT_ASSERT_EQUAL("07:05:30"s, (TimeSpan::fromHours(7) + TimeSpan::fromMinutes(5.5)).toString()); + CPPUNIT_ASSERT_EQUAL("-5 s"s, TimeSpan::fromSeconds(-5.0).toString(TimeSpanOutputFormat::WithMeasures, false)); + CPPUNIT_ASSERT_EQUAL("0 s"s, TimeSpan().toString(TimeSpanOutputFormat::WithMeasures, false)); + CPPUNIT_ASSERT_EQUAL("5e+02 µs"s, TimeSpan::fromMilliseconds(0.5).toString(TimeSpanOutputFormat::WithMeasures, false)); // test whether ConversionException() is thrown when invalid values are specified CPPUNIT_ASSERT_THROW(TimeSpan::fromString("2:34a:53:32.5"), ConversionException);