summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/time
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/corelib/time')
-rw-r--r--tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp
index 2e45460544..bf84508522 100644
--- a/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp
+++ b/tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp
@@ -73,6 +73,7 @@ private slots:
void setSecsSinceEpoch();
void setMSecsSinceEpoch_data();
void setMSecsSinceEpoch();
+ void fromSecsSinceEpoch();
void fromMSecsSinceEpoch_data();
void fromMSecsSinceEpoch();
void toString_isoDate_data();
@@ -790,6 +791,36 @@ void tst_QDateTime::fromMSecsSinceEpoch()
QCOMPARE(dtOffset, reference.addMSecs(msecs));
}
+void tst_QDateTime::fromSecsSinceEpoch()
+{
+ const qint64 maxSeconds = std::numeric_limits<qint64>::max() / 1000;
+
+ QVERIFY(QDateTime::fromSecsSinceEpoch(maxSeconds).isValid());
+ QVERIFY(!QDateTime::fromSecsSinceEpoch(maxSeconds + 1).isValid());
+ QVERIFY(QDateTime::fromSecsSinceEpoch(-maxSeconds).isValid());
+ QVERIFY(!QDateTime::fromSecsSinceEpoch(-maxSeconds - 1).isValid());
+
+ QVERIFY(QDateTime::fromSecsSinceEpoch(maxSeconds, Qt::UTC).isValid());
+ QVERIFY(!QDateTime::fromSecsSinceEpoch(maxSeconds + 1, Qt::UTC).isValid());
+ QVERIFY(QDateTime::fromSecsSinceEpoch(-maxSeconds, Qt::UTC).isValid());
+ QVERIFY(!QDateTime::fromSecsSinceEpoch(-maxSeconds - 1, Qt::UTC).isValid());
+
+ // Use an offset for which .toUTC()'s return would flip the validity:
+ QVERIFY(QDateTime::fromSecsSinceEpoch(maxSeconds, Qt::OffsetFromUTC, 7200).isValid());
+ QVERIFY(!QDateTime::fromSecsSinceEpoch(maxSeconds + 1, Qt::OffsetFromUTC, -7200).isValid());
+ QVERIFY(QDateTime::fromSecsSinceEpoch(-maxSeconds, Qt::OffsetFromUTC, -7200).isValid());
+ QVERIFY(!QDateTime::fromSecsSinceEpoch(-maxSeconds - 1, Qt::OffsetFromUTC, 7200).isValid());
+
+#if QT_CONFIG(timezone)
+ // As for offset, use zones each side of UTC:
+ const QTimeZone west("UTC-02:00"), east("UTC+02:00");
+ QVERIFY(QDateTime::fromSecsSinceEpoch(maxSeconds, east).isValid());
+ QVERIFY(!QDateTime::fromSecsSinceEpoch(maxSeconds + 1, west).isValid());
+ QVERIFY(QDateTime::fromSecsSinceEpoch(-maxSeconds, west).isValid());
+ QVERIFY(!QDateTime::fromSecsSinceEpoch(-maxSeconds - 1, east).isValid());
+#endif // timezone
+}
+
void tst_QDateTime::toString_isoDate_data()
{
QTest::addColumn<QDateTime>("datetime");