Check for relevant zones existing when adding data rows

tst_QDate::startOfDay_endOfDay_data() naively assumed some zones would
exist. They don't on QNX, apparently.

Change-Id: I3a364964d03f59f5869b4b7639f089dd303180b1
Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
bb10
Edward Welbourne 2021-11-24 17:39:40 +01:00
parent 0cad974d0d
commit bcc15f36cc
1 changed files with 22 additions and 12 deletions

View File

@ -475,23 +475,32 @@ void tst_QDate::startOfDay_endOfDay_data()
const QTime initial(0, 0), final(23, 59, 59, 999), invalid(QDateTime().time());
// UTC is always a valid zone.
QTest::newRow("epoch")
<< QDate(1970, 1, 1) << QByteArray("UTC")
<< initial << final;
QTest::newRow("Brazil")
<< QDate(2008, 10, 19) << QByteArray("America/Sao_Paulo")
<< QTime(1, 0) << final;
if (QTimeZone("America/Sao_Paulo").isValid()) {
QTest::newRow("Brazil")
<< QDate(2008, 10, 19) << QByteArray("America/Sao_Paulo")
<< QTime(1, 0) << final;
}
#if QT_CONFIG(icu) || !defined(Q_OS_WIN) // MS's TZ APIs lack data
QTest::newRow("Sofia")
<< QDate(1994, 3, 27) << QByteArray("Europe/Sofia")
<< QTime(1, 0) << final;
if (QTimeZone("Europe/Sofia").isValid()) {
QTest::newRow("Sofia")
<< QDate(1994, 3, 27) << QByteArray("Europe/Sofia")
<< QTime(1, 0) << final;
}
#endif
QTest::newRow("Kiritimati")
<< QDate(1994, 12, 31) << QByteArray("Pacific/Kiritimati")
<< invalid << invalid;
QTest::newRow("Samoa")
<< QDate(2011, 12, 30) << QByteArray("Pacific/Apia")
<< invalid << invalid;
if (QTimeZone("Pacific/Kiritimati").isValid()) {
QTest::newRow("Kiritimati")
<< QDate(1994, 12, 31) << QByteArray("Pacific/Kiritimati")
<< invalid << invalid;
}
if (QTimeZone("Pacific/Apia").isValid()) {
QTest::newRow("Samoa")
<< QDate(2011, 12, 30) << QByteArray("Pacific/Apia")
<< invalid << invalid;
}
// TODO: find other zones with transitions at/crossing midnight.
}
@ -502,6 +511,7 @@ void tst_QDate::startOfDay_endOfDay()
QFETCH(QTime, start);
QFETCH(QTime, end);
const QTimeZone zone(zoneName);
QVERIFY(zone.isValid());
const bool isSystem = QTimeZone::systemTimeZone() == zone;
QDateTime front(date.startOfDay(zone)), back(date.endOfDay(zone));
if (end.isValid())