diff options
author | Jo Asplin <jo.asplin@nokia.com> | 2011-10-20 13:17:26 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-10-20 19:45:41 +0200 |
commit | 9f1aa866bda7678261f2f441d4cfd5bb524c2411 (patch) | |
tree | 5028f578122e7feb9200d571405494c73d96db89 /tests/auto/qdatetimeedit | |
parent | 78d02e93aca5325fc5be9bfd275862795207abaa (diff) |
Moved tests into integrationtests/ and widgets/
Task-number: QTBUG-19013
Change-Id: Ibb776f5967c0645ce6d22ef7afdc40657c575461
Reviewed-by: Holger Ihrig <holger.ihrig@nokia.com>
Diffstat (limited to 'tests/auto/qdatetimeedit')
-rw-r--r-- | tests/auto/qdatetimeedit/.gitignore | 1 | ||||
-rw-r--r-- | tests/auto/qdatetimeedit/qdatetimeedit.pro | 8 | ||||
-rw-r--r-- | tests/auto/qdatetimeedit/tst_qdatetimeedit.cpp | 3458 |
3 files changed, 0 insertions, 3467 deletions
diff --git a/tests/auto/qdatetimeedit/.gitignore b/tests/auto/qdatetimeedit/.gitignore deleted file mode 100644 index a68e3269d2..0000000000 --- a/tests/auto/qdatetimeedit/.gitignore +++ /dev/null @@ -1 +0,0 @@ -tst_qdatetimeedit diff --git a/tests/auto/qdatetimeedit/qdatetimeedit.pro b/tests/auto/qdatetimeedit/qdatetimeedit.pro deleted file mode 100644 index 47356d448c..0000000000 --- a/tests/auto/qdatetimeedit/qdatetimeedit.pro +++ /dev/null @@ -1,8 +0,0 @@ -load(qttest_p4) -QT += widgets -SOURCES += tst_qdatetimeedit.cpp - -wincewm50smart-msvc2005: DEFINES += WINCE_NO_MODIFIER_KEYS - - - diff --git a/tests/auto/qdatetimeedit/tst_qdatetimeedit.cpp b/tests/auto/qdatetimeedit/tst_qdatetimeedit.cpp deleted file mode 100644 index c64c9e7019..0000000000 --- a/tests/auto/qdatetimeedit/tst_qdatetimeedit.cpp +++ /dev/null @@ -1,3458 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** 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.1, 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. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#include <QtTest/QtTest> -#include <qapplication.h> -#include <qgroupbox.h> -#include <qlineedit.h> -#include <qwindowsstyle.h> - - - -#include <qdatetimeedit.h> -#include <qlocale.h> -#include <qlayout.h> -#include <qeventloop.h> -#include <qstyle.h> -#include <qstyle.h> -#include <QStyleOptionSpinBox> -#include <QDate> -#include <QDateTime> -#include <QTime> -#include <QList> -#include <QDateTimeEdit> -#include <QCalendarWidget> -#include <QWidget> -#include <QLineEdit> -#include <QObject> -#include <QLocale> -#include <QString> -#include <QVariantList> -#include <QVariant> -#include <QApplication> -#include <QPoint> -#include <QVBoxLayout> -#include <QRect> -#include <QCursor> -#include <QEventLoop> -#include <QStyle> -#include <QStyleOptionComboBox> -#include <QTimeEdit> -#include <QMetaType> -#include <QDebug> -#include <QWheelEvent> -#include <QTest> -#include <QSignalSpy> -#include <QTestEventList> -#include <QDateEdit> - -#ifdef Q_OS_WIN -# include <windows.h> -# undef min -# undef max -#endif - - -Q_DECLARE_METATYPE(QDate); -Q_DECLARE_METATYPE(Qt::Key); -Q_DECLARE_METATYPE(Qt::KeyboardModifiers); -Q_DECLARE_METATYPE(Qt::KeyboardModifier); -Q_DECLARE_METATYPE(QDateTime); -Q_DECLARE_METATYPE(QTime); -Q_DECLARE_METATYPE(QList<int>); - -#if defined(Q_OS_WINCE) -bool qt_wince_is_platform(const QString &platformString) { - wchar_t tszPlatform[64]; - if (SystemParametersInfo(SPI_GETPLATFORMTYPE, - sizeof(tszPlatform)/sizeof(*tszPlatform),tszPlatform,0)) - if (0 == _tcsicmp(reinterpret_cast<const wchar_t *> (platformString.utf16()), tszPlatform)) - return true; - return false; -} -bool qt_wince_is_pocket_pc() { - return qt_wince_is_platform(QString::fromLatin1("PocketPC")); -} -bool qt_wince_is_smartphone() { - return qt_wince_is_platform(QString::fromLatin1("Smartphone")); -} -bool qt_wince_is_mobile() { - return (qt_wince_is_smartphone() || qt_wince_is_pocket_pc()); -} -#endif - - -//TESTED_CLASS= -//TESTED_FILES= - -class EditorDateEdit : public QDateTimeEdit -{ - Q_OBJECT -public: - EditorDateEdit(QWidget *parent = 0) : QDateTimeEdit(parent) {} - QLineEdit *lineEdit() { return QDateTimeEdit::lineEdit(); } - friend class tst_QDateTimeEdit; -}; - -class tst_QDateTimeEdit : public QObject -{ - Q_OBJECT -public: - tst_QDateTimeEdit(); - virtual ~tst_QDateTimeEdit(); -public slots: - void initTestCase(); - void init(); - void cleanup(); - void cleanupTestCase(); -private slots: - void cachedDayTest(); - void getSetCheck(); - void constructor_qwidget(); - void constructor_qdatetime_data(); - void constructor_qdatetime(); - void constructor_qdate_data(); - void constructor_qdate(); - void constructor_qtime_data(); - void constructor_qtime(); - - void sectionText_data(); - void sectionText(); - void dateTimeSignalChecking_data(); - void dateTimeSignalChecking(); - void mousePress(); - void stepHourAMPM_data(); - - void stepHourAMPM(); - void displayedSections_data(); - void displayedSections(); - void currentSection_data(); - void currentSection(); - - void setCurrentSection(); - void setCurrentSection_data(); - - void minimumDate_data(); - void minimumDate(); - void maximumDate_data(); - void maximumDate(); - void clearMinimumDate_data(); - void clearMinimumDate(); - void clearMaximumDate_data(); - void clearMaximumDate(); - - void minimumDateTime_data(); - void minimumDateTime(); - void maximumDateTime_data(); - void maximumDateTime(); - - void clearMinimumDateTime_data(); - void clearMinimumDateTime(); - void clearMaximumDateTime_data(); - void clearMaximumDateTime(); - - void displayFormat_data(); - void displayFormat(); - - void specialValueText(); - void setRange_data(); - void setRange(); - - void selectAndScrollWithKeys(); - void backspaceKey(); - void deleteKey(); - void tabKeyNavigation(); - void tabKeyNavigationWithPrefix(); - void tabKeyNavigationWithSuffix(); - void enterKey(); - - void readOnly(); - - void wrappingDate_data(); - void wrappingDate(); - - void dateSignalChecking_data(); - void dateSignalChecking(); - - void wrappingTime_data(); - void wrappingTime(); - - void userKeyPress_Time_data(); - void userKeyPress_Time(); - - void timeSignalChecking_data(); - void timeSignalChecking(); - - void weirdCase(); - void newCase(); - void newCase2(); - void newCase3(); - void newCase4(); - void newCase5(); - void newCase6(); - - void task98554(); - void task149097(); - - void cursorPos(); - void calendarPopup(); - - void hour12Test(); - void yyTest(); - void task108572(); - - void task148725(); - void task148522(); - - void setSelectedSection(); - void reverseTest(); - - void ddMMMMyyyy(); - void wheelEvent(); - - void specialValueCornerCase(); - void cursorPositionOnInit(); - - void task118867(); - - void nextPrevSection_data(); - void nextPrevSection(); - - void dateEditTimeEditFormats(); - void timeSpec_data(); - void timeSpec(); - void timeSpecBug(); - - void monthEdgeCase(); - void setLocale(); - - void potentialYYValueBug(); - void textSectionAtEnd(); - - void keypadAutoAdvance_data(); - void keypadAutoAdvance(); - - void task196924(); - void focusNextPrevChild(); - - void taskQTBUG_12384_timeSpecShowTimeOnly(); - - void deleteCalendarWidget(); - -private: - EditorDateEdit* testWidget; - QWidget *testFocusWidget; -}; - -typedef QList<QTime> TimeList; -typedef QList<Qt::Key> KeyList; - -Q_DECLARE_METATYPE(TimeList) -Q_DECLARE_METATYPE(KeyList) - -// Testing get/set functions -void tst_QDateTimeEdit::getSetCheck() -{ - QDateTimeEdit obj1; - obj1.setDisplayFormat("dd/MM/yyyy hh:mm:ss.zzz d/M/yy h:m:s.z AP"); - // Section QDateTimeEdit::currentSection() - // void QDateTimeEdit::setCurrentSection(Section) - obj1.setCurrentSection(QDateTimeEdit::NoSection); - QVERIFY(obj1.currentSection() != QDateTimeEdit::NoSection); - obj1.setCurrentSection(QDateTimeEdit::AmPmSection); - QCOMPARE(QDateTimeEdit::AmPmSection, obj1.currentSection()); - obj1.setCurrentSection(QDateTimeEdit::MSecSection); - QCOMPARE(QDateTimeEdit::MSecSection, obj1.currentSection()); - obj1.setCurrentSection(QDateTimeEdit::SecondSection); - QCOMPARE(QDateTimeEdit::SecondSection, obj1.currentSection()); - obj1.setCurrentSection(QDateTimeEdit::MinuteSection); - QCOMPARE(QDateTimeEdit::MinuteSection, obj1.currentSection()); - obj1.setCurrentSection(QDateTimeEdit::HourSection); - QCOMPARE(QDateTimeEdit::HourSection, obj1.currentSection()); - obj1.setCurrentSection(QDateTimeEdit::DaySection); - QCOMPARE(QDateTimeEdit::DaySection, obj1.currentSection()); - obj1.setCurrentSection(QDateTimeEdit::MonthSection); - QCOMPARE(QDateTimeEdit::MonthSection, obj1.currentSection()); - obj1.setCurrentSection(QDateTimeEdit::YearSection); - QCOMPARE(QDateTimeEdit::YearSection, obj1.currentSection()); -} - -tst_QDateTimeEdit::tst_QDateTimeEdit() -{ - qRegisterMetaType<QDate>("QDate"); - qRegisterMetaType<QTime>("QTime"); - qRegisterMetaType<QDateTime>("QDateTime"); - qRegisterMetaType<QList<int> >("QList<int>"); -} - -tst_QDateTimeEdit::~tst_QDateTimeEdit() -{ - -} - -void tst_QDateTimeEdit::initTestCase() -{ - QLocale system = QLocale::system(); - if (system.language() != QLocale::C && system.language() != QLocale::English) - qWarning("Running under locale %s/%s -- this test may generate failures due to language differences", - qPrintable(QLocale::languageToString(system.language())), - qPrintable(QLocale::countryToString(system.country()))); - testWidget = new EditorDateEdit(0); - testFocusWidget = new QWidget(0); - testFocusWidget->resize(200, 100); - testFocusWidget->show(); -} - -void tst_QDateTimeEdit::cleanupTestCase() -{ - delete testFocusWidget; - testFocusWidget = 0; - delete testWidget; - testWidget = 0; -} - - -void tst_QDateTimeEdit::init() -{ - QLocale::setDefault(QLocale(QLocale::C)); -#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) - SetThreadLocale(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT)); -#endif - testWidget->setDisplayFormat("dd/MM/yyyy"); // Nice default to have - testWidget->setDateTime(QDateTime(QDate(2000, 1, 1), QTime(0, 0))); - testWidget->show(); - testFocusWidget->move(-1000, -1000); -} - -void tst_QDateTimeEdit::cleanup() -{ - testWidget->clearMinimumDateTime(); - testWidget->clearMaximumDateTime(); - testWidget->setTimeSpec(Qt::LocalTime); - testWidget->setSpecialValueText(QString()); - testWidget->setWrapping(false); -} - -void tst_QDateTimeEdit::constructor_qwidget() -{ - testWidget->hide(); - QDateTimeEdit dte(0); - dte.show(); - QCOMPARE(dte.dateTime(), QDateTime(QDate(2000, 1, 1), QTime(0, 0, 0, 0))); - QCOMPARE(dte.minimumDate(), QDate(1752, 9, 14)); - QCOMPARE(dte.minimumTime(), QTime(0, 0, 0, 0)); - QCOMPARE(dte.maximumDate(), QDate(7999, 12, 31)); - QCOMPARE(dte.maximumTime(), QTime(23, 59, 59, 999)); -} - -void tst_QDateTimeEdit::constructor_qdatetime_data() -{ - QTest::addColumn<QDateTime>("parameter"); - QTest::addColumn<QDateTime>("displayDateTime"); - QTest::addColumn<QDate>("minimumDate"); - QTest::addColumn<QTime>("minimumTime"); - QTest::addColumn<QDate>("maximumDate"); - QTest::addColumn<QTime>("maximumTime"); - - QTest::newRow("normal") << QDateTime(QDate(2004, 6, 16), QTime(13, 46, 32, 764)) - << QDateTime(QDate(2004, 6, 16), QTime(13, 46, 32, 764)) - << QDate(1752, 9, 14) << QTime(0, 0, 0, 0) - << QDate(7999, 12, 31) << QTime(23, 59, 59, 999); - - QTest::newRow("invalid") << QDateTime(QDate(9999, 99, 99), QTime(13, 46, 32, 764)) - << QDateTime(QDate(2000, 1, 1), QTime(0, 0, 0, 0)) - << QDate(1752, 9, 14) << QTime(0, 0, 0, 0) - << QDate(7999, 12, 31) << QTime(23, 59, 59, 999); -} - - - -void tst_QDateTimeEdit::constructor_qdatetime() -{ - QFETCH(QDateTime, parameter); - QFETCH(QDateTime, displayDateTime); - QFETCH(QDate, minimumDate); - QFETCH(QTime, minimumTime); - QFETCH(QDate, maximumDate); - QFETCH(QTime, maximumTime); - - testWidget->hide(); - - QDateTimeEdit dte(parameter); - dte.show(); - QCOMPARE(dte.dateTime(), displayDateTime); - QCOMPARE(dte.minimumDate(), minimumDate); - QCOMPARE(dte.minimumTime(), minimumTime); - QCOMPARE(dte.maximumDate(), maximumDate); - QCOMPARE(dte.maximumTime(), maximumTime); -} - -void tst_QDateTimeEdit::constructor_qdate_data() -{ - QTest::addColumn<QDate>("parameter"); - QTest::addColumn<QDateTime>("displayDateTime"); - QTest::addColumn<QDate>("minimumDate"); - QTest::addColumn<QTime>("minimumTime"); - QTest::addColumn<QDate>("maximumDate"); - QTest::addColumn<QTime>("maximumTime"); - - QTest::newRow("normal") << QDate(2004, 6, 16) - << QDateTime(QDate(2004, 6, 16), QTime(0, 0, 0, 0)) - << QDate(1752, 9, 14) << QTime(0, 0, 0, 0) - << QDate(7999, 12, 31) << QTime(23, 59, 59, 999); - - QTest::newRow("invalid") << QDate(9999, 99, 99) - << QDateTime(QDate(2000, 1, 1), QTime(0, 0, 0, 0)) - << QDate(1752, 9, 14) << QTime(0, 0, 0, 0) - << QDate(7999, 12, 31) << QTime(23, 59, 59, 999); -} - - - -void tst_QDateTimeEdit::constructor_qdate() -{ - QFETCH(QDate, parameter); - QFETCH(QDateTime, displayDateTime); - QFETCH(QDate, minimumDate); - QFETCH(QTime, minimumTime); - QFETCH(QDate, maximumDate); - QFETCH(QTime, maximumTime); - - testWidget->hide(); - - QDateTimeEdit dte(parameter); - dte.show(); - QCOMPARE(dte.dateTime(), displayDateTime); - QCOMPARE(dte.minimumDate(), minimumDate); - QCOMPARE(dte.minimumTime(), minimumTime); - QCOMPARE(dte.maximumDate(), maximumDate); - QCOMPARE(dte.maximumTime(), maximumTime); -} - -void tst_QDateTimeEdit::constructor_qtime_data() -{ - QTest::addColumn<QTime>("parameter"); - QTest::addColumn<QDateTime>("displayDateTime"); - QTest::addColumn<QDate>("minimumDate"); - QTest::addColumn<QTime>("minimumTime"); - QTest::addColumn<QDate>("maximumDate"); - QTest::addColumn<QTime>("maximumTime"); - - QTest::newRow("normal") << QTime(13, 46, 32, 764) - << QDateTime(QDate(2000, 1, 1), QTime(13, 46, 32, 764)) - << QDate(2000, 1, 1) << QTime(0, 0, 0, 0) - << QDate(2000, 1, 1) << QTime(23, 59, 59, 999); - - QTest::newRow("invalid") << QTime(99, 99, 99, 5000) - << QDateTime(QDate(2000, 1, 1), QTime(0, 0, 0, 0)) - << QDate(2000, 1, 1) << QTime(0, 0, 0, 0) - << QDate(2000, 1, 1) << QTime(23, 59, 59, 999); -} - - - -void tst_QDateTimeEdit::constructor_qtime() -{ - QFETCH(QTime, parameter); - QFETCH(QDateTime, displayDateTime); - QFETCH(QDate, minimumDate); - QFETCH(QTime, minimumTime); - QFETCH(QDate, maximumDate); - QFETCH(QTime, maximumTime); - - testWidget->hide(); - - QDateTimeEdit dte(parameter); - dte.show(); - QCOMPARE(dte.dateTime(), displayDateTime); - QCOMPARE(dte.minimumDate(), minimumDate); - QCOMPARE(dte.minimumTime(), minimumTime); - QCOMPARE(dte.maximumDate(), maximumDate); - QCOMPARE(dte.maximumTime(), maximumTime); -} - -void tst_QDateTimeEdit::minimumDate_data() -{ - QTest::addColumn<QDate>("minimumDate"); - QTest::addColumn<QDate>("expectedMinDate"); - - QTest::newRow("normal-0") << QDate(2004, 5, 10) << QDate(2004, 5, 10); - QTest::newRow("normal-1") << QDate(2002, 3, 15) << QDate(2002, 3, 15); - QTest::newRow("normal-2") << QDate(7999, 12, 31) << QDate(7999, 12, 31); - QTest::newRow("normal-3") << QDate(1753, 1, 1) << QDate(1753, 1, 1); - QTest::newRow("invalid-0") << QDate(0, 0, 0) << QDate(1752, 9, 14); - QTest::newRow("old") << QDate(1492, 8, 3) << QDate(1492, 8, 3); -} - -void tst_QDateTimeEdit::minimumDate() -{ - QFETCH(QDate, minimumDate); - QFETCH(QDate, expectedMinDate); - - testWidget->setMinimumDate(minimumDate); - QCOMPARE(testWidget->minimumDate(), expectedMinDate); -} - -void tst_QDateTimeEdit::minimumDateTime_data() -{ - QTest::addColumn<QDateTime>("minimumDateTime"); - QTest::addColumn<QDateTime>("expectedMinDateTime"); - - QTest::newRow("normal-0") << QDateTime(QDate(2004, 5, 10), QTime(2, 3, 14)) - << QDateTime(QDate(2004, 5, 10), QTime(2, 3, 14)); - - QTest::newRow("normal-1") << QDateTime(QDate(2005, 5, 10), QTime(22, 33, 1)) - << QDateTime(QDate(2005, 5, 10), QTime(22, 33, 1)); - QTest::newRow("normal-2") << QDateTime(QDate(2006, 5, 10), QTime(13, 31, 23)) - << QDateTime(QDate(2006, 5, 10), QTime(13, 31, 23)); - QTest::newRow("normal-3") << QDateTime(QDate(2007, 5, 10), QTime(22, 23, 23)) - << QDateTime(QDate(2007, 5, 10), QTime(22, 23, 23)); - QTest::newRow("normal-4") << QDateTime(QDate(2008, 5, 10), QTime(2, 3, 1)) - << QDateTime(QDate(2008, 5, 10), QTime(2, 3, 1)); - QTest::newRow("invalid-0") << QDateTime() << QDateTime(QDate(1752, 9, 14), QTime(0, 0, 0)); - QTest::newRow("old") << QDateTime(QDate(1492, 8, 3), QTime(2, 3, 1)) - << QDateTime(QDate(1492, 8, 3), QTime(2, 3, 1)); -} - -void tst_QDateTimeEdit::minimumDateTime() -{ - QFETCH(QDateTime, minimumDateTime); - QFETCH(QDateTime, expectedMinDateTime); - - testWidget->setMinimumDateTime(minimumDateTime); - QCOMPARE(testWidget->minimumDateTime(), expectedMinDateTime); -} - - -void tst_QDateTimeEdit::maximumDateTime_data() -{ - QTest::addColumn<QDateTime>("maximumDateTime"); - QTest::addColumn<QDateTime>("expectedMinDateTime"); - - QTest::newRow("normal-0") << QDateTime(QDate(2004, 5, 10), QTime(2, 3, 14)) - << QDateTime(QDate(2004, 5, 10), QTime(2, 3, 14)); - - QTest::newRow("normal-1") << QDateTime(QDate(2005, 5, 10), QTime(22, 33, 1)) - << QDateTime(QDate(2005, 5, 10), QTime(22, 33, 1)); - QTest::newRow("normal-2") << QDateTime(QDate(2006, 5, 10), QTime(13, 31, 23)) - << QDateTime(QDate(2006, 5, 10), QTime(13, 31, 23)); - QTest::newRow("normal-3") << QDateTime(QDate(2007, 5, 10), QTime(22, 23, 23)) - << QDateTime(QDate(2007, 5, 10), QTime(22, 23, 23)); - QTest::newRow("normal-4") << QDateTime(QDate(2008, 5, 10), QTime(2, 3, 1)) - << QDateTime(QDate(2008, 5, 10), QTime(2, 3, 1)); - QTest::newRow("invalid-0") << QDateTime() << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999)); -} - -void tst_QDateTimeEdit::maximumDateTime() -{ - QFETCH(QDateTime, maximumDateTime); - QFETCH(QDateTime, expectedMinDateTime); - - testWidget->setMaximumDateTime(maximumDateTime); - QCOMPARE(testWidget->maximumDateTime(), expectedMinDateTime); -} - -void tst_QDateTimeEdit::maximumDate_data() -{ - QTest::addColumn<QDate>("maximumDate"); - QTest::addColumn<QDate>("expectedMaxDate"); - - QTest::newRow("normal-0") << QDate(2004, 05, 10) << QDate(2004, 5, 10); - QTest::newRow("normal-1") << QDate(2002, 03, 15) << QDate(2002, 3, 15); - QTest::newRow("normal-2") << QDate(7999, 12, 31) << QDate(7999, 12, 31); - QTest::newRow("normal-3") << QDate(1753, 1, 1) << QDate(1753, 1, 1); - QTest::newRow("invalid-0") << QDate(0, 0, 0) << QDate(7999, 12, 31); -} - -void tst_QDateTimeEdit::maximumDate() -{ - QFETCH(QDate, maximumDate); - QFETCH(QDate, expectedMaxDate); - - testWidget->setMaximumDate(maximumDate); - QCOMPARE(testWidget->maximumDate(), expectedMaxDate); -} - -void tst_QDateTimeEdit::clearMinimumDate_data() -{ - QTest::addColumn<QDate>("minimumDate"); - QTest::addColumn<bool>("valid"); - QTest::addColumn<QDate>("expectedMinDateAfterClear"); - - QTest::newRow("normal-0") << QDate(2004, 05, 10) << true << QDate(1752, 9, 14); - QTest::newRow("normal-1") << QDate(2002, 3, 15) << true << QDate(1752, 9, 14); - QTest::newRow("normal-2") << QDate(7999, 12, 31) << true << QDate(1752, 9, 14); - QTest::newRow("normal-3") << QDate(1753, 1, 1) << true << QDate(1752, 9, 14); - QTest::newRow("invalid-0") << QDate(0, 0, 0) << false << QDate(1752, 9, 14); -} - -void tst_QDateTimeEdit::clearMinimumDate() -{ - QFETCH(QDate, minimumDate); - QFETCH(bool, valid); - QFETCH(QDate, expectedMinDateAfterClear); - - testWidget->setMinimumDate(minimumDate); - if (valid) { - QCOMPARE(testWidget->minimumDate(), minimumDate); - } - testWidget->clearMinimumDate(); - QCOMPARE(testWidget->minimumDate(), expectedMinDateAfterClear); -} - -void tst_QDateTimeEdit::clearMinimumDateTime_data() -{ - QTest::addColumn<QDateTime>("minimumDateTime"); - QTest::addColumn<bool>("valid"); - QTest::addColumn<QDateTime>("expectedMinDateTimeAfterClear"); - - QTest::newRow("normal-0") << QDateTime(QDate(2004, 05, 10), QTime(12, 12, 12)) - << true << QDateTime(QDate(1752, 9, 14), QTime(0, 0)); - QTest::newRow("normal-1") << QDateTime(QDate(2002, 3, 15), QTime(13, 13, 13)) - << true << QDateTime(QDate(1752, 9, 14), QTime(0, 0)); - QTest::newRow("normal-2") << QDateTime(QDate(7999, 12, 31), QTime(14, 14, 14)) - << true << QDateTime(QDate(1752, 9, 14), QTime(0, 0)); - QTest::newRow("normal-3") << QDateTime(QDate(1753, 1, 1), QTime(15, 15, 15)) - << true << QDateTime(QDate(1752, 9, 14), QTime(0, 0)); - QTest::newRow("invalid-0") << QDateTime() << false << QDateTime(QDate(1752, 9, 14), QTime(0, 0)); - QTest::newRow("old") << QDateTime(QDate(1492, 8, 3), QTime(2, 3, 1)) << true - << QDateTime(QDate(1752, 9, 14), QTime(0, 0)); - -} - -void tst_QDateTimeEdit::clearMinimumDateTime() -{ - QFETCH(QDateTime, minimumDateTime); - QFETCH(bool, valid); - QFETCH(QDateTime, expectedMinDateTimeAfterClear); - - testWidget->setMinimumDateTime(minimumDateTime); - if (valid) { - QCOMPARE(testWidget->minimumDateTime(), minimumDateTime); - } - testWidget->clearMinimumDateTime(); - QCOMPARE(testWidget->minimumDateTime(), expectedMinDateTimeAfterClear); -} - - -void tst_QDateTimeEdit::clearMaximumDateTime_data() -{ - QTest::addColumn<QDateTime>("maximumDateTime"); - QTest::addColumn<bool>("valid"); - QTest::addColumn<QDateTime>("expectedMinDateTimeAfterClear"); - - QTest::newRow("normal-0") << QDateTime(QDate(2004, 05, 10), QTime(12, 12, 12)) - << true << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999)); - QTest::newRow("normal-1") << QDateTime(QDate(2002, 3, 15), QTime(13, 13, 13)) - << true << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999)); - QTest::newRow("normal-2") << QDateTime(QDate(7999, 12, 31), QTime(14, 14, 14)) - << true << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999)); - QTest::newRow("normal-3") << QDateTime(QDate(1753, 1, 1), QTime(15, 15, 15)) - << true << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999)); - QTest::newRow("invalid-0") << QDateTime() - << false << QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999)); -} - -void tst_QDateTimeEdit::clearMaximumDateTime() -{ - QFETCH(QDateTime, maximumDateTime); - QFETCH(bool, valid); - QFETCH(QDateTime, expectedMinDateTimeAfterClear); - - testWidget->setMaximumDateTime(maximumDateTime); - if (valid) { - QCOMPARE(testWidget->maximumDateTime(), maximumDateTime); - } - testWidget->clearMaximumDateTime(); - QCOMPARE(testWidget->maximumDateTime(), expectedMinDateTimeAfterClear); -} - - -void tst_QDateTimeEdit::clearMaximumDate_data() -{ - QTest::addColumn<QDate>("maximumDate"); - QTest::addColumn<bool>("valid"); - QTest::addColumn<QDate>("expectedMaxDateAfterClear"); - - QTest::newRow("normal-0") << QDate(2004, 05, 10) << true << QDate(7999, 12, 31); - QTest::newRow("normal-1") << QDate(2002, 03, 15) << true << QDate(7999, 12, 31); - QTest::newRow("normal-2") << QDate(7999, 12, 31) << true << QDate(7999, 12, 31); - QTest::newRow("normal-3") << QDate(2000, 1, 1) << true << QDate(7999, 12, 31); - QTest::newRow("invalid-0") << QDate(0, 0, 0) << false << QDate(7999, 12, 31); -} - -void tst_QDateTimeEdit::clearMaximumDate() -{ - QFETCH(QDate, maximumDate); - QFETCH(bool, valid); - QFETCH(QDate, expectedMaxDateAfterClear); - - testWidget->setMaximumDate(maximumDate); - if (valid) { - QCOMPARE(testWidget->maximumDate(), maximumDate); - } - testWidget->clearMaximumDate(); - QCOMPARE(testWidget->maximumDate(), expectedMaxDateAfterClear); -} - -void tst_QDateTimeEdit::displayFormat_data() -{ - QTest::addColumn<QString>("format"); - QTest::addColumn<bool>("valid"); - QTest::addColumn<QString>("text"); - QTest::addColumn<QDateTime>("date"); - - const QDateTime dt(QDate(2999, 12, 31), QTime(3, 59, 59, 999)); - - QTest::newRow("valid-0") << QString("yyyy MM dd") << true << QString("2999 12 31") << dt; - QTest::newRow("valid-1") << QString("dd MM yyyy::ss:mm:hh") << true - << QString("31 12 2999::59:59:03") << dt; - QTest::newRow("valid-2") << QString("hh-dd-mm-MM-yy") << true << QString("03-31-59-12-99") << dt; - QTest::newRow("valid-3") << QString("ddd MM d yyyy::ss:mm:hh") << true - << QDate::shortDayName(2) + " 12 31 2999::59:59:03" << dt; - QTest::newRow("valid-4") << QString("hh-dd-mm-MM-yyyy") << true << QString("03-31-59-12-2999") << dt; - QTest::newRow("invalid-0") << QString("yyyy.MM.yy") << true << QString("2999.12.99") << dt; - QTest::newRow("invalid-1") << QString("y") << false << QString() << dt; - QTest::newRow("invalid-2") << QString("") << false << QString() << dt; - QTest::newRow("quoted-1") << QString("'Midday is at:' dd") << true << QString("Midday is at: 31") << dt; - QTest::newRow("leading1") << QString("h:hh:hhh") << true << QString("3:03:033") << dt; - QTest::newRow("H1") << QString("HH:hh:ap") << true << QString("03:03:am") << dt; - QTest::newRow("H2") << QString("HH:hh:ap") << true << QString("23:11:pm") - << QDateTime(dt.date(), QTime(23, 0, 0)); -} - -void tst_QDateTimeEdit::displayFormat() -{ - QFETCH(QString, format); - QFETCH(bool, valid); - QFETCH(QString, text); - QFETCH(QDateTime, date); - - testWidget->setDateTime(date); - - QString compareFormat = format; - if (!valid) - compareFormat = testWidget->displayFormat(); - testWidget->setDisplayFormat(format); - QCOMPARE(testWidget->displayFormat(), compareFormat); - if (valid) - QCOMPARE(testWidget->text(), text); -} - -void tst_QDateTimeEdit::selectAndScrollWithKeys() -{ - qApp->setActiveWindow(testWidget); - testWidget->setDate(QDate(2004, 05, 11)); - testWidget->setDisplayFormat("dd/MM/yyyy"); - testWidget->show(); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_Home); -#endif - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("1")); - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11")); - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11/")); - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11/0")); - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11/05")); - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11/05/")); - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11/05/2")); - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11/05/20")); - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11/05/200")); - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11/05/2004")); - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11/05/2004")); - - // Now the year part should be selected - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->date(), QDate(2005, 5, 11)); - QCOMPARE(testWidget->currentSection(), QDateTimeEdit::YearSection); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("2005")); - QTest::keyClick(testWidget, Qt::Key_Down); - QCOMPARE(testWidget->date(), QDate(2004, 5, 11)); - QCOMPARE(testWidget->currentSection(), QDateTimeEdit::YearSection); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("2004")); - - -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_End); -#endif - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("4")); - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("04")); - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("004")); - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("2004")); - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("/2004")); - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("5/2004")); - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("05/2004")); - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("/05/2004")); - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("1/05/2004")); - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11/05/2004")); - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11/05/2004")); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_Home); -#endif - - // Now the day part should be selected - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->date(), QDate(2004, 5, 12)); - QCOMPARE(testWidget->currentSection(), QDateTimeEdit::DaySection); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("12")); - QTest::keyClick(testWidget, Qt::Key_Down); - QCOMPARE(testWidget->date(), QDate(2004, 5, 11)); - QCOMPARE(testWidget->currentSection(), QDateTimeEdit::DaySection); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11")); - -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_Home); -#endif - - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ShiftModifier); - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11")); - // Now the day part should be selected - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->date(), QDate(2004, 05, 12)); -} - -void tst_QDateTimeEdit::backspaceKey() -{ - qApp->setActiveWindow(testWidget); - testWidget->setDate(QDate(2004, 05, 11)); - testWidget->setDisplayFormat("d/MM/yyyy"); - testWidget->show(); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_End); -#endif - QCOMPARE(testWidget->text(), QString("11/05/2004")); - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString("11/05/200")); - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString("11/05/20")); - // Check that moving into another field reverts it - for (int i=0;i<3;i++) - QTest::keyClick(testWidget, Qt::Key_Left); - QCOMPARE(testWidget->text(), QString("11/05/2004")); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_End); -#endif - for (int i=0;i<4;i++) { - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ShiftModifier); - } - - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString("11/05/")); - QTest::keyClick(testWidget, Qt::Key_Left); - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString("11/0/2004")); - testWidget->interpretText(); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_End); -#endif - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString("11/05/200")); - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString("11/05/20")); - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString("11/05/2")); - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString("11/05/")); - QTest::keyClick(testWidget, Qt::Key_Left); - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString("11/0/2004")); - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString("11//2004")); - QTest::keyClick(testWidget, Qt::Key_Left); - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString("1/05/2004")); - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString("/05/2004")); - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString("/05/2004")); - QTest::keyClick(testWidget, Qt::Key_Enter); - QCOMPARE(testWidget->text(), QString("1/05/2004")); -} - -void tst_QDateTimeEdit::deleteKey() -{ - qApp->setActiveWindow(testWidget); - testWidget->setDate(QDate(2004, 05, 11)); - testWidget->setDisplayFormat("d/MM/yyyy"); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_Home); -#endif - QTest::keyClick(testWidget, Qt::Key_Delete); - QCOMPARE(testWidget->text(), QString("1/05/2004")); - QTest::keyClick(testWidget, Qt::Key_Delete); - QCOMPARE(testWidget->text(), QString("/05/2004")); - QTest::keyClick(testWidget, Qt::Key_Right); - QTest::keyClick(testWidget, Qt::Key_Right); - QCOMPARE(testWidget->text(), QString("1/05/2004")); -} - -void tst_QDateTimeEdit::tabKeyNavigation() -{ - qApp->setActiveWindow(testWidget); - testWidget->setDate(QDate(2004, 05, 11)); - testWidget->setDisplayFormat("dd/MM/yyyy"); - testWidget->show(); - testWidget->setCurrentSection(QDateTimeEdit::DaySection); - - QTest::keyClick(testWidget, Qt::Key_Tab); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("05")); - QTest::keyClick(testWidget, Qt::Key_Tab); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("2004")); - QTest::keyClick(testWidget, Qt::Key_Tab, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("05")); - QTest::keyClick(testWidget, Qt::Key_Tab, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11")); -} - -void tst_QDateTimeEdit::tabKeyNavigationWithPrefix() -{ - qApp->setActiveWindow(testWidget); - testWidget->setDate(QDate(2004, 05, 11)); - testWidget->setDisplayFormat("prefix dd/MM/yyyy"); - - QTest::keyClick(testWidget, Qt::Key_Tab); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11")); - QTest::keyClick(testWidget, Qt::Key_Tab); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("05")); - QTest::keyClick(testWidget, Qt::Key_Tab); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("2004")); - QTest::keyClick(testWidget, Qt::Key_Tab, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("05")); - QTest::keyClick(testWidget, Qt::Key_Tab, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11")); -} - -void tst_QDateTimeEdit::tabKeyNavigationWithSuffix() -{ - qApp->setActiveWindow(testWidget); - testWidget->setDate(QDate(2004, 05, 11)); - testWidget->setDisplayFormat("dd/MM/yyyy 'suffix'"); - - QTest::keyClick(testWidget, Qt::Key_Tab); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("05")); - QTest::keyClick(testWidget, Qt::Key_Tab); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("2004")); - QTest::keyClick(testWidget, Qt::Key_Tab, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("05")); - QTest::keyClick(testWidget, Qt::Key_Tab, Qt::ShiftModifier); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11")); -} - - -void tst_QDateTimeEdit::enterKey() -{ - qApp->setActiveWindow(testWidget); - testWidget->setDate(QDate(2004, 5, 11)); - testWidget->setDisplayFormat("prefix d/MM/yyyy 'suffix'"); - testWidget->lineEdit()->setFocus(); - -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_Home); -#endif - QTest::keyClick(testWidget, Qt::Key_Enter); - QVERIFY(!testWidget->lineEdit()->hasSelectedText()); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_End); -#endif - QTest::keyClick(testWidget, Qt::Key_Enter); - QVERIFY(!testWidget->lineEdit()->hasSelectedText()); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_Home); -#endif - QTest::keyClick(testWidget, Qt::Key_Tab); - QTest::keyClick(testWidget, Qt::Key_Enter); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11")); - QTest::keyClick(testWidget, Qt::Key_1); - QTest::keyClick(testWidget, Qt::Key_5); - - QTest::keyClick(testWidget, Qt::Key_Left); - QTest::keyClick(testWidget, Qt::Key_Left); - - QTest::keyClick(testWidget, Qt::Key_Enter); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("15")); - QCOMPARE(testWidget->date(), QDate(2004, 5, 15)); - - QTest::keyClick(testWidget, Qt::Key_9); - QTest::keyClick(testWidget, Qt::Key_Tab, Qt::ShiftModifier); - QTest::keyClick(testWidget, Qt::Key_Enter); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("9")); - QCOMPARE(testWidget->date(), QDate(2004, 5, 9)); - - QTest::keyClick(testWidget, Qt::Key_0); - QTest::keyClick(testWidget, Qt::Key_0); - QTest::keyClick(testWidget, Qt::Key_Enter); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("9")); - QCOMPARE(testWidget->date(), QDate(2004, 5, 9)); - - QSignalSpy enterSpy(testWidget, SIGNAL(dateChanged(const QDate &))); - QTest::keyClick(testWidget, Qt::Key_Enter); - QCOMPARE(enterSpy.count(), 1); - -#if 0 - QVariantList list = enterSpy.takeFirst(); - QCOMPARE(list.at(0).toDate(), QDate(2004, 9, 15)); -#endif - -} - -void tst_QDateTimeEdit::specialValueText() -{ - testWidget->setDisplayFormat("dd/MM/yyyy"); - testWidget->setDateRange(QDate(2000, 1, 1), QDate(2001, 1, 1)); - testWidget->setDate(QDate(2000, 1, 2)); - testWidget->setSpecialValueText("fOo"); - testWidget->setCurrentSection(QDateTimeEdit::DaySection); - QCOMPARE(testWidget->date(), QDate(2000, 1, 2)); - QCOMPARE(testWidget->text(), QString("02/01/2000")); - QTest::keyClick(testWidget, Qt::Key_Down); - QCOMPARE(testWidget->date(), QDate(2000, 1, 1)); - QCOMPARE(testWidget->text(), QString("fOo")); - QTest::keyClick(testWidget, Qt::Key_Down); - QCOMPARE(testWidget->date(), QDate(2000, 1, 1)); - QCOMPARE(testWidget->text(), QString("fOo")); - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->date(), QDate(2000, 1, 2)); - QCOMPARE(testWidget->text(), QString("02/01/2000")); - QTest::keyClick(testWidget, Qt::Key_Down); - QCOMPARE(testWidget->date(), QDate(2000, 1, 1)); - QCOMPARE(testWidget->text(), QString("fOo")); - -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_End); -#endif - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->date(), QDate(2000, 1, 2)); - QCOMPARE(testWidget->text(), QString("02/01/2000")); - QTest::keyClick(testWidget, Qt::Key_Down); - QCOMPARE(testWidget->text(), QString("fOo")); - -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_End); -#endif - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString("fO")); - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString("f")); - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString()); - QTest::keyClick(testWidget, Qt::Key_F); - QCOMPARE(testWidget->text(), QString("f")); - QTest::keyClick(testWidget, Qt::Key_O); // will automatically uppercase - QCOMPARE(testWidget->text(), QString("fO")); - QTest::keyClick(testWidget, Qt::Key_O); - QCOMPARE(testWidget->text(), QString("fOo")); -} - - -void tst_QDateTimeEdit::setRange_data() -{ - QTest::addColumn<QTime>("minTime"); - QTest::addColumn<QTime>("maxTime"); - QTest::addColumn<QDate>("minDate"); - QTest::addColumn<QDate>("maxDate"); - QTest::addColumn<QDateTime>("expectedMin"); - QTest::addColumn<QDateTime>("expectedMax"); - - const QDate cdt = QDate::currentDate(); - - QTest::newRow("data0") << QTime(0, 0) << QTime(14, 12, 0) - << cdt << cdt - << QDateTime(cdt, QTime(0, 0)) - << QDateTime(cdt, QTime(14, 12, 0)); - - QTest::newRow("data1") << QTime(10, 0) << QTime(1, 12, 0) << cdt.addDays(-1) - << cdt - << QDateTime(cdt.addDays(-1), QTime(10, 0)) - << QDateTime(cdt, QTime(1, 12, 0)); -} - -void tst_QDateTimeEdit::setRange() -{ - QFETCH(QTime, minTime); - QFETCH(QTime, maxTime); - QFETCH(QDate, minDate); - QFETCH(QDate, maxDate); - QFETCH(QDateTime, expectedMin); - QFETCH(QDateTime, expectedMax); - testWidget->hide(); - - { - QDateTimeEdit dte(0); - dte.setTimeRange(minTime, maxTime); - QCOMPARE(dte.minimumTime(), expectedMin.time()); - QCOMPARE(dte.maximumTime(), expectedMax.time()); - dte.setDateRange(minDate, maxDate); - QCOMPARE(dte.minimumDate(), expectedMin.date()); - QCOMPARE(dte.minimumDateTime(), expectedMin); - QCOMPARE(dte.maximumDate(), expectedMax.date()); - QCOMPARE(dte.maximumDateTime(), expectedMax); - QCOMPARE(dte.minimumTime(), expectedMin.time()); - QCOMPARE(dte.maximumTime(), expectedMax.time()); - dte.setDateTimeRange(QDateTime(minDate, minTime), QDateTime(maxDate, maxTime)); - QCOMPARE(dte.minimumDate(), expectedMin.date()); - QCOMPARE(dte.minimumDateTime(), expectedMin); - QCOMPARE(dte.maximumDate(), expectedMax.date()); - QCOMPARE(dte.maximumDateTime(), expectedMax); - QCOMPARE(dte.minimumTime(), expectedMin.time()); - QCOMPARE(dte.maximumTime(), expectedMax.time()); - } - { - - QDateTimeEdit dte2(0); - dte2.setDateRange(minDate, maxDate); - dte2.setTimeRange(minTime, maxTime); - - QCOMPARE(dte2.minimumDate(), expectedMin.date()); - QCOMPARE(dte2.maximumDate(), expectedMax.date()); - QCOMPARE(dte2.minimumTime(), expectedMin.time()); - QCOMPARE(dte2.maximumTime(), expectedMax.time()); - } - - { - QDateTimeEdit dte3(0); - dte3.setMinimumTime(minTime); - dte3.setMaximumTime(maxTime); - dte3.setMinimumDate(minDate); - dte3.setMaximumDate(maxDate); - - QCOMPARE(dte3.minimumDate(), expectedMin.date()); - QCOMPARE(dte3.maximumDate(), expectedMax.date()); - QCOMPARE(dte3.minimumTime(), expectedMin.time()); - QCOMPARE(dte3.maximumTime(), expectedMax.time()); - } - - { - QDateTimeEdit dte4(0); - dte4.setMinimumDate(minDate); - dte4.setMaximumDate(maxDate); - dte4.setMinimumTime(minTime); - dte4.setMaximumTime(maxTime); - - QCOMPARE(dte4.minimumDate(), expectedMin.date()); - QCOMPARE(dte4.maximumDate(), expectedMax.date()); - QCOMPARE(dte4.minimumTime(), expectedMin.time()); - QCOMPARE(dte4.maximumTime(), expectedMax.time()); - } -} - -void tst_QDateTimeEdit::wrappingTime_data() -{ - QTest::addColumn<bool>("startWithMin"); - QTest::addColumn<QTime>("minimumTime"); - QTest::addColumn<QTime>("maximumTime"); - QTest::addColumn<uint>("section"); - QTest::addColumn<QTime>("newTime"); - - QTest::newRow("data0") << false << QTime(0,0,0) << QTime(2,2,2) << (uint)QDateTimeEdit::HourSection - << QTime(0,2,2); - QTest::newRow("data1") << true << QTime(0,0,0) << QTime(2,2,2) << (uint)QDateTimeEdit::HourSection - << QTime(2,0,0); - QTest::newRow("data2") << false << QTime(0,0,0) << QTime(2,2,2) << (uint)QDateTimeEdit::MinuteSection - << QTime(2,0,2); - QTest::newRow("data3") << true << QTime(0,0,0) << QTime(2,2,2) << (uint)QDateTimeEdit::MinuteSection - << QTime(0,59,0); - QTest::newRow("data4") << false << QTime(0,0,0) << QTime(2,2,2) << (uint)QDateTimeEdit::SecondSection - << QTime(2,2,0); - QTest::newRow("data5") << true << QTime(0,0,0) << QTime(2,2,2) << (uint)QDateTimeEdit::SecondSection - << QTime(0,0,59); - QTest::newRow("data6") << false << QTime(1,1,1) << QTime(22,22,22) << (uint)QDateTimeEdit::HourSection - << QTime(1,22,22); - QTest::newRow("data7") << true << QTime(1,1,1) << QTime(22,22,22) << (uint)QDateTimeEdit::HourSection - << QTime(22,1,1); - QTest::newRow("data8") << false << QTime(1,1,1) << QTime(22,22,22) << (uint)QDateTimeEdit::MinuteSection - << QTime(22,0,22); - QTest::newRow("data9") << true << QTime(1,1,1) << QTime(22,22,22) << (uint)QDateTimeEdit::MinuteSection - << QTime(1,59,1); - QTest::newRow("data10") << false << QTime(1,1,1) << QTime(22,22,22) << (uint)QDateTimeEdit::SecondSection - << QTime(22,22,0); - QTest::newRow("data11") << true << QTime(1,1,1) << QTime(22,22,22) << (uint)QDateTimeEdit::SecondSection - << QTime(1,1,59); - QTest::newRow("data12") << false << QTime(1,1,1) << QTime(1,2,1) << (uint)QDateTimeEdit::HourSection - << QTime(1,2,1); - QTest::newRow("data13") << true << QTime(1,1,1) << QTime(1,2,1) << (uint)QDateTimeEdit::HourSection - << QTime(1,1,1); - QTest::newRow("data14") << false << QTime(1,1,1) << QTime(1,2,1) << (uint)QDateTimeEdit::MinuteSection - << QTime(1,1,1); - QTest::newRow("data15") << true << QTime(1,1,1) << QTime(1,2,1) << (uint)QDateTimeEdit::MinuteSection - << QTime(1,2,1); - QTest::newRow("data16") << false << QTime(1,1,1) << QTime(1,2,1) << (uint)QDateTimeEdit::SecondSection - << QTime(1,2,0); - QTest::newRow("data17") << true << QTime(1,1,1) << QTime(1,2,1) << (uint)QDateTimeEdit::SecondSection - << QTime(1,1,59); -} - - -void tst_QDateTimeEdit::wrappingTime() -{ - QFETCH(bool, startWithMin); - QFETCH(QTime, minimumTime); - QFETCH(QTime, maximumTime); - QFETCH(uint, section); - QFETCH(QTime, newTime); - - testWidget->setDisplayFormat("hh:mm:ss"); - testWidget->setMinimumTime(minimumTime); - testWidget->setMaximumTime(maximumTime); - testWidget->setWrapping(true); - testWidget->setCurrentSection((QDateTimeEdit::Section)section); - if (startWithMin) { - testWidget->setTime(minimumTime); - QTest::keyClick(testWidget, Qt::Key_Down); - } else { - testWidget->setTime(maximumTime); - QTest::keyClick(testWidget, Qt::Key_Up); - } - QTest::keyClick(testWidget, Qt::Key_Enter); - QCOMPARE(testWidget->time(), newTime); -} - -void tst_QDateTimeEdit::userKeyPress_Time_data() -{ - QTest::addColumn<bool>("ampm"); - QTest::addColumn<QTestEventList>("keys"); - QTest::addColumn<QTime>("expected_time"); - - // ***************** test the hours *************** - - // use up/down keys to change hour in 12 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 10, 0, 0 ); - QTest::newRow( "data0" ) << bool(true) << keys << expected; - } - { - QTestEventList keys; - for (uint i=0; i<5; i++) - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 6, 0, 0 ); - QTest::newRow( "data1" ) << bool(true) << keys << expected; - } - { - QTestEventList keys; - for (uint i=0; i<10; i++) - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 1, 0, 0 ); - QTest::newRow( "data2" ) << bool(true) << keys << expected; - } - { - QTestEventList keys; - for (uint i=0; i<12; i++) - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 23, 0, 0 ); - QTest::newRow( "data3" ) << bool(true) << keys << expected; - } - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 12, 0, 0 ); - QTest::newRow( "data4" ) << bool(true) << keys << expected; - } - { - QTestEventList keys; - for (uint i=0; i<2; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 13, 0, 0 ); - QTest::newRow( "data5" ) << bool(true) << keys << expected; - } - - // use up/down keys to change hour in 24 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 10, 0, 0 ); - QTest::newRow( "data6" ) << bool(false) << keys << expected; - } - { - QTestEventList keys; - for (uint i=0; i<5; i++) - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 6, 0, 0 ); - QTest::newRow( "data7" ) << bool(false) << keys << expected; - } - { - QTestEventList keys; - for (uint i=0; i<10; i++) - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 1, 0, 0 ); - QTest::newRow( "data8" ) << bool(false) << keys << expected; - } - { - QTestEventList keys; - for (uint i=0; i<12; i++) - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 23, 0, 0 ); - QTest::newRow( "data9" ) << bool(false) << keys << expected; - } - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 12, 0, 0 ); - QTest::newRow( "data10" ) << bool(false) << keys << expected; - } - { - QTestEventList keys; - for (uint i=0; i<2; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 13, 0, 0 ); - QTest::newRow( "data11" ) << bool(false) << keys << expected; - } - - // enter a one digit valid hour - { - QTestEventList keys; - keys.addKeyClick( '5' ); - QTime expected( 5, 0, 0 ); - QTest::newRow( "data12" ) << bool(true) << keys << expected; - } - - // entering a two digit valid hour - { - QTestEventList keys; - keys.addKeyClick( '1' ); - keys.addKeyClick( '1' ); - QTime expected( 11, 0, 0 ); - QTest::newRow( "data13" ) << bool(true) << keys << expected; - } - - // entering an invalid hour - { - QTestEventList keys; - keys.addKeyClick( '2' ); - // the '5' creates an invalid hour (25) so it must be ignored - keys.addKeyClick( '5' ); - QTime expected( 2, 0, 0 ); - QTest::newRow( "data14" ) << bool(true) << keys << expected; - } - - // enter a value, in hour which causes a field change - { - QTestEventList keys; - keys.addKeyClick( '0' ); - keys.addKeyClick( '2' ); - keys.addKeyClick( '1' ); - QTime expected( 2, 1, 0 ); - QTest::newRow( "data15" ) << bool(true) << keys << expected; - } - - // enter a one digit valid hour in 24 h mode - { - QTestEventList keys; - keys.addKeyClick( '5' ); - QTime expected( 5, 0, 0 ); - QTest::newRow( "data16" ) << bool(false) << keys << expected; - } - - // enter a two digit valid hour in 24 h mode - { - QTestEventList keys; - keys.addKeyClick( '1' ); - keys.addKeyClick( '1' ); - QTime expected( 11, 0, 0 ); - QTest::newRow( "data17" ) << bool(false) << keys << expected; - } - - // enter a two digit valid hour (>12) in 24 h mode - { - QTestEventList keys; - keys.addKeyClick( '1' ); - keys.addKeyClick( '5' ); - QTime expected( 15, 0, 0 ); - QTest::newRow( "data18" ) << bool(false) << keys << expected; - } - - // enter a two digit valid hour (>20) in 24 h mode - { - QTestEventList keys; - keys.addKeyClick( '2' ); - keys.addKeyClick( '1' ); - QTime expected( 21, 0, 0 ); - QTest::newRow( "data19" ) << bool(false) << keys << expected; - } - - // enter a two digit invalid hour (>23) in 24 h mode - { - QTestEventList keys; - keys.addKeyClick( '2' ); - keys.addKeyClick( '4' ); - QTime expected( 2, 0, 0 ); - QTest::newRow( "data20" ) << bool(false) << keys << expected; - } - - // ***************** test the minutes *************** - - // use up/down keys to change the minutes in 12 hour mode - { // test a valid value - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<2; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 11, 2, 0 ); - QTest::newRow( "data21" ) << bool(true) << keys << expected; - } - { // test a valid value - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<16; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 11, 16, 0 ); - QTest::newRow( "data22" ) << bool(true) << keys << expected; - } - { // test maximum value - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<59; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 11, 59, 0 ); - QTest::newRow( "data23" ) << bool(true) << keys << expected; - } - { // test 'overflow' - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<60; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 11, 0, 0 ); - QTest::newRow( "data24" ) << bool(true) << keys << expected; - } - { // test 'underflow' - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 11, 59, 0 ); - QTest::newRow( "data25" ) << bool(true) << keys << expected; - } - { // test valid value - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<2; i++) - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 11, 58, 0 ); - QTest::newRow( "data26" ) << bool(true) << keys << expected; - } - - // use up/down keys to change the minutes in 24 hour mode - - { // test a valid value - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<2; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 11, 2, 0 ); - QTest::newRow( "data27" ) << bool(false) << keys << expected; - } - { // test a valid value - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<16; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 11, 16, 0 ); - QTest::newRow( "data28" ) << bool(false) << keys << expected; - } - { // test maximum value - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<59; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 11, 59, 0 ); - QTest::newRow( "data29" ) << bool(false) << keys << expected; - } - { // test 'overflow' - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<60; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 11, 0, 0 ); - QTest::newRow( "data30" ) << bool(false) << keys << expected; - } - { // test 'underflow' - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 11, 59, 0 ); - QTest::newRow( "data31" ) << bool(false) << keys << expected; - } - { // test valid value - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<2; i++) - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 11, 58, 0 ); - QTest::newRow( "data32" ) << bool(false) << keys << expected; - } - - // enter a valid one digit minute in 12 h mode - { - QTestEventList keys; - keys.addKeyClick(Qt::Key_Tab); - keys.addKeyClick( '2' ); - QTime expected( 11, 2, 0 ); - QTest::newRow( "data33" ) << bool(true) << keys << expected; - } - - // enter a valid two digit minutes in 12 h mode - { - QTestEventList keys; - keys.addKeyClick(Qt::Key_Tab); - keys.addKeyClick( '2' ); - keys.addKeyClick( '4' ); - QTime expected( 11, 24, 0 ); - QTest::newRow( "data34" ) << bool(true) << keys << expected; - } - - // check the lower limit of the minutes in 12 h mode - { - QTestEventList keys; - keys.addKeyClick(Qt::Key_Tab); - keys.addKeyClick( '0' ); - QTime expected( 11, 0, 0 ); - QTest::newRow( "data35" ) << bool(true) << keys << expected; - } - - // check the upper limit of the minutes in 12 h mode - { - QTestEventList keys; - keys.addKeyClick(Qt::Key_Tab); - keys.addKeyClick( '5' ); - keys.addKeyClick( '9' ); - QTime expected( 11, 59, 0 ); - QTest::newRow( "data36" ) << bool(true) << keys << expected; - } - - // enter an invalid two digit minutes in 12 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( '6' ); - keys.addKeyClick( '0' ); - QTime expected( 11, 6, 0 ); - QTest::newRow( "data37" ) << bool(true) << keys << expected; - } - - // test minutes in 24 hour motestWidget-> Behaviour should be exactly the same - - // enter a valid one digit minute in 24 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( '2' ); - QTime expected( 11, 2, 0 ); - QTest::newRow( "data38" ) << bool(false) << keys << expected; - } - - // enter a valid two digit minutes in 24 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( '2' ); - keys.addKeyClick( '4' ); - QTime expected( 11, 24, 0 ); - QTest::newRow( "data39" ) << bool(false) << keys << expected; - } - - // check the lower limit of the minutes in 24 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( '0' ); - QTime expected( 11, 0, 0 ); - QTest::newRow( "data40" ) << bool(false) << keys << expected; - } - - // check the upper limit of the minutes in 24 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( '5' ); - keys.addKeyClick( '9' ); - QTime expected( 11, 59, 0 ); - QTest::newRow( "data41" ) << bool(false) << keys << expected; - } - - // enter an invalid two digit minutes in 24 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( '6' ); - keys.addKeyClick( '0' ); - QTime expected( 11, 6, 0 ); - QTest::newRow( "data42" ) << bool(false) << keys << expected; - } - - // ***************** test the seconds *************** - - // use up/down to edit the seconds... - - // use up/down keys to change the seconds in 12 hour mode - { // test a valid value - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<2; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 11, 0, 2 ); - QTest::newRow( "data43" ) << bool(true) << keys << expected; - } - { // test a valid value - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<16; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 11, 0, 16 ); - QTest::newRow( "data44" ) << bool(true) << keys << expected; - } - { // test maximum value - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<59; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 11, 0, 59 ); - QTest::newRow( "data45" ) << bool(true) << keys << expected; - } - { // test 'overflow' - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<60; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 11, 0, 0 ); - QTest::newRow( "data46" ) << bool(true) << keys << expected; - } - { // test 'underflow' - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 11, 0, 59 ); - QTest::newRow( "data47" ) << bool(true) << keys << expected; - } - { // test valid value - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<2; i++) - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 11, 0, 58 ); - QTest::newRow( "data48" ) << bool(true) << keys << expected; - } - - // use up/down keys to change the seconds in 24 hour mode - - { // test a valid value - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<2; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 11, 0, 2 ); - QTest::newRow( "data49" ) << bool(false) << keys << expected; - } - { // test a valid value - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<16; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 11, 0, 16 ); - QTest::newRow( "data50" ) << bool(false) << keys << expected; - } - { // test maximum value - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<59; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 11, 0, 59 ); - QTest::newRow( "data51" ) << bool(false) << keys << expected; - } - { // test 'overflow' - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<60; i++) - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 11, 0, 0 ); - QTest::newRow( "data52" ) << bool(false) << keys << expected; - } - { // test 'underflow' - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 11, 0, 59 ); - QTest::newRow( "data53" ) << bool(false) << keys << expected; - } - { // test valid value - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - for (uint i=0; i<2; i++) - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 11, 0, 58 ); - QTest::newRow( "data54" ) << bool(false) << keys << expected; - } - - // enter a valid one digit second in 12 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( '2' ); - QTime expected( 11, 0, 2 ); - QTest::newRow( "data55" ) << bool(true) << keys << expected; - } - - // enter a valid two digit seconds in 12 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( '2' ); - keys.addKeyClick( '4' ); - QTime expected( 11, 0, 24 ); - QTest::newRow( "data56" ) << bool(true) << keys << expected; - } - - // check the lower limit of the seconds in 12 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( '0' ); - QTime expected( 11, 0, 0 ); - QTest::newRow( "data57" ) << bool(true) << keys << expected; - } - - // check the upper limit of the seconds in 12 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( '5' ); - keys.addKeyClick( '9' ); - QTime expected( 11, 0, 59 ); - QTest::newRow( "data58" ) << bool(true) << keys << expected; - } - - // enter an invalid two digit seconds in 12 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( '6' ); - keys.addKeyClick( '0' ); - QTime expected( 11, 0, 6 ); - QTest::newRow( "data59" ) << bool(true) << keys << expected; - } - - // test seconds in 24 hour mode. Behaviour should be exactly the same - - // enter a valid one digit minute in 24 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( '2' ); - QTime expected( 11, 0, 2 ); - QTest::newRow( "data60" ) << bool(false) << keys << expected; - } - - // enter a valid two digit seconds in 24 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( '2' ); - keys.addKeyClick( '4' ); - QTime expected( 11, 0, 24 ); - QTest::newRow( "data61" ) << bool(false) << keys << expected; - } - - // check the lower limit of the seconds in 24 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( '0' ); - QTime expected( 11, 0, 0 ); - QTest::newRow( "data62" ) << bool(false) << keys << expected; - } - - // check the upper limit of the seconds in 24 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( '5' ); - keys.addKeyClick( '9' ); - QTime expected( 11, 0, 59 ); - QTest::newRow( "data63" ) << bool(false) << keys << expected; - } - - // enter an invalid two digit seconds in 24 h mode - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( '6' ); - keys.addKeyClick( '0' ); - QTime expected( 11, 0, 6 ); - QTest::newRow( "data64" ) << bool(false) << keys << expected; - } - - // Test the AMPM indicator - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Up ); - QTime expected( 23, 0, 0 ); - QTest::newRow( "data65" ) << bool(true) << keys << expected; - } - // Test the AMPM indicator - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 23, 0, 0 ); - QTest::newRow( "data66" ) << bool(true) << keys << expected; - } - // Test the AMPM indicator - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Down ); - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 11, 0, 0 ); - QTest::newRow( "data67" ) << bool(true) << keys << expected; - } - // Test the AMPM indicator - { - QTestEventList keys; - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Tab ); - keys.addKeyClick( Qt::Key_Up ); - keys.addKeyClick( Qt::Key_Down ); - QTime expected( 11, 0, 0 ); - QTest::newRow( "data68" ) << bool(true) << keys << expected; - } -} - -void tst_QDateTimeEdit::userKeyPress_Time() -{ - QFETCH(bool, ampm); - QFETCH(QTestEventList, keys); - QFETCH(QTime, expected_time); - - if (ampm) - testWidget->setDisplayFormat("hh:mm:ss ap"); - else - testWidget->setDisplayFormat("hh:mm:ss"); - - testWidget->setTime(QTime(11, 0, 0)); - testWidget->setFocus(); - - testWidget->setWrapping(true); - - QTest::keyClick(testWidget, Qt::Key_Enter); // Make sure the first section is now focused - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11")); - keys.simulate(testWidget); - QTest::keyClick(testWidget, Qt::Key_Enter); - - QCOMPARE(testWidget->time(), expected_time); -} - -void tst_QDateTimeEdit::wrappingDate_data() -{ - QTest::addColumn<bool>("startWithMin"); - QTest::addColumn<QDate>("minimumDate"); - QTest::addColumn<QDate>("maximumDate"); - QTest::addColumn<uint>("section"); - QTest::addColumn<QDate>("newDate"); - - QTest::newRow("data0") << false << QDate(1999, 1, 1) << QDate(1999, 1, 31) << (uint)QDateTimeEdit::DaySection - << QDate(1999, 1, 1); - QTest::newRow("data1") << true << QDate(1999, 1, 1) << QDate(1999, 1, 31) << (uint)QDateTimeEdit::DaySection - << QDate(1999, 1, 31); - QTest::newRow("data2") << false << QDate(1999, 1, 1) << QDate(1999, 1, 31) << (uint)QDateTimeEdit::MonthSection - << QDate(1999, 1, 31); - QTest::newRow("data3") << true << QDate(1999, 1, 1) << QDate(1999, 1, 31) << (uint)QDateTimeEdit::MonthSection - << QDate(1999, 1, 1); - QTest::newRow("data4") << false << QDate(1999, 1, 1) << QDate(1999, 1, 31) << (uint)QDateTimeEdit::YearSection - << QDate(1999, 1, 31); - QTest::newRow("data5") << true << QDate(1999, 1, 1) << QDate(1999, 1, 31) << (uint)QDateTimeEdit::YearSection - << QDate(1999, 1, 1); - QTest::newRow("data6") << false << QDate(1999, 1, 1) << QDate(2000, 1, 31) << (uint)QDateTimeEdit::DaySection - << QDate(2000, 1, 1); - QTest::newRow("data7") << true << QDate(1999, 1, 1) << QDate(2000, 1, 31) << (uint)QDateTimeEdit::DaySection - << QDate(1999, 1, 31); - QTest::newRow("data8") << false << QDate(1999, 1, 1) << QDate(2000, 1, 31) << (uint)QDateTimeEdit::MonthSection - << QDate(2000, 1, 31); - QTest::newRow("data9") << true << QDate(1999, 1, 1) << QDate(2000, 1, 31) << (uint)QDateTimeEdit::MonthSection - << QDate(1999, 12, 1); - QTest::newRow("data10") << false << QDate(1999, 1, 1) << QDate(2000, 1, 31) << (uint)QDateTimeEdit::YearSection - << QDate(1999, 1, 31); - QTest::newRow("data11") << true << QDate(1999, 1, 1) << QDate(2000, 1, 31) << (uint)QDateTimeEdit::YearSection - << QDate(2000, 1, 1); -} - - -void tst_QDateTimeEdit::wrappingDate() -{ - QFETCH(bool, startWithMin); - QFETCH(QDate, minimumDate); - QFETCH(QDate, maximumDate); - QFETCH(uint, section); - QFETCH(QDate, newDate); - - testWidget->setDisplayFormat("dd/MM/yyyy"); - testWidget->setMinimumDate(minimumDate); - testWidget->setMaximumDate(maximumDate); - testWidget->setWrapping(true); - testWidget->setCurrentSection((QDateTimeEdit::Section)section); - - if (startWithMin) { - testWidget->setDate(minimumDate); - QTest::keyClick(testWidget, Qt::Key_Down); - } else { - testWidget->setDate(maximumDate); - QTest::keyClick(testWidget, Qt::Key_Up); - } - if (testWidget->currentSection() == QDateTimeEdit::MonthSection) - QCOMPARE(testWidget->date(), newDate); -} - -void tst_QDateTimeEdit::dateSignalChecking_data() -{ - QTest::addColumn<QDate>("originalDate"); - QTest::addColumn<QDate>("newDate"); - QTest::addColumn<int>("timesEmitted"); - - QTest::newRow("data0") << QDate(2004, 06, 22) << QDate(2004, 07, 23) << 1; - QTest::newRow("data1") << QDate(2004, 06, 22) << QDate(2004, 06, 22) << 0; -} - -void tst_QDateTimeEdit::dateSignalChecking() -{ - QFETCH(QDate, originalDate); - QFETCH(QDate, newDate); - QFETCH(int, timesEmitted); - - testWidget->setDate(originalDate); - - QSignalSpy dateSpy(testWidget, SIGNAL(dateChanged(const QDate &))); - QSignalSpy dateTimeSpy(testWidget, SIGNAL(dateTimeChanged(const QDateTime &))); - QSignalSpy timeSpy(testWidget, SIGNAL(timeChanged(const QTime &))); - - testWidget->setDate(newDate); - QCOMPARE(dateSpy.count(), timesEmitted); - - if (timesEmitted > 0) { - QList<QVariant> list = dateSpy.takeFirst(); - QDate d; - d = qVariantValue<QDate>(list.at(0)); - QCOMPARE(d, newDate); - } - QCOMPARE(dateTimeSpy.count(), timesEmitted); - QCOMPARE(timeSpy.count(), 0); -} - -void tst_QDateTimeEdit::timeSignalChecking_data() -{ - QTest::addColumn<QTime>("originalTime"); - QTest::addColumn<QTime>("newTime"); - QTest::addColumn<int>("timesEmitted"); - - QTest::newRow("data0") << QTime(15, 55, 00) << QTime(15, 17, 12) << 1; - QTest::newRow("data1") << QTime(15, 55, 00) << QTime(15, 55, 00) << 0; -} - -void tst_QDateTimeEdit::timeSignalChecking() -{ - QFETCH(QTime, originalTime); - QFETCH(QTime, newTime); - QFETCH(int, timesEmitted); - - testWidget->setTime(originalTime); - - testWidget->setDisplayFormat("hh:mm:ss"); - QSignalSpy dateSpy(testWidget, SIGNAL(dateChanged(const QDate &))); - QSignalSpy dateTimeSpy(testWidget, SIGNAL(dateTimeChanged(const QDateTime &))); - QSignalSpy timeSpy(testWidget, SIGNAL(timeChanged(const QTime &))); - - testWidget->setTime(newTime); - QCOMPARE(timeSpy.count(), timesEmitted); - - if (timesEmitted > 0) { - QList<QVariant> list = timeSpy.takeFirst(); - QTime t; - t = qVariantValue<QTime>(list.at(0)); - QCOMPARE(t, newTime); - } - QCOMPARE(dateTimeSpy.count(), timesEmitted); - QCOMPARE(dateSpy.count(), 0); -} - -void tst_QDateTimeEdit::dateTimeSignalChecking_data() -{ - QTest::addColumn<QDateTime>("originalDateTime"); - QTest::addColumn<QDateTime>("newDateTime"); - QTest::addColumn<int>("timesDateEmitted"); - QTest::addColumn<int>("timesTimeEmitted"); - QTest::addColumn<int>("timesDateTimeEmitted"); - - QTest::newRow("data0") << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 0)) - << QDateTime(QDate(2004, 7, 23), QTime(15, 17, 12)) - << 1 << 1 << 1; - QTest::newRow("data1") << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 0)) - << QDateTime(QDate(2004, 6, 22), QTime(15, 17, 12)) - << 0 << 1 << 1; - QTest::newRow("data2") << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 0)) - << QDateTime(QDate(2004, 7, 23), QTime(15, 55, 0)) - << 1 << 0 << 1; - QTest::newRow("data3") << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 0)) - << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 0)) - << 0 << 0 << 0; -} - -void tst_QDateTimeEdit::dateTimeSignalChecking() -{ - QFETCH(QDateTime, originalDateTime); - QFETCH(QDateTime, newDateTime); - QFETCH(int, timesDateEmitted); - QFETCH(int, timesTimeEmitted); - QFETCH(int, timesDateTimeEmitted); - - testWidget->setDisplayFormat("dd/MM/yyyy hh:mm:ss"); - testWidget->setDateTime(originalDateTime); - - QSignalSpy dateSpy(testWidget, SIGNAL(dateChanged(const QDate &))); - QSignalSpy timeSpy(testWidget, SIGNAL(timeChanged(const QTime &))); - QSignalSpy dateTimeSpy(testWidget, SIGNAL(dateTimeChanged(const QDateTime &))); - - testWidget->setDateTime(newDateTime); - QCOMPARE(dateSpy.count(), timesDateEmitted); - if (timesDateEmitted > 0) { - QCOMPARE(timesDateEmitted, 1); - QList<QVariant> list = dateSpy.takeFirst(); - QDate d; - d = qVariantValue<QDate>(list.at(0)); - QCOMPARE(d, newDateTime.date()); - } - QCOMPARE(timeSpy.count(), timesTimeEmitted); - if (timesTimeEmitted > 0) { - QList<QVariant> list = timeSpy.takeFirst(); - QTime t; - t = qVariantValue<QTime>(list.at(0)); - QCOMPARE(t, newDateTime.time()); - } - QCOMPARE(dateTimeSpy.count(), timesDateTimeEmitted); - if (timesDateTimeEmitted > 0) { - QList<QVariant> list = dateTimeSpy.takeFirst(); - QDateTime dt; - dt = qVariantValue<QDateTime>(list.at(0)); - QCOMPARE(dt, newDateTime); - } -} - - -void tst_QDateTimeEdit::sectionText_data() -{ - QTest::addColumn<QString>("format"); - QTest::addColumn<QDateTime>("dateTime"); - QTest::addColumn<uint>("section"); - QTest::addColumn<QString>("sectionText"); - - QTest::newRow("data0") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 3, 789)) - << (uint)QDateTimeEdit::NoSection << QString(); - QTest::newRow("data1") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 3, 789)) - << (uint)QDateTimeEdit::AmPmSection << QString("pm"); - QTest::newRow("data2") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 3, 789)) - << (uint)QDateTimeEdit::MSecSection << QString("789"); - QTest::newRow("data3") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 3, 789)) - << (uint)QDateTimeEdit::SecondSection << QString("03"); - QTest::newRow("data4") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 3, 789)) - << (uint)QDateTimeEdit::MinuteSection << QString("55"); - QTest::newRow("data5") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 3, 789)) - << (uint)QDateTimeEdit::HourSection << QString("03"); - QTest::newRow("data6") << QString("dd/MM/yyyy hh:mm:ss zzz") - << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 3, 789)) - << (uint)QDateTimeEdit::HourSection << QString("15"); - QTest::newRow("data7") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 3, 789)) - << (uint)QDateTimeEdit::DaySection << QString("22"); - QTest::newRow("data8") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 3, 789)) - << (uint)QDateTimeEdit::MonthSection << QString("06"); - QTest::newRow("data9") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 3, 789)) - << (uint)QDateTimeEdit::YearSection << QString("2004"); - QTest::newRow("data10") << QString("dd/MM/yyyy hh:mm:ss zzz AP") - << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 3, 789)) - << (uint)QDateTimeEdit::AmPmSection << QString("PM"); - QTest::newRow("data11") << QString("dd/MM/yyyy hh:mm:ss ap") - << QDateTime(QDate(2004, 6, 22), QTime(15, 55, 3, 789)) - << (uint)QDateTimeEdit::MSecSection << QString(); -} - -void tst_QDateTimeEdit::sectionText() -{ - QFETCH(QString, format); - QFETCH(QDateTime, dateTime); - QFETCH(uint, section); - QFETCH(QString, sectionText); - - testWidget->setDisplayFormat(format); - testWidget->setDateTime(dateTime); - QCOMPARE(testWidget->sectionText((QDateTimeEdit::Section)section), sectionText); -// QApplication::setLayoutDirection(Qt::RightToLeft); -// testWidget->setDisplayFormat(format); -// QCOMPARE(format, testWidget->displayFormat()); -// testWidget->setDateTime(dateTime); -// QCOMPARE(testWidget->sectionText((QDateTimeEdit::Section)section), sectionText); -// QApplication::setLayoutDirection(Qt::LeftToRight); -} - -void tst_QDateTimeEdit::mousePress() -{ - testWidget->setDate(QDate(2004, 6, 23)); - testWidget->setCurrentSection(QDateTimeEdit::YearSection); - QCOMPARE(testWidget->currentSection(), QDateTimeEdit::YearSection); - - // Ask the SC_SpinBoxUp button location from style - QStyleOptionSpinBox so; - so.rect = testWidget->rect(); - QRect rectUp = testWidget->style()->subControlRect(QStyle::CC_SpinBox, &so, QStyle::SC_SpinBoxUp, testWidget); - - // Send mouseClick to center of SC_SpinBoxUp - QTest::mouseClick(testWidget, Qt::LeftButton, 0, rectUp.center()); - QCOMPARE(testWidget->date().year(), 2005); - -} - -void tst_QDateTimeEdit::stepHourAMPM_data() -{ - QTest::addColumn<QString>("format"); - QTest::addColumn<KeyList>("keys"); - QTest::addColumn<TimeList>("expected"); - QTest::addColumn<QTime>("start"); - QTest::addColumn<QTime>("min"); - QTest::addColumn<QTime>("max"); - - { - KeyList keys; - TimeList expected; - keys << Qt::Key_Up; - expected << QTime(1, 0, 0); - keys << Qt::Key_Up; - expected << QTime(2, 0, 0); - keys << Qt::Key_Up; - expected << QTime(3, 0, 0); - keys << Qt::Key_Up; - expected << QTime(4, 0, 0); - keys << Qt::Key_Up; - expected << QTime(5, 0, 0); - keys << Qt::Key_Up; - expected << QTime(6, 0, 0); - keys << Qt::Key_Up; - expected << QTime(7, 0, 0); - keys << Qt::Key_Up; - expected << QTime(8, 0, 0); - keys << Qt::Key_Up; - expected << QTime(9, 0, 0); - keys << Qt::Key_Up; - expected << QTime(10, 0, 0); - keys << Qt::Key_Up; - expected << QTime(11, 0, 0); - keys << Qt::Key_Up; - expected << QTime(12, 0, 0); - keys << Qt::Key_Up; - expected << QTime(13, 0, 0); - keys << Qt::Key_Up; - expected << QTime(14, 0, 0); - keys << Qt::Key_Up; - expected << QTime(15, 0, 0); - keys << Qt::Key_Up; - expected << QTime(16, 0, 0); - keys << Qt::Key_Up; - expected << QTime(17, 0, 0); - keys << Qt::Key_Up; - expected << QTime(18, 0, 0); - keys << Qt::Key_Up; - expected << QTime(19, 0, 0); - keys << Qt::Key_Up; - expected << QTime(20, 0, 0); - keys << Qt::Key_Up; - expected << QTime(21, 0, 0); - keys << Qt::Key_Up; - expected << QTime(22, 0, 0); - keys << Qt::Key_Up; - expected << QTime(23, 0, 0); - keys << Qt::Key_Down; - expected << QTime(22, 0, 0); - keys << Qt::Key_Down; - expected << QTime(21, 0, 0); - keys << Qt::Key_Down; - expected << QTime(20, 0, 0); - keys << Qt::Key_Down; - expected << QTime(19, 0, 0); - keys << Qt::Key_Down; - expected << QTime(18, 0, 0); - keys << Qt::Key_Down; - expected << QTime(17, 0, 0); - keys << Qt::Key_Down; - expected << QTime(16, 0, 0); - keys << Qt::Key_Down; - expected << QTime(15, 0, 0); - keys << Qt::Key_Down; - expected << QTime(14, 0, 0); - keys << Qt::Key_Down; - expected << QTime(13, 0, 0); - keys << Qt::Key_Down; - expected << QTime(12, 0, 0); - keys << Qt::Key_Down; - expected << QTime(11, 0, 0); - keys << Qt::Key_Down; - expected << QTime(10, 0, 0); - keys << Qt::Key_Down; - expected << QTime(9, 0, 0); - keys << Qt::Key_Down; - expected << QTime(8, 0, 0); - keys << Qt::Key_Down; - expected << QTime(7, 0, 0); - keys << Qt::Key_Down; - expected << QTime(6, 0, 0); - keys << Qt::Key_Down; - expected << QTime(5, 0, 0); - keys << Qt::Key_Down; - expected << QTime(4, 0, 0); - keys << Qt::Key_Down; - expected << QTime(3, 0, 0); - keys << Qt::Key_Down; - expected << QTime(2, 0, 0); - keys << Qt::Key_Down; - expected << QTime(1, 0, 0); - keys << Qt::Key_Down; - expected << QTime(0, 0, 0); - - QTest::newRow("hh 1") << QString("hh") << keys << expected << QTime(0, 0) - << QTime(0, 0) << QTime(23, 59, 59); - QTest::newRow("hh:ap 1") << QString("hh:ap") << keys << expected - << QTime(0, 0) << QTime(0, 0) - << QTime(23, 59, 59); - - QTest::newRow("HH:ap 2") << QString("HH:ap") << keys << expected - << QTime(0, 0) << QTime(0, 0) - << QTime(23, 59, 59); - - } - { - KeyList keys; - TimeList expected; - keys << Qt::Key_Down; - expected << QTime(2, 0, 0); - QTest::newRow("hh 2") << QString("hh") << keys << expected << QTime(0, 0) << QTime(2, 0, 0) << QTime(23, 59, 59); - QTest::newRow("hh:ap 2") << QString("hh:ap") << keys << expected << QTime(0, 0) << QTime(2, 0, 0) << QTime(23, 59, 59); - } - { - KeyList keys; - TimeList expected; - keys << Qt::Key_Up; - expected << QTime(23, 0, 0); - keys << Qt::Key_Up; - expected << QTime(23, 0, 0); - QTest::newRow("hh 3") << QString("hh") << keys << expected << QTime(0, 0) << QTime(22, 0, 0) - << QTime(23, 59, 59); - QTest::newRow("hh:ap 3") << QString("hh:ap") << keys << expected << QTime(0, 0) - << QTime(22, 0, 0) << QTime(23, 59, 59); - } - { - KeyList keys; - TimeList expected; - keys << Qt::Key_Up; - expected << QTime(15, 31, 0); - QTest::newRow("hh:mm:ap 3") << QString("hh:mm:ap") << keys << expected << QTime(15, 31, 0) - << QTime(9, 0, 0) << QTime(16, 0, 0); - QTest::newRow("hh:mm 3") << QString("hh:mm") << keys << expected << QTime(15, 31, 0) - << QTime(9, 0, 0) << QTime(16, 0, 0); - } -} - -void tst_QDateTimeEdit::stepHourAMPM() -{ - QFETCH(QString, format); - QFETCH(KeyList, keys); - QFETCH(TimeList, expected); - QFETCH(QTime, start); - QFETCH(QTime, min); - QFETCH(QTime, max); - - - testWidget->setDisplayFormat(format); - testWidget->setTime(start); - testWidget->setMinimumTime(min); - testWidget->setMaximumTime(max); - if (keys.size() != expected.size()) { - qWarning("%s:%d Test broken", __FILE__, __LINE__); - QCOMPARE(keys.size(), expected.size()); - } - - for (int i=0; i<keys.size(); ++i) { - QTest::keyClick(testWidget, keys.at(i)); - QCOMPARE(testWidget->time(), expected.at(i)); - } -} - - -void tst_QDateTimeEdit::displayedSections_data() -{ - QTest::addColumn<QString>("format"); - QTest::addColumn<uint>("section"); - - QTest::newRow("data0") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << (uint)(QDateTimeEdit::DaySection | QDateTimeEdit::MonthSection - | QDateTimeEdit::YearSection | QDateTimeEdit::HourSection - | QDateTimeEdit::MinuteSection | QDateTimeEdit::SecondSection - | QDateTimeEdit::MSecSection | QDateTimeEdit::AmPmSection); - QTest::newRow("data1") << QString("dd/yyyy hh:mm:ss zzz ap") - << (uint)(QDateTimeEdit::DaySection - | QDateTimeEdit::YearSection | QDateTimeEdit::HourSection - | QDateTimeEdit::MinuteSection | QDateTimeEdit::SecondSection - | QDateTimeEdit::MSecSection | QDateTimeEdit::AmPmSection); - QTest::newRow("data2") << QString("dd/MM/yyyy mm zzz ap") - << (uint)(QDateTimeEdit::DaySection | QDateTimeEdit::MonthSection - | QDateTimeEdit::YearSection - | QDateTimeEdit::MinuteSection - | QDateTimeEdit::MSecSection | QDateTimeEdit::AmPmSection); - QTest::newRow("data3") << QString("dd/MM/yyyy") - << (uint)(QDateTimeEdit::DaySection | QDateTimeEdit::MonthSection - | QDateTimeEdit::YearSection); - QTest::newRow("data4") << QString("hh:mm:ss zzz ap") - << (uint)(QDateTimeEdit::HourSection - | QDateTimeEdit::MinuteSection | QDateTimeEdit::SecondSection - | QDateTimeEdit::MSecSection | QDateTimeEdit::AmPmSection); - QTest::newRow("data5") << QString("dd ap") - << (uint)(QDateTimeEdit::DaySection | QDateTimeEdit::AmPmSection); - QTest::newRow("data6") << QString("zzz") - << (uint)QDateTimeEdit::MSecSection; -} - -void tst_QDateTimeEdit::displayedSections() -{ - QFETCH(QString, format); - QFETCH(uint, section); - - testWidget->setDisplayFormat(format); - QVERIFY((QDateTimeEdit::Section)section == testWidget->displayedSections()); -} - -void tst_QDateTimeEdit::currentSection_data() -{ - QTest::addColumn<QString>("format"); - QTest::addColumn<uint>("section"); - QTest::addColumn<uint>("currentSection"); - - // First is deliberate, this way we can make sure that it is not reset by specifying no section. - QTest::newRow("data0") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << (uint)QDateTimeEdit::NoSection << (uint)QDateTimeEdit::YearSection; - QTest::newRow("data1") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << (uint)QDateTimeEdit::AmPmSection << (uint)QDateTimeEdit::AmPmSection; - QTest::newRow("data2") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << (uint)QDateTimeEdit::MSecSection << (uint)QDateTimeEdit::MSecSection; - QTest::newRow("data3") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << (uint)QDateTimeEdit::SecondSection << (uint)QDateTimeEdit::SecondSection; - QTest::newRow("data4") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << (uint)QDateTimeEdit::MinuteSection << (uint)QDateTimeEdit::MinuteSection; - QTest::newRow("data5") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << (uint)QDateTimeEdit::HourSection << (uint)QDateTimeEdit::HourSection; - QTest::newRow("data6") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << (uint)QDateTimeEdit::DaySection << (uint)QDateTimeEdit::DaySection; - QTest::newRow("data7") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << (uint)QDateTimeEdit::MonthSection << (uint)QDateTimeEdit::MonthSection; - QTest::newRow("data8") << QString("dd/MM/yyyy hh:mm:ss zzz ap") - << (uint)QDateTimeEdit::YearSection << (uint)QDateTimeEdit::YearSection; - QTest::newRow("data9") << QString("dd/MM/yyyy hh:mm:ss zzz AP") - << (uint)QDateTimeEdit::AmPmSection << (uint)QDateTimeEdit::AmPmSection; - QTest::newRow("data10") << QString("dd/MM/yyyy hh:mm:ss ap") - << (uint)QDateTimeEdit::MSecSection << (uint)QDateTimeEdit::DaySection; -} - -void tst_QDateTimeEdit::currentSection() -{ - QFETCH(QString, format); - QFETCH(uint, section); - QFETCH(uint, currentSection); - - testWidget->setDisplayFormat(format); - if ((QDateTimeEdit::Section)section == QDateTimeEdit::NoSection) - testWidget->setCurrentSection(QDateTimeEdit::YearSection); // Ensure it's not reset (see above) - testWidget->setCurrentSection((QDateTimeEdit::Section)section); - QVERIFY((QDateTimeEdit::Section)currentSection == testWidget->currentSection()); -} - -void tst_QDateTimeEdit::readOnly() -{ - testWidget->hide(); - QDateTimeEdit dt(QDate(2000, 2, 1)); - dt.setDisplayFormat("yyyy.MM.dd"); - dt.show(); - dt.setCurrentSection(QDateTimeEdit::DaySection); - QTest::keyClick(&dt, Qt::Key_Up); - QCOMPARE(dt.date(), QDate(2000, 2, 2)); - dt.setReadOnly(true); - QTest::keyClick(&dt, Qt::Key_Up); - QCOMPARE(dt.date(), QDate(2000, 2, 2)); - dt.stepBy(1); // stepBy should still work - QCOMPARE(dt.date(), QDate(2000, 2, 3)); - dt.setReadOnly(false); - QTest::keyClick(&dt, Qt::Key_Up); - QCOMPARE(dt.date(), QDate(2000, 2, 4)); -} - -void tst_QDateTimeEdit::weirdCase() -{ - testWidget->lineEdit()->setCursorPosition(0); - testWidget->setDateRange(QDate(2005, 1, 1), QDate(2010, 12, 31)); - testWidget->setDisplayFormat("dd//MM//yyyy"); - testWidget->setDate(testWidget->minimumDate()); - QTest::keyClick(testWidget, Qt::Key_Left); - QVERIFY(!testWidget->lineEdit()->hasSelectedText()); - QCOMPARE(testWidget->lineEdit()->cursorPosition(), 0); - QTest::keyClick(testWidget, Qt::Key_Right); - QTest::keyClick(testWidget, Qt::Key_Right); - QTest::keyClick(testWidget, Qt::Key_Right); - QTest::keyClick(testWidget, Qt::Key_Right); - QTest::keyClick(testWidget, Qt::Key_Right); - QTest::keyClick(testWidget, Qt::Key_Right); - QVERIFY(!testWidget->lineEdit()->hasSelectedText()); - QCOMPARE(testWidget->lineEdit()->cursorPosition(), 8); - - QTest::keyClick(testWidget, Qt::Key_Delete); - QCOMPARE(testWidget->text(), QString("01//01//005")); - QTest::keyClick(testWidget, Qt::Key_4); - QCOMPARE(testWidget->text(), QString("01//01//005")); -} - -void tst_QDateTimeEdit::newCase() -{ - if (QDate::shortMonthName(6) != "Jun" || QDate::shortMonthName(7) != "Jul" || - QDate::longMonthName(6) != "June" || QDate::longMonthName(7) != "July") - QSKIP("This test only works in English", SkipAll); - - testWidget->setDisplayFormat("MMMM'a'MbMMMcMM"); - testWidget->setDate(QDate(2005, 6, 1)); - QCOMPARE(testWidget->text(), QString("Junea6bJunc06")); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_Home); -#endif - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->text(), QString("Julya7bJulc07")); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("July")); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_Home); -#endif - QCOMPARE(testWidget->lineEdit()->selectedText(), QString()); - QTest::keyClick(testWidget, Qt::Key_Right); - QTest::keyClick(testWidget, Qt::Key_Right); - QTest::keyClick(testWidget, Qt::Key_Right); - QTest::keyClick(testWidget, Qt::Key_Delete); - QTest::keyClick(testWidget, Qt::Key_Left); - - - QCOMPARE(testWidget->text(), QString("Jula7bJulc07")); - QTest::keyClick(testWidget, Qt::Key_Delete); - QCOMPARE(testWidget->text(), QString("Jua7bJulc07")); - QTest::keyClick(testWidget, Qt::Key_N); - QCOMPARE(testWidget->text(), QString("Juna7bJulc07")); - QTest::keyClick(testWidget, Qt::Key_E); - QCOMPARE(testWidget->text(), QString("Junea6bJunc06")); -} - -void tst_QDateTimeEdit::newCase2() -{ - testWidget->setDisplayFormat("MMMM yyyy-MM-dd MMMM"); - testWidget->setDate(QDate(2005, 8, 8)); - QTest::keyClick(testWidget, Qt::Key_Return); - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->text(), QString(" 2005-08-08 ") + QDate::longMonthName(8)); -} - -void tst_QDateTimeEdit::newCase3() -{ - if (!QDate::longMonthName(1).startsWith("Januar")) - QSKIP("This test does not work in this locale", SkipAll); - - testWidget->setDisplayFormat("dd MMMM yyyy"); - testWidget->setDate(QDate(2000, 1, 1)); - testWidget->setGeometry(QRect(QPoint(0, 0), testWidget->sizeHint())); - testWidget->setCurrentSection(QDateTimeEdit::MonthSection); - QTest::keyClick(testWidget, Qt::Key_Return); - QTest::keyClick(testWidget, Qt::Key_J); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("01 J 2000")); - QCOMPARE(testWidget->lineEdit()->cursorPosition(), 4); - QTest::keyClick(testWidget, Qt::Key_A); - QTest::keyClick(testWidget, Qt::Key_N); - QTest::keyClick(testWidget, Qt::Key_U); - QTest::keyClick(testWidget, Qt::Key_A); - QTest::keyClick(testWidget, Qt::Key_R); -} - - -void tst_QDateTimeEdit::cursorPos() -{ - if (QDate::longMonthName(1) != "January") - QSKIP("This test only works in English", SkipAll); - - testWidget->setDisplayFormat("dd MMMM yyyy"); - //testWidget->setGeometry(0, 0, 200, 200); - testWidget->setCurrentSection(QDateTimeEdit::MonthSection); - QTest::keyClick(testWidget, Qt::Key_Return); - QCOMPARE(testWidget->lineEdit()->cursorPosition(), 10); - QTest::keyClick(testWidget, Qt::Key_J); - QTest::keyClick(testWidget, Qt::Key_A); - QTest::keyClick(testWidget, Qt::Key_N); - QTest::keyClick(testWidget, Qt::Key_U); - QTest::keyClick(testWidget, Qt::Key_A); - QTest::keyClick(testWidget, Qt::Key_R); - //QCursor::setPos(20, 20); - //QEventLoop l; - //l.exec(); - QTest::keyClick(testWidget, Qt::Key_Y); - QCOMPARE(testWidget->lineEdit()->cursorPosition(), 11); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_Home); -#endif - QTest::keyClick(testWidget, Qt::Key_Return); - QTest::keyClick(testWidget, Qt::Key_3); - QTest::keyClick(testWidget, Qt::Key_1); - QCOMPARE(testWidget->lineEdit()->cursorPosition(), 3); -} - -void tst_QDateTimeEdit::newCase4() -{ - testWidget->setDisplayFormat("hh:mm"); - testWidget->setMinimumTime(QTime(3, 3, 0)); - QTest::keyClick(testWidget, Qt::Key_Return); - QTest::keyClick(testWidget, Qt::Key_0); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("0:03")); - QTest::keyClick(testWidget, Qt::Key_2); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("0:03")); - QTest::keyClick(testWidget, Qt::Key_4); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("04:03")); -} - -void tst_QDateTimeEdit::newCase5() -{ - testWidget->setDisplayFormat("yyyy-MM-dd hh:mm:ss zzz 'ms'"); - testWidget->setDateTime(QDateTime(QDate(2005, 10, 7), QTime(17, 44, 13, 100))); - testWidget->show(); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("2005-10-07 17:44:13 100 ms")); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_End); -#endif - QTest::keyClick(testWidget, Qt::Key_Backtab, Qt::ShiftModifier); - - QTest::keyClick(testWidget, Qt::Key_Return); - QTest::keyClick(testWidget, Qt::Key_1); - QTest::keyClick(testWidget, Qt::Key_2); - QTest::keyClick(testWidget, Qt::Key_4); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("2005-10-07 17:44:13 124 ms")); - - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("2005-10-07 17:44:13 12 ms")); -} - -void tst_QDateTimeEdit::newCase6() -{ - testWidget->setDisplayFormat("d-yyyy-MM-dd"); - testWidget->setDate(QDate(2005, 10, 7)); - testWidget->show(); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("7-2005-10-07")); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_Home); -#endif - QTest::keyClick(testWidget, Qt::Key_Return); - QTest::keyClick(testWidget, Qt::Key_1); - QTest::keyClick(testWidget, Qt::Key_2); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("12-2005-10-12")); -} - - -void tst_QDateTimeEdit::task98554() -{ - testWidget->setDisplayFormat("mm.ss.zzz(ms)"); - testWidget->setTime(QTime(0, 0, 9)); - testWidget->setCurrentSection(QDateTimeEdit::SecondSection); - testWidget->show(); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("00.09.000(09)")); - QCOMPARE(testWidget->time(), QTime(0, 0, 9, 0)); - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("00.10.000(010)")); - QCOMPARE(testWidget->time(), QTime(0, 0, 10, 0)); -} - -static QList<int> makeList(int val1, int val2, int val3) -{ - QList<int> ret; - ret << val1 << val2 << val3; - return ret; -} - - -void tst_QDateTimeEdit::setCurrentSection_data() -{ - QTest::addColumn<QString>("format"); - QTest::addColumn<QDateTime>("dateTime"); - QTest::addColumn<QList<int> >("setCurrentSections"); - QTest::addColumn<QList<int> >("expectedCursorPositions"); - - QTest::newRow("Day") << QString("dd/MM/yyyy hh:mm:ss.zzz d/M/yy h:m:s.z") << QDateTime(QDate(2001, 1, 1), QTime(1, 2, 3, 4)) - << makeList(QDateTimeEdit::DaySection, QDateTimeEdit::DaySection, QDateTimeEdit::DaySection) - << makeList(24, 0, 24); - QTest::newRow("Month") << QString("dd/MM/yyyy hh:mm:ss.zzz d/M/yy h:m:s.z") << QDateTime(QDate(2001, 1, 1), QTime(1, 2, 3, 4)) - << makeList(QDateTimeEdit::MonthSection, QDateTimeEdit::MonthSection, QDateTimeEdit::MonthSection) - << makeList(3, 26, 3); - QTest::newRow("Year") << QString("dd/MM/yyyy hh:mm:ss.zzz d/M/yy h:m:s.z") << QDateTime(QDate(2001, 1, 1), QTime(1, 2, 3, 4)) - << makeList(QDateTimeEdit::YearSection, QDateTimeEdit::YearSection, QDateTimeEdit::YearSection) - << makeList(6, 28, 6); - QTest::newRow("Hour") << QString("dd/MM/yyyy hh:mm:ss.zzz d/M/yy h:m:s.z") << QDateTime(QDate(2001, 1, 1), QTime(1, 2, 3, 4)) - << makeList(QDateTimeEdit::HourSection, QDateTimeEdit::HourSection, QDateTimeEdit::HourSection) - << makeList(11, 31, 11); - QTest::newRow("Minute") << QString("dd/MM/yyyy hh:mm:ss.zzz d/M/yy h:m:s.z") << QDateTime(QDate(2001, 1, 1), QTime(1, 2, 3, 4)) - << makeList(QDateTimeEdit::MinuteSection, QDateTimeEdit::MinuteSection, QDateTimeEdit::MinuteSection) - << makeList(14, 33, 14); - QTest::newRow("Second") << QString("dd/MM/yyyy hh:mm:ss.zzz d/M/yy h:m:s.z") << QDateTime(QDate(2001, 1, 1), QTime(1, 2, 3, 4)) - << makeList(QDateTimeEdit::SecondSection, QDateTimeEdit::SecondSection, QDateTimeEdit::SecondSection) - << makeList(17, 35, 17); - QTest::newRow("MSec") << QString("dd/MM/yyyy hh:mm:ss.zzz d/M/yy h:m:s.z") << QDateTime(QDate(2001, 1, 1), QTime(1, 2, 3, 4)) - << makeList(QDateTimeEdit::MSecSection, QDateTimeEdit::MSecSection, QDateTimeEdit::MSecSection) - << makeList(20, 37, 20); -} - -void tst_QDateTimeEdit::setCurrentSection() -{ - QFETCH(QString, format); - QFETCH(QDateTime, dateTime); - QFETCH(QList<int>, setCurrentSections); - QFETCH(QList<int>, expectedCursorPositions); - - QCOMPARE(setCurrentSections.size(), expectedCursorPositions.size()); - testWidget->setDisplayFormat(format); - testWidget->setDateTime(dateTime); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_Home); -#endif - - testWidget->resize(400, 100); - for (int i=0; i<setCurrentSections.size(); ++i) { - testWidget->setCurrentSection((QDateTimeEdit::Section)setCurrentSections.at(i)); - QCOMPARE(testWidget->currentSection(), (QDateTimeEdit::Section)setCurrentSections.at(i)); - QCOMPARE(testWidget->lineEdit()->cursorPosition(), expectedCursorPositions.at(i)); - } -} - - -void tst_QDateTimeEdit::setSelectedSection() -{ - testWidget->setDisplayFormat("mm.ss.zzz('ms') m"); - testWidget->setTime(QTime(0, 0, 9)); - testWidget->show(); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_Home); -#endif - QVERIFY(!testWidget->lineEdit()->hasSelectedText()); - testWidget->setSelectedSection(QDateTimeEdit::MinuteSection); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("00")); - testWidget->setCurrentSection(QDateTimeEdit::MinuteSection); - testWidget->setSelectedSection(QDateTimeEdit::MinuteSection); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("0")); - testWidget->setSelectedSection(QDateTimeEdit::SecondSection); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("09")); - testWidget->setSelectedSection(QDateTimeEdit::NoSection); - QVERIFY(!testWidget->lineEdit()->hasSelectedText()); -} - -void tst_QDateTimeEdit::calendarPopup() -{ - { - QDateEdit edit; - QVERIFY(!edit.calendarWidget()); - edit.setCalendarPopup(true); - QVERIFY(edit.calendarWidget()); - } - - { - QTimeEdit edit; - QVERIFY(!edit.calendarWidget()); - edit.setCalendarPopup(true); - QVERIFY(!edit.calendarWidget()); - } - - { - QDateEdit edit; - QVERIFY(!edit.calendarWidget()); - QCalendarWidget *cw = new QCalendarWidget; - edit.setCalendarWidget(cw); - QVERIFY(!edit.calendarWidget()); - edit.setCalendarPopup(true); - edit.setCalendarWidget(cw); - QCOMPARE(edit.calendarWidget(), cw); - edit.setDateRange(QDate(1980, 1, 5), QDate(1980, 2, 11)); - QCOMPARE(cw->minimumDate(), edit.minimumDate()); - QCOMPARE(cw->maximumDate(), edit.maximumDate()); - edit.setDate(QDate(1980, 1, 31)); - QCOMPARE(edit.date(), cw->selectedDate()); - cw->setSelectedDate(QDate(1980, 1, 30)); - QCOMPARE(edit.date(), cw->selectedDate()); - } - - testWidget->setDisplayFormat("dd/MM/yyyy"); - testWidget->setDateTime(QDateTime(QDate(2000, 1, 1), QTime(0, 0))); - testWidget->show(); - testWidget->setCalendarPopup(true); - QCOMPARE(testWidget->calendarPopup(), true); - QStyle *style = testWidget->style(); - QStyleOptionComboBox opt; - opt.initFrom(testWidget); - opt.editable = true; - opt.subControls = QStyle::SC_ComboBoxArrow; - QRect rect = style->subControlRect(QStyle::CC_ComboBox, &opt, QStyle::SC_ComboBoxArrow, testWidget); - QTest::mouseClick(testWidget, Qt::LeftButton, 0, QPoint(rect.left()+rect.width()/2, rect.top()+rect.height()/2)); - QWidget *wid = qFindChild<QWidget *>(testWidget, "qt_datetimedit_calendar"); - QVERIFY(wid != 0); - testWidget->hide(); - - QTimeEdit timeEdit; - timeEdit.setCalendarPopup(true); - timeEdit.show(); - - opt.initFrom(&timeEdit); - opt.subControls = QStyle::SC_ComboBoxArrow; - rect = style->subControlRect(QStyle::CC_ComboBox, &opt, QStyle::SC_ComboBoxArrow, &timeEdit); - QTest::mouseClick(&timeEdit, Qt::LeftButton, 0, QPoint(rect.left()+rect.width()/2, rect.top()+rect.height()/2)); - QWidget *wid2 = qFindChild<QWidget *>(&timeEdit, "qt_datetimedit_calendar"); - QVERIFY(wid2 == 0); - timeEdit.hide(); - - - QDateEdit dateEdit; - dateEdit.setCalendarPopup(true); - dateEdit.setReadOnly(true); - dateEdit.show(); - - opt.initFrom(&dateEdit); - opt.subControls = QStyle::SC_ComboBoxArrow; - rect = style->subControlRect(QStyle::CC_ComboBox, &opt, QStyle::SC_ComboBoxArrow, &dateEdit); - QTest::mouseClick(&dateEdit, Qt::LeftButton, 0, QPoint(rect.left()+rect.width()/2, rect.top()+rect.height()/2)); - QWidget *wid3 = qFindChild<QWidget *>(&dateEdit, "qt_datetimedit_calendar"); - QVERIFY(wid3 == 0); - dateEdit.hide(); - -} - -class RestoreLayoutDirectioner -{ -public: - RestoreLayoutDirectioner(Qt::LayoutDirection was) - : old(was) - {} - - ~RestoreLayoutDirectioner() - { - QApplication::setLayoutDirection(old); - } -private: - const Qt::LayoutDirection old; -}; - -void tst_QDateTimeEdit::reverseTest() -{ - const RestoreLayoutDirectioner restorer(QApplication::layoutDirection()); - QApplication::setLayoutDirection(Qt::RightToLeft); - testWidget->setDisplayFormat("dd/MM/yyyy"); - testWidget->setDate(QDate(2001, 3, 30)); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("2001/03/30")); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_End); -#endif - QCOMPARE(testWidget->currentSection(), QDateTimeEdit::DaySection); - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->date(), QDate(2001, 3, 31)); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("2001/03/31")); -} - - -void tst_QDateTimeEdit::hour12Test() -{ - testWidget->setDisplayFormat("hh a"); - testWidget->setTime(QTime(0, 0, 0)); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("12 am")); - for (int i=0; i<11; ++i) { - QTest::keyClick(testWidget, Qt::Key_Up); - } - QCOMPARE(testWidget->lineEdit()->displayText(), QString("11 am")); - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("12 pm")); - for (int i=0; i<11; ++i) { - QTest::keyClick(testWidget, Qt::Key_Up); - } - QCOMPARE(testWidget->lineEdit()->displayText(), QString("11 pm")); - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("11 pm")); - for (int i=0; i<12; ++i) { - QTest::keyClick(testWidget, Qt::Key_Down); - } - QCOMPARE(testWidget->lineEdit()->displayText(), QString("11 am")); - QTest::keyClick(testWidget, Qt::Key_1); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("1 am")); - QTest::keyClick(testWidget, Qt::Key_3); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("1 am")); -} - -void tst_QDateTimeEdit::yyTest() -{ - testWidget->setDisplayFormat("dd-MMM-yy"); - testWidget->setTime(QTime(0, 0, 0)); - testWidget->setDateRange(QDate(2005, 1, 1), QDate(2010, 12, 31)); - testWidget->setDate(testWidget->minimumDate()); - testWidget->setCurrentSection(QDateTimeEdit::YearSection); - - QString jan = QDate::shortMonthName(1); - QCOMPARE(testWidget->lineEdit()->displayText(), "01-" + jan + "-05"); - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->lineEdit()->displayText(), "01-" + jan + "-06"); - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->lineEdit()->displayText(), "01-" + jan + "-07"); - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->lineEdit()->displayText(), "01-" + jan + "-08"); - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->lineEdit()->displayText(), "01-" + jan + "-09"); - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->lineEdit()->displayText(), "01-" + jan + "-10"); - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->lineEdit()->displayText(), "01-" + jan + "-10"); - testWidget->setWrapping(true); - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->lineEdit()->displayText(), "01-" + jan + "-05"); - - testWidget->setDateRange(QDate(100, 1, 1), QDate(8000, 12, 31)); - testWidget->setDate(QDate(2000, 1, 1)); - testWidget->setCurrentSection(QDateTimeEdit::YearSection); - testWidget->setWrapping(false); - for (int i=0; i<10; ++i) { - for (int j=0; j<50; ++j) { - testWidget->stepBy(-1); - } - testWidget->stepBy(-50); - QCOMPARE(testWidget->sectionText(QDateTimeEdit::YearSection), QString("00")); - QCOMPARE(testWidget->date(), QDate(2000 - ((i + 1) * 100), 1, 1)); - } -} - -void tst_QDateTimeEdit::task108572() -{ - testWidget->setDisplayFormat("hh:mm:ss.zzz"); - testWidget->setTime(QTime(0, 1, 2, 0)); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("00:01:02.000")); - - testWidget->setCurrentSection(QDateTimeEdit::MSecSection); - QTest::keyClick(testWidget, Qt::Key_Return); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("000")); - QTest::keyClick(testWidget, Qt::Key_2); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("00:01:02.2")); - QTest::keyClick(testWidget, Qt::Key_Return); - QCOMPARE(testWidget->lineEdit()->displayText(), QString("00:01:02.200")); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("200")); - QCOMPARE(testWidget->time(), QTime(0, 1, 2, 200)); -} - -void tst_QDateTimeEdit::task149097() -{ - QSignalSpy dtSpy(testWidget, SIGNAL(dateTimeChanged(const QDateTime &))); - QSignalSpy dSpy(testWidget, SIGNAL(dateChanged(const QDate &))); - QSignalSpy tSpy(testWidget, SIGNAL(timeChanged(const QTime &))); - - testWidget->setDisplayFormat("yyyy/MM/dd hh:mm:ss"); - testWidget->setDateTime(QDateTime(QDate(2001, 02, 03), QTime(5, 1, 2))); -// QTest::keyClick(testWidget, Qt::Key_Enter); - QCOMPARE(dtSpy.count(), 1); - QCOMPARE(dSpy.count(), 1); - QCOMPARE(tSpy.count(), 1); - testWidget->setCurrentSection(QDateTimeEdit::YearSection); - testWidget->stepBy(1); - - QCOMPARE(dtSpy.count(), 2); - QCOMPARE(dSpy.count(), 2); - QCOMPARE(tSpy.count(), 1); - - testWidget->setCurrentSection(QDateTimeEdit::MinuteSection); - testWidget->stepBy(1); - - QCOMPARE(dtSpy.count(), 3); - QCOMPARE(dSpy.count(), 2); - QCOMPARE(tSpy.count(), 2); -} - -void tst_QDateTimeEdit::task148725() -{ - testWidget->setDisplayFormat("dd/MM"); - testWidget->setDate(QDate(2001, 2, 27)); - testWidget->stepBy(1); - QCOMPARE(testWidget->date(), QDate(2001, 2, 28)); - testWidget->stepBy(1); - QCOMPARE(testWidget->date(), QDate(2001, 2, 28)); - testWidget->setWrapping(true); - testWidget->stepBy(1); - QCOMPARE(testWidget->date(), QDate(2001, 2, 1)); -} - -void tst_QDateTimeEdit::task148522() -{ - QTimeEdit edit; - const QDateTime dt(QDate(2000, 12, 12), QTime(12, 13, 14, 15)); - edit.setDateTime(dt); - QCOMPARE(edit.dateTime(), dt); -} - -void tst_QDateTimeEdit::ddMMMMyyyy() -{ - testWidget->setDisplayFormat("dd.MMMM.yyyy"); - testWidget->setDate(QDate(2000, 1, 1)); - testWidget->setCurrentSection(QDateTimeEdit::YearSection); - QTest::keyClick(testWidget, Qt::Key_Enter); - QCOMPARE(testWidget->lineEdit()->selectedText(), QString("2000")); -#ifdef Q_WS_MAC - QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier); -#else - QTest::keyClick(testWidget, Qt::Key_End); -#endif - QTest::keyClick(testWidget, Qt::Key_Backspace); - QCOMPARE(testWidget->lineEdit()->text(), "01." + QDate::longMonthName(1) + ".200"); -} - -void tst_QDateTimeEdit::wheelEvent() -{ - testWidget->setDisplayFormat("dddd/MM"); - testWidget->setDate(QDate(2000, 2, 21)); - testWidget->setCurrentSection(QDateTimeEdit::DaySection); - QWheelEvent w(testWidget->lineEdit()->geometry().center(), 120, 0, 0); - qApp->sendEvent(testWidget, &w); - QCOMPARE(testWidget->date(), QDate(2000, 2, 22)); - testWidget->setCurrentSection(QDateTimeEdit::MonthSection); - qApp->sendEvent(testWidget, &w); - QCOMPARE(testWidget->date(), QDate(2000, 3, 22)); -} - -void tst_QDateTimeEdit::specialValueCornerCase() -{ - // if you set minimum to value it won't update since value won't - // be bounded to anything. If you have a specialValueText it needs - // to call updateEdit to make sure the text is changed - - QDateTimeEdit edit; - edit.setSpecialValueText("foobar"); - edit.setMinimumDate(edit.date()); - QCOMPARE(edit.minimumDate(), edit.date()); - QCOMPARE(edit.text(), QString("foobar")); -} - -void tst_QDateTimeEdit::cursorPositionOnInit() -{ - { - EditorDateEdit edit; - edit.setDisplayFormat("dd/MM"); - edit.show(); - QCOMPARE(edit.lineEdit()->cursorPosition(), 0); - } - - { - EditorDateEdit edit; - edit.setDisplayFormat("dd/MM"); - edit.setSpecialValueText("special"); - edit.setMinimumDate(edit.date()); - edit.show(); - QCOMPARE(edit.lineEdit()->cursorPosition(), 7); - // ### legacy behavior. Keep it like this rather than changing - // ### but add a test none-the-less - } -} - -void tst_QDateTimeEdit::task118867() -{ - EditorDateEdit edit; - edit.setDisplayFormat("hh:mm"); - edit.setMinimumTime(QTime(5, 30)); - edit.setMaximumTime(QTime(6, 30)); - QCOMPARE(edit.text(), QString("05:30")); - edit.lineEdit()->setCursorPosition(5); - QTest::keyClick(&edit, Qt::Key_Backspace); - QCOMPARE(edit.text(), QString("05:3")); - QTest::keyClick(&edit, Qt::Key_Backspace); - QCOMPARE(edit.text(), QString("05:")); - QTest::keyClick(&edit, Qt::Key_1); - QCOMPARE(edit.text(), QString("05:")); - QTest::keyClick(&edit, Qt::Key_2); - QCOMPARE(edit.text(), QString("05:")); - QTest::keyClick(&edit, Qt::Key_3); - QCOMPARE(edit.text(), QString("05:3")); - QTest::keyClick(&edit, Qt::Key_3); - QCOMPARE(edit.text(), QString("05:33")); -} - -void tst_QDateTimeEdit::nextPrevSection_data() -{ - QTest::addColumn<Qt::Key>("key"); - QTest::addColumn<Qt::KeyboardModifiers>("modifiers"); - QTest::addColumn<QString>("selectedText"); - - QTest::newRow("tab") << Qt::Key_Tab << (Qt::KeyboardModifiers)Qt::NoModifier << QString("56"); - QTest::newRow("backtab") << Qt::Key_Backtab << (Qt::KeyboardModifiers)Qt::NoModifier << QString("12"); - QTest::newRow("shift-tab") << Qt::Key_Tab << (Qt::KeyboardModifiers)Qt::ShiftModifier << QString("12"); - QTest::newRow("/") << Qt::Key_Slash << (Qt::KeyboardModifiers)Qt::NoModifier << QString("56"); - QTest::newRow("b") << Qt::Key_B << (Qt::KeyboardModifiers)Qt::NoModifier << QString("56"); - QTest::newRow("c") << Qt::Key_C << (Qt::KeyboardModifiers)Qt::NoModifier << QString("56"); - - // 1. mac doesn't do these, - // 2. some WinCE devices do not have modifiers -#if !defined(Q_OS_MAC) && !defined(WINCE_NO_MODIFIER_KEYS) - QTest::newRow("ctrl-right") << Qt::Key_Right << (Qt::KeyboardModifiers)Qt::ControlModifier << QString("56"); - QTest::newRow("ctrl-left") << Qt::Key_Left << (Qt::KeyboardModifiers)Qt::ControlModifier << QString("12"); -#endif -} - - -void tst_QDateTimeEdit::nextPrevSection() -{ - QFETCH(Qt::Key, key); - QFETCH(Qt::KeyboardModifiers, modifiers); - QFETCH(QString, selectedText); - - EditorDateEdit edit; - edit.setDisplayFormat("hh/mm/bc9ss"); - edit.setTime(QTime(12, 34, 56)); - edit.show(); - edit.setSelectedSection(QDateTimeEdit::MinuteSection); - QCOMPARE(edit.lineEdit()->selectedText(), QString("34")); // selftest - QTest::keyClick(&edit, key, modifiers); - QCOMPARE(edit.lineEdit()->selectedText(), selectedText); -} - -void tst_QDateTimeEdit::dateEditTimeEditFormats() -{ - QTimeEdit t; - t.setDisplayFormat("hh yyyy"); - QCOMPARE(t.displayedSections(), QDateTimeEdit::HourSection); - - QDateEdit d; - d.setDisplayFormat("hh yyyy"); - QCOMPARE(d.displayedSections(), QDateTimeEdit::YearSection); -} - - -void tst_QDateTimeEdit::timeSpec_data() -{ - QTest::addColumn<bool>("useSetProperty"); - QTest::newRow("setProperty") << true; - QTest::newRow("setTimeSpec") << false; -} - - -void tst_QDateTimeEdit::timeSpec() -{ - QFETCH(bool, useSetProperty); - - QDateTimeEdit edit; - QCOMPARE(edit.dateTime().timeSpec(), edit.timeSpec()); - QCOMPARE(edit.minimumDateTime().timeSpec(), edit.timeSpec()); - QCOMPARE(edit.maximumDateTime().timeSpec(), edit.timeSpec()); - if (useSetProperty) { - edit.setProperty("timeSpec", Qt::UTC); - } else { - edit.setTimeSpec(Qt::UTC); - } - QCOMPARE(edit.minimumDateTime().timeSpec(), edit.timeSpec()); - QCOMPARE(edit.maximumDateTime().timeSpec(), edit.timeSpec()); - QCOMPARE(edit.dateTime().timeSpec(), edit.timeSpec()); - if (useSetProperty) { - edit.setProperty("timeSpec", Qt::LocalTime); - } else { - edit.setTimeSpec(Qt::LocalTime); - } - const QDateTime dt = edit.dateTime(); - QCOMPARE(edit.timeSpec(), Qt::LocalTime); - const QDateTime utc = dt.toUTC(); - if (dt.time() != utc.time()) { - const QDateTime min(QDate(1999, 1, 1), QTime(1, 0, 0), Qt::LocalTime); - edit.setMinimumDateTime(min); - QCOMPARE(edit.minimumTime(), min.time()); - if (useSetProperty) { - edit.setProperty("timeSpec", Qt::UTC); - } else { - edit.setTimeSpec(Qt::UTC); - } - QVERIFY(edit.minimumTime() != min.time()); - QVERIFY(edit.minimumDateTime().timeSpec() != min.timeSpec()); - QCOMPARE(edit.minimumDateTime().toTime_t(), min.toTime_t()); - } else { - QSKIP("Not tested in the GMT timezone", SkipAll); - } -} - -void tst_QDateTimeEdit::timeSpecBug() -{ - testWidget->setTimeSpec(Qt::UTC); - testWidget->setDisplayFormat("hh:mm"); - testWidget->setTime(QTime(2, 2)); - const QString oldText = testWidget->text(); - const QDateTime oldDateTime = testWidget->dateTime(); - QTest::keyClick(testWidget, Qt::Key_Tab); - QCOMPARE(oldDateTime, testWidget->dateTime()); - QCOMPARE(oldText, testWidget->text()); -} - - -void tst_QDateTimeEdit::cachedDayTest() -{ - testWidget->setDisplayFormat("MM/dd"); - testWidget->setDate(QDate(2007, 1, 30)); - testWidget->setCurrentSection(QDateTimeEdit::DaySection); - //QTest::keyClick(testWidget->lineEdit(), Qt::Key_Up); // this doesn't work - //on Mac. QTestLib bug? ### - QTest::keyClick(testWidget, Qt::Key_Up); - testWidget->setCurrentSection(QDateTimeEdit::MonthSection); - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->date(), QDate(2007, 2, 28)); - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->date(), QDate(2007, 3, 31)); - QTest::keyClick(testWidget, Qt::Key_Down); - QCOMPARE(testWidget->date(), QDate(2007, 2, 28)); - QTest::keyClick(testWidget, Qt::Key_Down); - QCOMPARE(testWidget->date(), QDate(2007, 1, 31)); - - testWidget->setCurrentSection(QDateTimeEdit::DaySection); - QTest::keyClick(testWidget, Qt::Key_Down); - QCOMPARE(testWidget->date(), QDate(2007, 1, 30)); - testWidget->setCurrentSection(QDateTimeEdit::MonthSection); - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->date(), QDate(2007, 2, 28)); - testWidget->setCurrentSection(QDateTimeEdit::MonthSection); - QTest::keyClick(testWidget, Qt::Key_Up); - QCOMPARE(testWidget->date(), QDate(2007, 3, 30)); - -} - -void tst_QDateTimeEdit::monthEdgeCase() -{ - EditorDateEdit edit; - edit.setLocale(QLocale("fr_FR")); - edit.setDisplayFormat("MMM d"); - edit.setDate(QDate(2000, 1, 1)); - QCOMPARE(edit.text(), QString("janv. 1")); - edit.lineEdit()->setCursorPosition(5); - QTest::keyClick(&edit, Qt::Key_Backspace); - QCOMPARE(edit.text(), QString("janv 1")); -} - -class RestoreLocaler -{ -public: - RestoreLocaler() - : old(QLocale()) - {} - - ~RestoreLocaler() - { - QLocale::setDefault(old); - } -private: - const QLocale old; -}; - - - - -void tst_QDateTimeEdit::setLocale() -{ - RestoreLocaler r; - QLocale::setDefault(QLocale("en_US")); - { - EditorDateEdit edit; - edit.setDisplayFormat("MMMM d"); - edit.setDate(QDate(2000, 1, 1)); - QCOMPARE(edit.text(), QString("January 1")); - } - QLocale::setDefault(QLocale("no_NO")); - { - EditorDateEdit edit; - edit.setDisplayFormat("MMMM d"); - edit.setDate(QDate(2000, 1, 1)); - QCOMPARE(edit.text().toLower(), QString("januar 1")); - // I get Januar on Mac and januar on linux - } - QLocale::setDefault(QLocale("en_US")); - { - EditorDateEdit edit; - edit.setDisplayFormat("MMMM d"); - edit.setDate(QDate(2000, 1, 1)); - QCOMPARE(edit.text(), QString("January 1")); - edit.setLocale(QLocale("no_NO")); - QCOMPARE(edit.text().toLower(), QString("januar 1")); - edit.setLocale(QLocale("no_NO")); - } -} - - -void tst_QDateTimeEdit::potentialYYValueBug() -{ - EditorDateEdit edit; - edit.setDisplayFormat("dd/MM/yy"); - QCOMPARE(edit.minimumDate(), QDate(1752, 9, 14)); - edit.setDate(edit.minimumDate()); - edit.lineEdit()->setFocus(); - -#ifdef Q_WS_MAC - QTest::keyClick(&edit, Qt::Key_Right, Qt::ControlModifier); -#else - QTest::keyClick(&edit, Qt::Key_End); -#endif - QTest::keyClick(&edit, Qt::Key_Backspace); - QCOMPARE(edit.text(), QString("14/09/5")); -} - -void tst_QDateTimeEdit::textSectionAtEnd() -{ - EditorDateEdit edit; - edit.setDisplayFormat("MMMM"); - edit.setDate(QDate(2000, 1, 1)); - edit.lineEdit()->setFocus(); -#ifdef Q_WS_MAC - QTest::keyClick(&edit, Qt::Key_Right, Qt::ControlModifier); -#else - QTest::keyClick(&edit, Qt::Key_End); -#endif - QTest::keyClick(&edit, Qt::Key_Backspace); - QCOMPARE(edit.text(), QString("Januar")); -} - -void tst_QDateTimeEdit::keypadAutoAdvance_data() -{ - QTest::addColumn<Qt::KeyboardModifiers>("modifiers"); - QTest::newRow("None") << (Qt::KeyboardModifiers)Qt::NoModifier; - QTest::newRow("Keypad") << (Qt::KeyboardModifiers)Qt::KeypadModifier; - // QTBUG-7842: Using KeyPad with shift (numlock off) - QTest::newRow("Keypad+Shift") << (Qt::KeyboardModifiers)(Qt::KeypadModifier|Qt::ShiftModifier); -} - - -void tst_QDateTimeEdit::keypadAutoAdvance() -{ - QFETCH(Qt::KeyboardModifiers, modifiers); - - EditorDateEdit edit; - edit.setDate(QDate(2000, 2, 1)); - edit.setDisplayFormat("dd/MM"); -#ifdef Q_WS_MAC - QTest::keyClick(&edit, Qt::Key_Left, Qt::ControlModifier); -#else - QTest::keyClick(&edit, Qt::Key_Home); -#endif - QTest::keyClick(&edit, Qt::Key_Return); - QCOMPARE(edit.lineEdit()->selectedText(), QString("01")); - QTest::keyClick(&edit, Qt::Key_1, modifiers); - QTest::keyClick(&edit, Qt::Key_2, modifiers); - QCOMPARE(edit.lineEdit()->selectedText(), QString("02")); -} - - -void tst_QDateTimeEdit::task196924() -{ - EditorDateEdit edit; - edit.setDisplayFormat("dd/M/yyyy"); - edit.setDate(QDate(2345, 6, 17)); - QCOMPARE(edit.text(), QString("17/6/2345")); - QTest::keyClick(&edit, Qt::Key_Tab); - QCOMPARE(edit.lineEdit()->selectedText(), QString("6")); - QTest::keyClick(&edit, Qt::Key_3); - QCOMPARE(edit.lineEdit()->selectedText(), QString("2345")); - QCOMPARE(edit.text(), QString("17/3/2345")); - - edit.setDisplayFormat("dd/MM/yyyy"); - edit.setDate(QDate(2345, 6, 17)); - edit.lineEdit()->setCursorPosition(0); - QCOMPARE(edit.text(), QString("17/06/2345")); - QTest::keyClick(&edit, Qt::Key_Tab); - QCOMPARE(edit.lineEdit()->selectedText(), QString("06")); - QTest::keyClick(&edit, Qt::Key_3); - QCOMPARE(edit.lineEdit()->selectedText(), QString("2345")); - QCOMPARE(edit.text(), QString("17/03/2345")); - -} - -void tst_QDateTimeEdit::focusNextPrevChild() -{ - EditorDateEdit edit; - edit.setDisplayFormat("dd/MM/yyyy"); - - edit.show(); - edit.setFocus(); - edit.setCurrentSection(QDateTimeEdit::DaySection); - - QCOMPARE(edit.currentSection(), QDateTimeEdit::DaySection); - edit.focusNextPrevChild(true); - QCOMPARE(edit.currentSection(), QDateTimeEdit::MonthSection); -} - -void tst_QDateTimeEdit::taskQTBUG_12384_timeSpecShowTimeOnly() -{ - QDateTime time = QDateTime::fromString("20100723 04:02:40", "yyyyMMdd hh:mm:ss"); - time.setTimeSpec(Qt::UTC); - - EditorDateEdit edit; - edit.setDisplayFormat("hh:mm:ss"); - edit.setTimeSpec(Qt::UTC); - edit.setDateTime(time); - - QCOMPARE(edit.minimumTime(), QTime(0, 0, 0, 0)); - QCOMPARE(edit.maximumTime(), QTime(23, 59, 59, 999)); - QCOMPARE(edit.time(), time.time()); -} - -void tst_QDateTimeEdit::deleteCalendarWidget() -{ - { - // setup - QCalendarWidget *cw = 0; - QDateEdit edit; - QVERIFY(!edit.calendarWidget()); - edit.setCalendarPopup(true); - QVERIFY(edit.calendarWidget()); - edit.calendarWidget()->setObjectName("cw1");; - - // delete - cw = edit.calendarWidget(); - delete cw; - - // it should create a new widget - QVERIFY(edit.calendarWidget()); - QVERIFY(edit.calendarWidget()->objectName() != "cw1"); - } -} - -QTEST_MAIN(tst_QDateTimeEdit) -#include "tst_qdatetimeedit.moc" |