Files
RedBear-OS/local/recipes/kde/kf6-kwidgetsaddons/source/autotests/kdatepickerpopupautotest.cpp
T
2026-04-14 10:51:06 +01:00

119 lines
3.4 KiB
C++

/*
SPDX-FileCopyrightText: 2022 Volker Krause <vkrause@kde.org>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#include <KDatePickerPopup>
#include <QSignalSpy>
#include <QTest>
class KDatePickerPopupTest : public QObject
{
Q_OBJECT
private Q_SLOTS:
void testWordActions()
{
KDatePickerPopup p(KDatePickerPopup::DatePicker | KDatePickerPopup::Words | KDatePickerPopup::NoDate);
// picker, 9 words, no date, 2 separators
p.popup(QPoint());
QCOMPARE(p.actions().count(), 13);
p.hide();
p.popup(QPoint());
QCOMPARE(p.actions().count(), 13);
QCOMPARE(p.actions()[2]->data().toDate(), QDate::currentDate().addYears(1));
QCOMPARE(p.actions()[6]->data().toDate(), QDate::currentDate());
QCOMPARE(p.actions()[12]->data().toDate(), QDate());
}
void testModes()
{
KDatePickerPopup p;
QCOMPARE(p.modes(), KDatePickerPopup::DatePicker);
p.popup(QPoint());
QCOMPARE(p.actions().count(), 1); // only the date picker
p.hide();
p.setModes(KDatePickerPopup::NoDate);
p.popup(QPoint());
QCOMPARE(p.actions().count(), 1);
p.hide();
p.setModes(KDatePickerPopup::Words);
p.popup(QPoint());
QCOMPARE(p.actions().count(), 9);
p.hide();
p.setModes(KDatePickerPopup::DatePicker | KDatePickerPopup::NoDate);
p.popup(QPoint());
QCOMPARE(p.actions().count(), 3);
p.hide();
p.setModes(KDatePickerPopup::Words | KDatePickerPopup::NoDate);
p.popup(QPoint());
QCOMPARE(p.actions().count(), 11);
p.hide();
}
void testDateRange()
{
KDatePickerPopup p(KDatePickerPopup::Words);
const auto today = QDate::currentDate();
p.setDateRange(today.addDays(-1), today.addDays(1));
p.popup(QPoint());
QCOMPARE(p.actions().count(), 3);
QCOMPARE(p.actions()[1]->data().toDate(), today);
p.hide();
p.setDateRange(QDate(), today.addDays(1));
p.popup(QPoint());
QCOMPARE(p.actions().count(), 6);
QCOMPARE(p.actions()[1]->data().toDate(), today);
p.hide();
p.setDateRange(today.addDays(-2), {});
p.popup(QPoint());
QCOMPARE(p.actions().count(), 6);
QCOMPARE(p.actions()[4]->data().toDate(), today);
p.hide();
p.setDateRange({}, {});
p.popup(QPoint());
QCOMPARE(p.actions().count(), 9);
p.hide();
}
void testDateMap()
{
KDatePickerPopup p(KDatePickerPopup::Words);
QMap<QDate, QString> m;
m.insert(QDate(1996, 10, 14), QStringLiteral("KDE's birthday"));
m.insert(QDate(1997, 1, 1), QStringLiteral("separator"));
m.insert(QDate(2017, 9, 10), {});
p.setDateMap(m);
p.popup(QPoint());
QCOMPARE(p.actions().count(), 3);
QCOMPARE(p.actions()[0]->data().toDate(), QDate(1996, 10, 14));
QCOMPARE(p.actions()[0]->text(), QStringLiteral("KDE's birthday"));
QCOMPARE(p.actions()[1]->data().toDate(), QDate());
QCOMPARE(p.actions()[1]->isSeparator(), true);
QCOMPARE(p.actions()[2]->data().toDate(), QDate(2017, 9, 10));
QCOMPARE(p.actions()[2]->text().isEmpty(), false);
p.hide();
p.setDateMap({});
p.popup(QPoint());
QCOMPARE(p.actions().count(), 9);
p.hide();
}
};
QTEST_MAIN(KDatePickerPopupTest)
#include "kdatepickerpopupautotest.moc"