summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2016-02-02 15:57:44 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2016-02-02 15:57:44 +0100
commitd3e6e732c70ebc2340d6376d727b3c623be23810 (patch)
tree18d469f02ac36edd04b87a9bfa4886ceef0490f0 /tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
parentfdfd63053ae6b10af06553be3c1b15de274bebf7 (diff)
parentba8d3430029d8c4342e9a47c110ee8c9879818f4 (diff)
Merge remote-tracking branch 'origin/5.6' into dev
Conflicts: config.tests/unix/compile.test src/plugins/platforms/cocoa/qcocoahelpers.mm src/tools/qlalr/cppgenerator.cpp Change-Id: I0103ca076a9aca7118b2fd99f0fdaf81055998c3
Diffstat (limited to 'tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp')
-rw-r--r--tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp70
1 files changed, 67 insertions, 3 deletions
diff --git a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
index 9cadf60afb..ff049b7600 100644
--- a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
+++ b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
@@ -1610,8 +1610,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()
@@ -1631,6 +1637,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);
@@ -1640,6 +1648,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)));
@@ -1647,6 +1671,44 @@ 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)));
+
+ // Now use the result of a UTC -> LocalTime conversion
+ dt = QDateTime(outDST, QTime(0, 0, 0), Qt::LocalTime).toUTC();
+ dt = QDateTime(dt.date(), dt.time(), Qt::UTC).toLocalTime();
+ QCOMPARE(dt, QDateTime(outDST, QTime(0, 0, 0)));
+
+ // using addDays:
+ dt = dt.addDays(-days).addSecs(3600);
+ QCOMPARE(dt, QDateTime(inDST, QTime(1, 0, 0)));
+ // back again
+ dt = dt.addDays(days).addSecs(3600);
+ QCOMPARE(dt, QDateTime(outDST, QTime(2, 0, 0)));
+
+ // using addMonths:
+ dt = dt.addMonths(-months).addSecs(3600);
+ QCOMPARE(dt, QDateTime(inDST, QTime(3, 0, 0)));
+ // back again:
+ dt = dt.addMonths(months).addSecs(3600);
+ QCOMPARE(dt, QDateTime(outDST, QTime(4, 0, 0)));
+
+ // using setDate:
+ dt.setDate(inDST);
+ dt = dt.addSecs(3600);
+ QCOMPARE(dt, QDateTime(inDST, QTime(5, 0, 0)));
}
void tst_QDateTime::springForward_data()
@@ -2222,7 +2284,9 @@ void tst_QDateTime::fromStringStringFormat_data()
QTest::newRow("data5") << QString("10") << QString("'") << invalidDateTime();
QTest::newRow("data6") << QString("pm") << QString("ap") << QDateTime(defDate(), QTime(12, 0, 0));
QTest::newRow("data7") << QString("foo") << QString("ap") << invalidDateTime();
- QTest::newRow("data8") << QString("101010") << QString("dMyy") << QDateTime(QDate(1910, 10, 10), QTime());
+ // Day non-conflict should not hide earlier year conflict (1963-03-01 was a
+ // Friday; asking for Thursday moves this, without conflict, to the 7th):
+ QTest::newRow("data8") << QString("77 03 1963 " + thu) << QString("yy MM yyyy ddd") << invalidDateTime();
QTest::newRow("data9") << QString("101010") << QString("dMyy") << QDateTime(QDate(1910, 10, 10), QTime());
QTest::newRow("data10") << QString("101010") << QString("dMyy") << QDateTime(QDate(1910, 10, 10), QTime());
QTest::newRow("data11") << date << QString("dd MMM yy") << QDateTime(QDate(1910, 10, 10), QTime());