From 433818ca4f1384c2f4a4ec67bcadd2634e6d6c4a Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 21 Aug 2018 22:05:39 +0200 Subject: [PATCH] Ref T308, if QDateTime is invalid (normal state) setting a offset turns it into a valid timestamp of 1970 (which is wrong) --- src/blackmisc/stringutils.cpp | 8 ++++++-- tests/blackmisc/testvaluecache.cpp | 5 +++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/blackmisc/stringutils.cpp b/src/blackmisc/stringutils.cpp index 13ca01c2f..6413cf2ab 100644 --- a/src/blackmisc/stringutils.cpp +++ b/src/blackmisc/stringutils.cpp @@ -261,15 +261,19 @@ namespace BlackMisc QDateTime fromStringUtc(const QString &dateTimeString, const QString &format) { + if (dateTimeString.isEmpty() || format.isEmpty()) { return QDateTime(); } QDateTime dt = QDateTime::fromString(dateTimeString, format); - dt.setUtcOffset(0); + if (!dt.isValid()) { return dt; } + dt.setUtcOffset(0); // must only be applied to valid timestamps return dt; } QDateTime fromStringUtc(const QString &dateTimeString, Qt::DateFormat format) { + if (dateTimeString.isEmpty()) { return QDateTime(); } QDateTime dt = QDateTime::fromString(dateTimeString, format); - dt.setUtcOffset(0); + if (!dt.isValid()) { return dt; } + dt.setUtcOffset(0); // must only be applied to valid timestamps return dt; } diff --git a/tests/blackmisc/testvaluecache.cpp b/tests/blackmisc/testvaluecache.cpp index 3ce9228b6..66b4814fd 100644 --- a/tests/blackmisc/testvaluecache.cpp +++ b/tests/blackmisc/testvaluecache.cpp @@ -235,7 +235,7 @@ namespace BlackMiscTest { CSimulatedAircraftList aircraft({ CSimulatedAircraft("BAW001", {}, {}) }); CAtcStationList atcStations({ CAtcStation("EGLL_TWR") }); - CVariantMap testData + const CVariantMap testData { { "namespace1/value1", CVariant::from(1) }, { "namespace1/value2", CVariant::from(2) }, @@ -260,7 +260,8 @@ namespace BlackMiscTest CValueCache cache2(1); status = cache2.loadFromFiles(dir.absolutePath()); QVERIFY(status.isSuccess()); - QCOMPARE(cache2.getAllValues(), testData); + const CVariantMap test2Values = cache2.getAllValues(); + QCOMPARE(test2Values, testData); } //! Is value between 0 - 100?