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 <thiago.macieira@intel.com>
bb10
Edward Welbourne 2022-08-03 15:57:08 +02:00
parent 4579ec04a4
commit d1d43b231f
1 changed files with 51 additions and 20 deletions

View File

@ -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()