summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@digia.com>2012-10-17 13:56:50 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-10-24 01:38:58 +0200
commitb016597db844d0214734bb301c1e101261f4c724 (patch)
tree7c6a59684c15f2784d29cd05d817abf7a1433191
parent8310533975fc3cafd796ca3b1266d6777137b2d0 (diff)
Return invalid datetime when calling addMSecs with invalid QDateTime.
This is in line with what QTime::addMSecs and QDate::addDays do, for example. Change-Id: I902112486727f74f669a97bde6c42028e0838f8d Reviewed-by: Jon Severinsson <jon@severinsson.net> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
-rw-r--r--src/corelib/tools/qdatetime.cpp7
-rw-r--r--tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp56
2 files changed, 41 insertions, 22 deletions
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp
index 7845273cb8..7d18e93dce 100644
--- a/src/corelib/tools/qdatetime.cpp
+++ b/src/corelib/tools/qdatetime.cpp
@@ -2692,6 +2692,9 @@ QDateTime QDateTime::addYears(int nyears) const
QDateTime QDateTimePrivate::addMSecs(const QDateTime &dt, qint64 msecs)
{
+ if (!dt.isValid())
+ return QDateTime();
+
QDate utcDate;
QTime utcTime;
dt.d->getUTC(utcDate, utcTime);
@@ -2742,6 +2745,8 @@ void QDateTimePrivate::addMSecs(QDate &utcDate, QTime &utcTime, qint64 msecs)
later than the datetime of this object (or earlier if \a s is
negative).
+ If this datetime is invalid, an invalid datetime will be returned.
+
\sa addMSecs(), secsTo(), addDays(), addMonths(), addYears()
*/
@@ -2755,6 +2760,8 @@ QDateTime QDateTime::addSecs(qint64 s) const
later than the datetime of this object (or earlier if \a msecs is
negative).
+ If this datetime is invalid, an invalid datetime will be returned.
+
\sa addSecs(), msecsTo(), addDays(), addMonths(), addYears()
*/
QDateTime QDateTime::addMSecs(qint64 msecs) const
diff --git a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
index c6945f438c..9e71a32f87 100644
--- a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
+++ b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
@@ -728,6 +728,8 @@ void tst_QDateTime::addSecs_data()
QTest::newRow("toPositive") << QDateTime(QDate(-1, 12, 31), QTime(23, 59, 59), Qt::UTC)
<< 1
<< QDateTime(QDate(1, 1, 1), QTime(0, 0, 0), Qt::UTC);
+
+ QTest::newRow("invalid") << invalidDateTime() << 1 << invalidDateTime();
}
void tst_QDateTime::addSecs()
@@ -915,17 +917,22 @@ void tst_QDateTime::secsTo()
QFETCH(int, nsecs);
QFETCH(QDateTime, result);
-#ifdef Q_OS_IRIX
- QEXPECT_FAIL("cet4", "IRIX databases say 1970 had DST", Abort);
-#endif
- QCOMPARE(dt.secsTo(result), (qint64)nsecs);
- QCOMPARE(result.secsTo(dt), (qint64)-nsecs);
- QVERIFY((dt == result) == (0 == nsecs));
- QVERIFY((dt != result) == (0 != nsecs));
- QVERIFY((dt < result) == (0 < nsecs));
- QVERIFY((dt <= result) == (0 <= nsecs));
- QVERIFY((dt > result) == (0 > nsecs));
- QVERIFY((dt >= result) == (0 >= nsecs));
+ if (dt.isValid()) {
+ #ifdef Q_OS_IRIX
+ QEXPECT_FAIL("cet4", "IRIX databases say 1970 had DST", Abort);
+ #endif
+ QCOMPARE(dt.secsTo(result), (qint64)nsecs);
+ QCOMPARE(result.secsTo(dt), (qint64)-nsecs);
+ QVERIFY((dt == result) == (0 == nsecs));
+ QVERIFY((dt != result) == (0 != nsecs));
+ QVERIFY((dt < result) == (0 < nsecs));
+ QVERIFY((dt <= result) == (0 <= nsecs));
+ QVERIFY((dt > result) == (0 > nsecs));
+ QVERIFY((dt >= result) == (0 >= nsecs));
+ } else {
+ QVERIFY(dt.secsTo(result) == 0);
+ QVERIFY(result.secsTo(dt) == 0);
+ }
}
void tst_QDateTime::msecsTo_data()
@@ -939,17 +946,22 @@ void tst_QDateTime::msecsTo()
QFETCH(int, nsecs);
QFETCH(QDateTime, result);
-#ifdef Q_OS_IRIX
- QEXPECT_FAIL("cet4", "IRIX databases say 1970 had DST", Abort);
-#endif
- QCOMPARE(dt.msecsTo(result), qint64(nsecs) * 1000);
- QCOMPARE(result.msecsTo(dt), -qint64(nsecs) * 1000);
- QVERIFY((dt == result) == (0 == (qint64(nsecs) * 1000)));
- QVERIFY((dt != result) == (0 != (qint64(nsecs) * 1000)));
- QVERIFY((dt < result) == (0 < (qint64(nsecs) * 1000)));
- QVERIFY((dt <= result) == (0 <= (qint64(nsecs) * 1000)));
- QVERIFY((dt > result) == (0 > (qint64(nsecs) * 1000)));
- QVERIFY((dt >= result) == (0 >= (qint64(nsecs) * 1000)));
+ if (dt.isValid()) {
+ #ifdef Q_OS_IRIX
+ QEXPECT_FAIL("cet4", "IRIX databases say 1970 had DST", Abort);
+ #endif
+ QCOMPARE(dt.msecsTo(result), qint64(nsecs) * 1000);
+ QCOMPARE(result.msecsTo(dt), -qint64(nsecs) * 1000);
+ QVERIFY((dt == result) == (0 == (qint64(nsecs) * 1000)));
+ QVERIFY((dt != result) == (0 != (qint64(nsecs) * 1000)));
+ QVERIFY((dt < result) == (0 < (qint64(nsecs) * 1000)));
+ QVERIFY((dt <= result) == (0 <= (qint64(nsecs) * 1000)));
+ QVERIFY((dt > result) == (0 > (qint64(nsecs) * 1000)));
+ QVERIFY((dt >= result) == (0 >= (qint64(nsecs) * 1000)));
+ } else {
+ QVERIFY(dt.msecsTo(result) == 0);
+ QVERIFY(result.msecsTo(dt) == 0);
+ }
}
void tst_QDateTime::currentDateTime()