diff options
Diffstat (limited to 'tests/auto/corelib/time')
-rw-r--r-- | tests/auto/corelib/time/qdatetime/tst_qdatetime.cpp | 31 |
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"); |