/**************************************************************************** ** ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the test suite of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions ** contained in the either Technology Preview License Agreement or the ** Beta Release License Agreement. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain ** additional rights. These rights are described in the Nokia Qt LGPL ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this ** package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** If you are unsure which license is appropriate for your use, please ** contact the sales department at http://qt.nokia.com/contact. ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #include #include #include #include #include #include //TESTED_CLASS= //TESTED_FILES= class tst_QCalendarWidget : public QObject { Q_OBJECT public: tst_QCalendarWidget(); virtual ~tst_QCalendarWidget(); public slots: void initTestCase(); void cleanupTestCase(); void init(); void cleanup(); private slots: void getSetCheck(); void buttonClickCheck(); void setTextFormat(); void resetTextFormat(); void setWeekdayFormat(); }; // Testing get/set functions void tst_QCalendarWidget::getSetCheck() { QCalendarWidget object; //horizontal header formats object.setHorizontalHeaderFormat(QCalendarWidget::NoHorizontalHeader); QCOMPARE(QCalendarWidget::NoHorizontalHeader, object.horizontalHeaderFormat()); object.setHorizontalHeaderFormat(QCalendarWidget::SingleLetterDayNames); QCOMPARE(QCalendarWidget::SingleLetterDayNames, object.horizontalHeaderFormat()); object.setHorizontalHeaderFormat(QCalendarWidget::ShortDayNames); QCOMPARE(QCalendarWidget::ShortDayNames, object.horizontalHeaderFormat()); object.setHorizontalHeaderFormat(QCalendarWidget::LongDayNames); QCOMPARE(QCalendarWidget::LongDayNames, object.horizontalHeaderFormat()); //vertical header formats object.setVerticalHeaderFormat(QCalendarWidget::ISOWeekNumbers); QCOMPARE(QCalendarWidget::ISOWeekNumbers, object.verticalHeaderFormat()); object.setVerticalHeaderFormat(QCalendarWidget::NoVerticalHeader); QCOMPARE(QCalendarWidget::NoVerticalHeader, object.verticalHeaderFormat()); //maximum Date QDate maxDate(2006, 7, 3); object.setMaximumDate(maxDate); QCOMPARE(maxDate, object.maximumDate()); //minimum date QDate minDate(2004, 7, 3); object.setMinimumDate(minDate); QCOMPARE(minDate, object.minimumDate()); //day of week object.setFirstDayOfWeek(Qt::Thursday); QCOMPARE(Qt::Thursday, object.firstDayOfWeek()); //grid visible object.setGridVisible(true); QVERIFY(object.isGridVisible()); object.setGridVisible(false); QVERIFY(!object.isGridVisible()); //header visible object.setHeaderVisible(true); QVERIFY(object.isHeaderVisible()); object.setHeaderVisible(false); QVERIFY(!object.isHeaderVisible()); //selection mode QCOMPARE(QCalendarWidget::SingleSelection, object.selectionMode()); object.setSelectionMode(QCalendarWidget::NoSelection); QCOMPARE(QCalendarWidget::NoSelection, object.selectionMode()); object.setSelectionMode(QCalendarWidget::SingleSelection); QCOMPARE(QCalendarWidget::SingleSelection, object.selectionMode()); //selected date QDate selectedDate(2005, 7, 3); QSignalSpy spy(&object, SIGNAL(selectionChanged())); object.setSelectedDate(selectedDate); QCOMPARE(spy.count(), 1); QCOMPARE(selectedDate, object.selectedDate()); //month and year object.setCurrentPage(2004, 1); QCOMPARE(1, object.monthShown()); QCOMPARE(2004, object.yearShown()); object.showNextMonth(); QCOMPARE(2, object.monthShown()); object.showPreviousMonth(); QCOMPARE(1, object.monthShown()); object.showNextYear(); QCOMPARE(2005, object.yearShown()); object.showPreviousYear(); QCOMPARE(2004, object.yearShown()); //date range minDate = QDate(2006,1,1); maxDate = QDate(2010,12,31); object.setDateRange(minDate, maxDate); QCOMPARE(maxDate, object.maximumDate()); QCOMPARE(minDate, object.minimumDate()); //date should not go beyond the minimum. selectedDate = minDate.addDays(-10); object.setSelectedDate(selectedDate); QCOMPARE(minDate, object.selectedDate()); QVERIFY(selectedDate != object.selectedDate()); //date should not go beyond the maximum. selectedDate = maxDate.addDays(10); object.setSelectedDate(selectedDate); QCOMPARE(maxDate, object.selectedDate()); QVERIFY(selectedDate != object.selectedDate()); //show today QDate today = QDate::currentDate(); object.showToday(); QCOMPARE(today.month(), object.monthShown()); QCOMPARE(today.year(), object.yearShown()); //slect a different date and move. object.setSelectedDate(minDate); object.showSelectedDate(); QCOMPARE(minDate.month(), object.monthShown()); QCOMPARE(minDate.year(), object.yearShown()); } void tst_QCalendarWidget::buttonClickCheck() { QCalendarWidget object; QSize size = object.sizeHint(); object.setGeometry(0,0,size.width(), size.height()); object.show(); QRect rect = object.geometry(); QDate selectedDate(2005, 1, 1); //click on the month buttons int month = object.monthShown(); QToolButton *button = qFindChild(&object, "qt_calendar_prevmonth"); QTest::mouseClick(button, Qt::LeftButton); QCOMPARE(month > 1 ? month-1 : 12, object.monthShown()); button = qFindChild(&object, "qt_calendar_nextmonth"); QTest::mouseClick(button, Qt::LeftButton); QCOMPARE(month, object.monthShown()); button = qFindChild(&object, "qt_calendar_yearbutton"); QTest::mouseClick(button, Qt::LeftButton); QVERIFY(!button->isVisible()); QSpinBox *spinbox = qFindChild(&object, "qt_calendar_yearedit"); QTest::qWait(500); QTest::keyClick(spinbox, '2'); QTest::keyClick(spinbox, '0'); QTest::keyClick(spinbox, '0'); QTest::keyClick(spinbox, '6'); QTest::qWait(500); QWidget *widget = qFindChild(&object, "qt_calendar_calendarview"); QTest::mouseMove(widget); QTest::mouseClick(widget, Qt::LeftButton); QCOMPARE(2006, object.yearShown()); object.setSelectedDate(selectedDate); object.showSelectedDate(); QTest::keyClick(widget, Qt::Key_Down); QVERIFY(selectedDate != object.selectedDate()); object.setDateRange(QDate(2006,1,1), QDate(2006,2,28)); object.setSelectedDate(QDate(2006,1,1)); object.showSelectedDate(); button = qFindChild(&object, "qt_calendar_prevmonth"); QTest::mouseClick(button, Qt::LeftButton); QCOMPARE(1, object.monthShown()); button = qFindChild(&object, "qt_calendar_nextmonth"); QTest::mouseClick(button, Qt::LeftButton); QCOMPARE(2, object.monthShown()); QTest::mouseClick(button, Qt::LeftButton); QCOMPARE(2, object.monthShown()); } void tst_QCalendarWidget::setTextFormat() { QCalendarWidget calendar; QTextCharFormat format; format.setFontItalic(true); format.setForeground(Qt::green); const QDate date(1984, 10, 20); calendar.setDateTextFormat(date, format); QCOMPARE(calendar.dateTextFormat(date), format); } void tst_QCalendarWidget::resetTextFormat() { QCalendarWidget calendar; QTextCharFormat format; format.setFontItalic(true); format.setForeground(Qt::green); const QDate date(1984, 10, 20); calendar.setDateTextFormat(date, format); calendar.setDateTextFormat(QDate(), QTextCharFormat()); QCOMPARE(calendar.dateTextFormat(date), QTextCharFormat()); } void tst_QCalendarWidget::setWeekdayFormat() { QCalendarWidget calendar; QTextCharFormat format; format.setFontItalic(true); format.setForeground(Qt::green); calendar.setWeekdayTextFormat(Qt::Wednesday, format); // check the format of the a given month for (int i = 1; i <= 31; ++i) { const QDate date(1984, 10, i); const Qt::DayOfWeek dayOfWeek = static_cast(date.dayOfWeek()); if (dayOfWeek == Qt::Wednesday) QCOMPARE(calendar.weekdayTextFormat(dayOfWeek), format); else QVERIFY(calendar.weekdayTextFormat(dayOfWeek) != format); } } tst_QCalendarWidget::tst_QCalendarWidget() { } tst_QCalendarWidget::~tst_QCalendarWidget() { } void tst_QCalendarWidget::initTestCase() { } void tst_QCalendarWidget::cleanupTestCase() { } void tst_QCalendarWidget::init() { } void tst_QCalendarWidget::cleanup() { } QTEST_MAIN(tst_QCalendarWidget) #include "tst_qcalendarwidget.moc"