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"