Skip some tests that fail in the Indian/Cocos timezone

The zone had a transition at the start of 1900, so QDTP's default date
ends up being 1900-01-01 at 00:02:20 instead of at 00:00:00; and any
parsing of date-time strings that doesn't set the minutes and seconds
consequently ends up "wrong" (about a field that wasn't specified).

Change-Id: If4b9864616fa08bc023a6974dae255f96ca90f83
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Edward Welbourne 2023-03-31 12:05:42 +02:00
parent 90d4957c12
commit ee46c645a6

View File

@ -2899,34 +2899,35 @@ void tst_QDateTime::fromStringStringFormat_data()
QTest::addColumn<QDateTime>("expected");
const QDate defDate(1900, 1, 1);
QTest::newRow("data0")
<< QString("101010") << QString("dMyy") << QDate(1910, 10, 10).startOfDay();
// Indian/Cocos had a transition at the start of 1900, so its Jan 1st starts
// at 00:02:20 on that day; this leads to perverse results. QTBUG-77948.
if (defDate.startOfDay().time() == QTime(0, 0)) {
QTest::newRow("dMyy-only")
<< QString("101010") << QString("dMyy") << QDate(1910, 10, 10).startOfDay();
QTest::newRow("secs-repeat-valid")
<< QString("1010") << QString("sss") << QDateTime(defDate, QTime(0, 0, 10));
QTest::newRow("pm-only")
<< QString("pm") << QString("ap") << QDateTime(defDate, QTime(12, 0));
QTest::newRow("date-only")
<< QString("10 Oct 10") << QString("dd MMM yy") << QDate(1910, 10, 10).startOfDay();
QTest::newRow("dow-date-only")
<< QString("Fri December 3 2004") << QString("ddd MMMM d yyyy")
<< QDate(2004, 12, 3).startOfDay();
QTest::newRow("dow-mon-yr-only")
<< QString("Thu January 2004") << QString("ddd MMMM yyyy")
<< QDate(2004, 1, 1).startOfDay();
}
QTest::newRow("data1") << QString("1020") << QString("sss") << QDateTime();
QTest::newRow("data2")
<< QString("1010") << QString("sss") << QDateTime(defDate, QTime(0, 0, 10));
QTest::newRow("data3") << QString("10hello20") << QString("ss'hello'ss") << QDateTime();
QTest::newRow("data4") << QString("10") << QString("''") << QDateTime();
QTest::newRow("data5") << QString("10") << QString("'") << QDateTime();
QTest::newRow("data6") << QString("pm") << QString("ap") << QDateTime(defDate, QTime(12, 0));
QTest::newRow("data7") << QString("foo") << QString("ap") << QDateTime();
// Day non-conflict should not hide earlier year conflict (1963-03-01 was a
// Friday; asking for Thursday moves this, without conflict, to the 7th):
QTest::newRow("data8")
<< QString("77 03 1963 Thu") << QString("yy MM yyyy ddd") << QDateTime();
QTest::newRow("data9")
<< QString("101010") << QString("dMyy") << QDate(1910, 10, 10).startOfDay();
QTest::newRow("data10")
<< QString("101010") << QString("dMyy") << QDate(1910, 10, 10).startOfDay();
QTest::newRow("data11")
<< QString("10 Oct 10") << QString("dd MMM yy") << QDate(1910, 10, 10).startOfDay();
QTest::newRow("data12")
<< QString("Fri December 3 2004") << QString("ddd MMMM d yyyy")
<< QDate(2004, 12, 3).startOfDay();
QTest::newRow("data13") << QString("30.02.2004") << QString("dd.MM.yyyy") << QDateTime();
QTest::newRow("data14") << QString("32.01.2004") << QString("dd.MM.yyyy") << QDateTime();
QTest::newRow("data15")
<< QString("Thu January 2004") << QString("ddd MMMM yyyy")
<< QDate(2004, 1, 1).startOfDay();
QTest::newRow("zulu-time-with-z-centisec")
<< QString("2005-06-28T07:57:30.01Z") << QString("yyyy-MM-ddThh:mm:ss.zt")
<< QDateTime(QDate(2005, 06, 28), QTime(07, 57, 30, 10), UTC);