File indexing completed on 2024-04-28 15:31:52

0001 /*
0002     SPDX-FileCopyrightText: 2022 Volker Krause <vkrause@kde.org>
0003     SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005 
0006 #include <KDatePickerPopup>
0007 
0008 #include <QSignalSpy>
0009 #include <QTest>
0010 
0011 class KDatePickerPopupTest : public QObject
0012 {
0013     Q_OBJECT
0014 
0015 private Q_SLOTS:
0016     void testWordActions()
0017     {
0018         KDatePickerPopup p(KDatePickerPopup::DatePicker | KDatePickerPopup::Words | KDatePickerPopup::NoDate);
0019         // picker, 9 words, no date, 2 separators
0020         p.popup(QPoint());
0021         QCOMPARE(p.actions().count(), 13);
0022         p.hide();
0023         p.popup(QPoint());
0024         QCOMPARE(p.actions().count(), 13);
0025 
0026         QCOMPARE(p.actions()[2]->data().toDate(), QDate::currentDate().addYears(1));
0027         QCOMPARE(p.actions()[6]->data().toDate(), QDate::currentDate());
0028         QCOMPARE(p.actions()[12]->data().toDate(), QDate());
0029     }
0030 
0031     void testModes()
0032     {
0033         KDatePickerPopup p;
0034         QCOMPARE(p.modes(), KDatePickerPopup::DatePicker);
0035         p.popup(QPoint());
0036         QCOMPARE(p.actions().count(), 1); // only the date picker
0037         p.hide();
0038 
0039         p.setModes(KDatePickerPopup::NoDate);
0040         p.popup(QPoint());
0041         QCOMPARE(p.actions().count(), 1);
0042         p.hide();
0043 
0044         p.setModes(KDatePickerPopup::Words);
0045         p.popup(QPoint());
0046         QCOMPARE(p.actions().count(), 9);
0047         p.hide();
0048 
0049         p.setModes(KDatePickerPopup::DatePicker | KDatePickerPopup::NoDate);
0050         p.popup(QPoint());
0051         QCOMPARE(p.actions().count(), 3);
0052         p.hide();
0053 
0054         p.setModes(KDatePickerPopup::Words | KDatePickerPopup::NoDate);
0055         p.popup(QPoint());
0056         QCOMPARE(p.actions().count(), 11);
0057         p.hide();
0058     }
0059 
0060     void testDateRange()
0061     {
0062         KDatePickerPopup p(KDatePickerPopup::Words);
0063         const auto today = QDate::currentDate();
0064 
0065         p.setDateRange(today.addDays(-1), today.addDays(1));
0066         p.popup(QPoint());
0067         QCOMPARE(p.actions().count(), 3);
0068         QCOMPARE(p.actions()[1]->data().toDate(), today);
0069         p.hide();
0070 
0071         p.setDateRange(QDate(), today.addDays(1));
0072         p.popup(QPoint());
0073         QCOMPARE(p.actions().count(), 6);
0074         QCOMPARE(p.actions()[1]->data().toDate(), today);
0075         p.hide();
0076 
0077         p.setDateRange(today.addDays(-2), {});
0078         p.popup(QPoint());
0079         QCOMPARE(p.actions().count(), 6);
0080         QCOMPARE(p.actions()[4]->data().toDate(), today);
0081         p.hide();
0082 
0083         p.setDateRange({}, {});
0084         p.popup(QPoint());
0085         QCOMPARE(p.actions().count(), 9);
0086         p.hide();
0087     }
0088 
0089     void testDateMap()
0090     {
0091         KDatePickerPopup p(KDatePickerPopup::Words);
0092 
0093         QMap<QDate, QString> m;
0094         m.insert(QDate(1996, 10, 14), QStringLiteral("KDE's birthday"));
0095         m.insert(QDate(1997, 1, 1), QStringLiteral("separator"));
0096         m.insert(QDate(2017, 9, 10), {});
0097 
0098         p.setDateMap(m);
0099         p.popup(QPoint());
0100         QCOMPARE(p.actions().count(), 3);
0101         QCOMPARE(p.actions()[0]->data().toDate(), QDate(1996, 10, 14));
0102         QCOMPARE(p.actions()[0]->text(), QStringLiteral("KDE's birthday"));
0103         QCOMPARE(p.actions()[1]->data().toDate(), QDate());
0104         QCOMPARE(p.actions()[1]->isSeparator(), true);
0105         QCOMPARE(p.actions()[2]->data().toDate(), QDate(2017, 9, 10));
0106         QCOMPARE(p.actions()[2]->text().isEmpty(), false);
0107         p.hide();
0108 
0109         p.setDateMap({});
0110         p.popup(QPoint());
0111         QCOMPARE(p.actions().count(), 9);
0112         p.hide();
0113     }
0114 };
0115 
0116 QTEST_MAIN(KDatePickerPopupTest)
0117 
0118 #include "kdatepickerpopupautotest.moc"