From d1d43b231f4c7c5663cb49875c2e5876f352b564 Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Wed, 3 Aug 2022 15:57:08 +0200 Subject: [PATCH] Expand QDateTime edit constructor tests to cover Q(Date|Time)Edit The constructor_qdate() and constructor_qtime() tests only tested QDateTimeEdit with a QDate or QTime. Extend them to also test QDateEdit and QTimeEdit constructors, respectively. This revealed one surprise; the QDateEdit constructor doesn't replace an invalid QDate with the usual start-date, as the QDateTimeEdit does. It also serves to reproduce a bug reported in Qt 6.3, see Task-number. These are all marked XFail for now. Task-number: QTBUG-105322 Change-Id: Ifafb40a9b78d9314b74ca9a1710d362b9a3cb18d Reviewed-by: Thiago Macieira --- .../qdatetimeedit/tst_qdatetimeedit.cpp | 71 +++++++++++++------ 1 file changed, 51 insertions(+), 20 deletions(-) diff --git a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp index d9ff9fe2b9..48955bc8a0 100644 --- a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp +++ b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp @@ -491,16 +491,32 @@ void tst_QDateTimeEdit::constructor_qdate() QFETCH(QDate, parameter); testWidget->hide(); - QDateTimeEdit dte(parameter); - dte.show(); - if (QByteArrayView(QTest::currentDataTag()) == "invalid") - QCOMPARE(dte.dateTime(), QDateTime(QDate(2000, 1, 1), QTime(0, 0))); - else - QCOMPARE(dte.dateTime(), QDateTime(parameter, QTime(0, 0))); - QCOMPARE(dte.minimumDate(), QDate(1752, 9, 14)); - QCOMPARE(dte.minimumTime(), QTime(0, 0)); - QCOMPARE(dte.maximumDate(), QDate(9999, 12, 31)); - QCOMPARE(dte.maximumTime(), QTime(23, 59, 59, 999)); + { + QDateTimeEdit dte(parameter); + dte.show(); + if (QByteArrayView(QTest::currentDataTag()) == "invalid") + QCOMPARE(dte.dateTime(), QDateTime(QDate(2000, 1, 1), QTime(0, 0))); + else + QCOMPARE(dte.dateTime(), QDateTime(parameter, QTime(0, 0))); + QCOMPARE(dte.minimumDate(), QDate(1752, 9, 14)); + QCOMPARE(dte.minimumTime(), QTime(0, 0)); + QCOMPARE(dte.maximumDate(), QDate(9999, 12, 31)); + QCOMPARE(dte.maximumTime(), QTime(23, 59, 59, 999)); + } + { + QDateEdit dte(parameter); + dte.show(); + QEXPECT_FAIL("normal", "QTBUG-105322: constructors use wrong spec", Continue); + QEXPECT_FAIL("invalid", "Constructor neglects default replacement of invalid", Continue); + if (QByteArrayView(QTest::currentDataTag()) == "invalid") + QCOMPARE(dte.date(), QDate(2000, 1, 1)); + else + QCOMPARE(dte.date(), parameter); + QCOMPARE(dte.minimumDate(), QDate(1752, 9, 14)); + QCOMPARE(dte.minimumTime(), QTime(0, 0)); + QCOMPARE(dte.maximumDate(), QDate(9999, 12, 31)); + QCOMPARE(dte.maximumTime(), QTime(23, 59, 59, 999)); + } } void tst_QDateTimeEdit::constructor_qtime_data() @@ -516,16 +532,31 @@ void tst_QDateTimeEdit::constructor_qtime() QFETCH(QTime, parameter); testWidget->hide(); - QDateTimeEdit dte(parameter); - dte.show(); - if (QByteArrayView(QTest::currentDataTag()) == "invalid") - QCOMPARE(dte.dateTime(), QDateTime(QDate(2000, 1, 1), QTime(0, 0))); - else - QCOMPARE(dte.dateTime(), QDateTime(QDate(2000, 1, 1), parameter)); - QCOMPARE(dte.minimumDate(), QDate(2000, 1, 1)); - QCOMPARE(dte.minimumTime(), QTime(0, 0)); - QCOMPARE(dte.maximumDate(), QDate(2000, 1, 1)); - QCOMPARE(dte.maximumTime(), QTime(23, 59, 59, 999)); + { + QDateTimeEdit dte(parameter); + dte.show(); + if (QByteArrayView(QTest::currentDataTag()) == "invalid") + QCOMPARE(dte.dateTime(), QDateTime(QDate(2000, 1, 1), QTime(0, 0))); + else + QCOMPARE(dte.dateTime(), QDateTime(QDate(2000, 1, 1), parameter)); + QCOMPARE(dte.minimumDate(), QDate(2000, 1, 1)); + QCOMPARE(dte.minimumTime(), QTime(0, 0)); + QCOMPARE(dte.maximumDate(), QDate(2000, 1, 1)); + QCOMPARE(dte.maximumTime(), QTime(23, 59, 59, 999)); + } + { + QTimeEdit dte(parameter); + dte.show(); + QEXPECT_FAIL("", "QTBUG-105322: constructors use wrong spec", Abort); + if (QByteArrayView(QTest::currentDataTag()) == "invalid") + QCOMPARE(dte.time(), QTime(0, 0)); + else + QCOMPARE(dte.time(), parameter); + QCOMPARE(dte.minimumDate(), QDate(2000, 1, 1)); + QCOMPARE(dte.minimumTime(), QTime(0, 0)); + QCOMPARE(dte.maximumDate(), QDate(2000, 1, 1)); + QCOMPARE(dte.maximumTime(), QTime(23, 59, 59, 999)); + } } void tst_QDateTimeEdit::minimumDate_data()