summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/tools')
-rw-r--r--tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp50
1 files changed, 16 insertions, 34 deletions
diff --git a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
index cfc3a32bf5..710da0dc1e 100644
--- a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
+++ b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
@@ -528,12 +528,7 @@ void tst_QDateTime::setMSecsSinceEpoch_data()
// positive value 1 too big for qint64max, causing an overflow.
<< std::numeric_limits<qint64>::min() + 1
<< QDateTime(QDate(-292275056, 5, 16), QTime(16, 47, 4, 193), Qt::UTC)
-#ifdef Q_OS_WIN
- // Windows applies Daylight Time to dates before 1980, Olsen does not
- << QDateTime(QDate(-292275056, 5, 16), QTime(18, 47, 4, 193), Qt::LocalTime);
-#else
<< QDateTime(QDate(-292275056, 5, 16), QTime(17, 47, 4, 193), Qt::LocalTime);
-#endif
QTest::newRow("max")
<< std::numeric_limits<qint64>::max()
<< QDateTime(QDate(292278994, 8, 17), QTime(7, 12, 55, 807), Qt::UTC)
@@ -561,7 +556,9 @@ void tst_QDateTime::setMSecsSinceEpoch()
localDt.setTimeSpec(Qt::LocalTime);
localDt.setMSecsSinceEpoch(msecs);
- QCOMPARE(localDt, utc);
+ // LocalTime will overflow for max
+ if (msecs != std::numeric_limits<qint64>::max())
+ QCOMPARE(localDt, utc);
QCOMPARE(localDt.timeSpec(), Qt::LocalTime);
}
@@ -590,7 +587,9 @@ void tst_QDateTime::fromMSecsSinceEpoch()
QDateTime dtUtc = QDateTime::fromMSecsSinceEpoch(msecs, Qt::UTC);
QDateTime dtOffset = QDateTime::fromMSecsSinceEpoch(msecs, Qt::OffsetFromUTC, 60*60);
- QCOMPARE(dtLocal, utc);
+ // LocalTime will overflow for max
+ if (msecs != std::numeric_limits<qint64>::max())
+ QCOMPARE(dtLocal, utc);
QCOMPARE(dtUtc, utc);
QCOMPARE(dtUtc.date(), utc.date());
@@ -598,7 +597,9 @@ void tst_QDateTime::fromMSecsSinceEpoch()
QCOMPARE(dtOffset, utc);
QCOMPARE(dtOffset.offsetFromUtc(), 60*60);
- QCOMPARE(dtOffset.time(), utc.time().addMSecs(60*60*1000));
+ // // OffsetFromUTC will overflow for max
+ if (msecs != std::numeric_limits<qint64>::max())
+ QCOMPARE(dtOffset.time(), utc.time().addMSecs(60*60*1000));
if (europeanTimeZone) {
QCOMPARE(dtLocal.toLocalTime(), european);
@@ -608,7 +609,9 @@ void tst_QDateTime::fromMSecsSinceEpoch()
QSKIP("You must test using Central European (CET/CEST) time zone, e.g. TZ=Europe/Oslo");
}
- QCOMPARE(dtLocal.toMSecsSinceEpoch(), msecs);
+ // LocalTime will overflow for max
+ if (msecs != std::numeric_limits<qint64>::max())
+ QCOMPARE(dtLocal.toMSecsSinceEpoch(), msecs);
QCOMPARE(dtUtc.toMSecsSinceEpoch(), msecs);
QCOMPARE(dtOffset.toMSecsSinceEpoch(), msecs);
@@ -619,7 +622,9 @@ void tst_QDateTime::fromMSecsSinceEpoch()
}
QDateTime reference(QDate(1970, 1, 1), QTime(), Qt::UTC);
- QCOMPARE(dtLocal, reference.addMSecs(msecs));
+ // LocalTime will overflow for max
+ if (msecs != std::numeric_limits<qint64>::max())
+ QCOMPARE(dtLocal, reference.addMSecs(msecs));
QCOMPARE(dtUtc, reference.addMSecs(msecs));
QCOMPARE(dtOffset, reference.addMSecs(msecs));
}
@@ -982,15 +987,8 @@ void tst_QDateTime::addSecs_data()
<< QDateTime(QDate(2005, 1, 1), standardTime, Qt::LocalTime);
QTest::newRow("cet3") << QDateTime(QDate(1760, 1, 1), standardTime, Qt::LocalTime) << 86400
<< QDateTime(QDate(1760, 1, 2), standardTime, Qt::LocalTime);
-#ifdef Q_OS_WIN
- // QDateTime uses 1980 on Windows, which did have daylight savings in July
- QTest::newRow("cet4") << QDateTime(QDate(1760, 1, 1), standardTime, Qt::LocalTime) << (86400 * 185)
- << QDateTime(QDate(1760, 7, 4), daylightTime, Qt::LocalTime);
-#else
- // QDateTime uses 1970 everywhere else, which did NOT have daylight savings in July
QTest::newRow("cet4") << QDateTime(QDate(1760, 1, 1), standardTime, Qt::LocalTime) << (86400 * 185)
<< QDateTime(QDate(1760, 7, 4), standardTime, Qt::LocalTime);
-#endif
QTest::newRow("cet5") << QDateTime(QDate(1760, 1, 1), standardTime, Qt::LocalTime) << (86400 * 366)
<< QDateTime(QDate(1761, 1, 1), standardTime, Qt::LocalTime);
QTest::newRow("cet6") << QDateTime(QDate(4000, 1, 1), standardTime, Qt::LocalTime) << 86400
@@ -1088,33 +1086,16 @@ void tst_QDateTime::toTimeSpec_data()
QTest::newRow("-271821/4/20 00:00 UTC (JavaScript min date, start of day)")
<< QDateTime(QDate(-271821, 4, 20), QTime(0, 0, 0), Qt::UTC)
-#ifdef Q_OS_WIN
- // Windows applies Daylight Time to dates before 1980, Olsen does not
- << QDateTime(QDate(-271821, 4, 20), QTime(2, 0, 0), Qt::LocalTime);
-#else
<< QDateTime(QDate(-271821, 4, 20), QTime(1, 0, 0), Qt::LocalTime);
-#endif
QTest::newRow("-271821/4/20 23:00 UTC (JavaScript min date, end of day)")
<< QDateTime(QDate(-271821, 4, 20), QTime(23, 0, 0), Qt::UTC)
-#ifdef Q_OS_WIN
- // Windows applies Daylight Time to dates before 1980, Olsen does not
- << QDateTime(QDate(-271821, 4, 21), QTime(1, 0, 0), Qt::LocalTime);
-#else
<< QDateTime(QDate(-271821, 4, 21), QTime(0, 0, 0), Qt::LocalTime);
-#endif
if (europeanTimeZone) {
QTest::newRow("summer1") << QDateTime(QDate(2004, 6, 30), utcTime, Qt::UTC)
<< QDateTime(QDate(2004, 6, 30), localDaylightTime, Qt::LocalTime);
-#ifdef Q_OS_WIN
- // QDateTime uses 1980 on Windows, which did have daylight savings in July
- QTest::newRow("summer2") << QDateTime(QDate(1760, 6, 30), utcTime, Qt::UTC)
- << QDateTime(QDate(1760, 6, 30), localDaylightTime, Qt::LocalTime);
-#else
- // QDateTime uses 1970 everywhere else, which did NOT have daylight savings in July
QTest::newRow("summer2") << QDateTime(QDate(1760, 6, 30), utcTime, Qt::UTC)
<< QDateTime(QDate(1760, 6, 30), localStandardTime, Qt::LocalTime);
-#endif
QTest::newRow("summer3") << QDateTime(QDate(4000, 6, 30), utcTime, Qt::UTC)
<< QDateTime(QDate(4000, 6, 30), localDaylightTime, Qt::LocalTime);
@@ -2437,6 +2418,7 @@ void tst_QDateTime::daylightTransitions() const
QCOMPARE(test.time(), QTime(3, 0, 0));
QCOMPARE(test.toMSecsSinceEpoch(), daylight2012);
+
// Test for correct behviour for DaylightTime -> StandardTime transition, i.e. second occurrence
// Test setting date and time in first and second occurrence will be valid