summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@theqtcompany.com>2015-11-04 12:46:57 +0100
committerEdward Welbourne <edward.welbourne@theqtcompany.com>2016-01-26 13:50:04 +0000
commit4970a436761f69608a030e27b9b8102e94a3f4f0 (patch)
tree5fe1f4800a3d7668fb47821920974b236a139afe /tests
parentae5c4500c5d717a79214c22a4f11e65381f4ccc8 (diff)
Test .addDays() and .addMonths() are sensible around DST changes.
Task-number: QTBUG-49008 Change-Id: Ie3bf9dfeb67c96b18320e18c14b9680f03cb98e9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp42
1 files changed, 40 insertions, 2 deletions
diff --git a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
index d880d907d1..0fb43b7fe8 100644
--- a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
+++ b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
@@ -1614,8 +1614,14 @@ void tst_QDateTime::daylightSavingsTimeChange_data()
{
QTest::addColumn<QDate>("inDST");
QTest::addColumn<QDate>("outDST");
- QTest::newRow("Autumn") << QDate(2006, 8, 1) << QDate(2006, 12, 1);
- QTest::newRow("Spring") << QDate(2006, 5, 1) << QDate(2006, 2, 1);
+ QTest::addColumn<int>("days"); // from in to out; -ve if reversed
+ QTest::addColumn<int>("months");
+
+ QTest::newRow("Autumn") << QDate(2006, 8, 1) << QDate(2006, 12, 1)
+ << 122 << 4;
+
+ QTest::newRow("Spring") << QDate(2006, 5, 1) << QDate(2006, 2, 1)
+ << -89 << -3;
}
void tst_QDateTime::daylightSavingsTimeChange()
@@ -1635,6 +1641,8 @@ void tst_QDateTime::daylightSavingsTimeChange()
QFETCH(QDate, inDST);
QFETCH(QDate, outDST);
+ QFETCH(int, days);
+ QFETCH(int, months);
// First with simple construction
QDateTime dt = QDateTime(outDST, QTime(0, 0, 0), Qt::LocalTime);
@@ -1644,6 +1652,22 @@ void tst_QDateTime::daylightSavingsTimeChange()
dt = dt.addSecs(1);
QCOMPARE(dt, QDateTime(inDST, QTime(0, 0, 1)));
+ // now using addDays:
+ dt = dt.addDays(days).addSecs(1);
+ QCOMPARE(dt, QDateTime(outDST, QTime(0, 0, 2)));
+
+ // ... and back again:
+ dt = dt.addDays(-days).addSecs(1);
+ QCOMPARE(dt, QDateTime(inDST, QTime(0, 0, 3)));
+
+ // now using addMonths:
+ dt = dt.addMonths(months).addSecs(1);
+ QCOMPARE(dt, QDateTime(outDST, QTime(0, 0, 4)));
+
+ // ... and back again:
+ dt = dt.addMonths(-months).addSecs(1);
+ QCOMPARE(dt, QDateTime(inDST, QTime(0, 0, 5)));
+
// now using fromTime_t
dt = QDateTime::fromTime_t(outDSTsecs);
QCOMPARE(dt, QDateTime(outDST, QTime(0, 0, 0)));
@@ -1651,6 +1675,20 @@ void tst_QDateTime::daylightSavingsTimeChange()
dt.setDate(inDST);
dt = dt.addSecs(60);
QCOMPARE(dt, QDateTime(inDST, QTime(0, 1, 0)));
+
+ // using addMonths:
+ dt = dt.addMonths(months).addSecs(60);
+ QCOMPARE(dt, QDateTime(outDST, QTime(0, 2, 0)));
+ // back again:
+ dt = dt.addMonths(-months).addSecs(60);
+ QCOMPARE(dt, QDateTime(inDST, QTime(0, 3, 0)));
+
+ // using addDays:
+ dt = dt.addDays(days).addSecs(60);
+ QCOMPARE(dt, QDateTime(outDST, QTime(0, 4, 0)));
+ // back again:
+ dt = dt.addDays(-days).addSecs(60);
+ QCOMPARE(dt, QDateTime(inDST, QTime(0, 5, 0)));
}
void tst_QDateTime::springForward_data()