diff options
Diffstat (limited to 'tests/auto/widgets')
12 files changed, 192 insertions, 114 deletions
diff --git a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp index 32610fda18..8ce0742854 100644 --- a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp +++ b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp @@ -130,7 +130,9 @@ private slots: void selectFilter(); void viewMode(); void proxymodel(); + void setNameFilter_data(); void setNameFilter(); + void setEmptyNameFilter(); void focus(); void caption(); void historyBack(); @@ -1003,13 +1005,56 @@ void tst_QFiledialog::proxymodel() QCOMPARE(fd.proxyModel(), (QAbstractProxyModel*)0); } -void tst_QFiledialog::setNameFilter() +void tst_QFiledialog::setEmptyNameFilter() { QNonNativeFileDialog fd; fd.setNameFilter(QString()); fd.setNameFilters(QStringList()); } +void tst_QFiledialog::setNameFilter_data() +{ + QTest::addColumn<bool>("nameFilterDetailsVisible"); + QTest::addColumn<QStringList>("filters"); + QTest::addColumn<QString>("selectFilter"); + QTest::addColumn<QString>("expectedSelectedFilter"); + + QTest::newRow("namedetailsvisible-empty") << true << QStringList() << QString() << QString(); + QTest::newRow("namedetailsinvisible-empty") << false << QStringList() << QString() << QString(); + + const QString anyFileNoDetails = QLatin1String("Any files"); + const QString anyFile = anyFileNoDetails + QLatin1String(" (*)"); + const QString imageFilesNoDetails = QLatin1String("Image files"); + const QString imageFiles = imageFilesNoDetails + QLatin1String(" (*.png *.xpm *.jpg)"); + const QString textFileNoDetails = QLatin1String("Text files"); + const QString textFile = textFileNoDetails + QLatin1String(" (*.txt)"); + + QStringList filters; + filters << anyFile << imageFiles << textFile; + + QTest::newRow("namedetailsvisible-images") << true << filters << imageFiles << imageFiles; + QTest::newRow("namedetailsinvisible-images") << false << filters << imageFiles << imageFilesNoDetails; + + const QString invalid = "foo"; + QTest::newRow("namedetailsvisible-invalid") << true << filters << invalid << anyFile; + // Potential crash when trying to convert the invalid filter into a list and stripping it, resulting in an empty list. + QTest::newRow("namedetailsinvisible-invalid") << false << filters << invalid << anyFileNoDetails; +} + +void tst_QFiledialog::setNameFilter() +{ + QFETCH(bool, nameFilterDetailsVisible); + QFETCH(QStringList, filters); + QFETCH(QString, selectFilter); + QFETCH(QString, expectedSelectedFilter); + + QNonNativeFileDialog fd; + fd.setNameFilters(filters); + fd.setNameFilterDetailsVisible(nameFilterDetailsVisible); + fd.selectNameFilter(selectFilter); + QCOMPARE(fd.selectedNameFilter(), expectedSelectedFilter); +} + void tst_QFiledialog::focus() { QNonNativeFileDialog fd; diff --git a/tests/auto/widgets/itemviews/qcolumnview/qcolumnview.pro b/tests/auto/widgets/itemviews/qcolumnview/qcolumnview.pro index 7acbe016d5..4980b45389 100644 --- a/tests/auto/widgets/itemviews/qcolumnview/qcolumnview.pro +++ b/tests/auto/widgets/itemviews/qcolumnview/qcolumnview.pro @@ -3,6 +3,6 @@ CONFIG += parallel_test QT += widgets widgets-private QT += gui-private core-private testlib -SOURCES += tst_qcolumnview.cpp +SOURCES += tst_qcolumnview.cpp TARGET = tst_qcolumnview DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/widgets/itemviews/qdatawidgetmapper/tst_qdatawidgetmapper.cpp b/tests/auto/widgets/itemviews/qdatawidgetmapper/tst_qdatawidgetmapper.cpp index 85ee7144c9..6ef0988f31 100644 --- a/tests/auto/widgets/itemviews/qdatawidgetmapper/tst_qdatawidgetmapper.cpp +++ b/tests/auto/widgets/itemviews/qdatawidgetmapper/tst_qdatawidgetmapper.cpp @@ -362,8 +362,10 @@ void tst_QDataWidgetMapper::comboBox() mapper.addMapping(&readWriteBox, 1, "currentText"); mapper.toFirst(); + // setCurrentIndex caused the value at index 0 to be displayed QCOMPARE(readOnlyBox.currentText(), QString("read only item 0")); - QCOMPARE(readWriteBox.currentText(), QString("read write item 0")); + // setCurrentText set the value in the line edit since the combobox is editable + QCOMPARE(readWriteBox.currentText(), QString("item 0 1")); // set some new values on the boxes readOnlyBox.setCurrentIndex(1); @@ -380,7 +382,6 @@ void tst_QDataWidgetMapper::comboBox() model->setData(model->index(0, 1), QString("read write item z"), Qt::EditRole); QCOMPARE(readOnlyBox.currentIndex(), 2); - QEXPECT_FAIL("", "See task 125493 and QTBUG-428", Abort); QCOMPARE(readWriteBox.currentText(), QString("read write item z")); } diff --git a/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp b/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp index 8458ca78fb..8b8f7e8949 100644 --- a/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp +++ b/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp @@ -115,7 +115,9 @@ private slots: void scrollBarAsNeeded(); void moveItems(); void wordWrap(); +#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) && WINVER >= 0x0500 void setCurrentIndexAfterAppendRowCrash(); +#endif void emptyItemSize(); void task203585_selectAll(); void task228566_infiniteRelayout(); @@ -1510,15 +1512,14 @@ private: }; #endif +#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) && WINVER >= 0x0500 +// This test only makes sense on windows 2000 and higher. void tst_QListView::setCurrentIndexAfterAppendRowCrash() { -#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE) && WINVER >= 0x0500 SetCurrentIndexAfterAppendRowCrashDialog w; w.exec(); -#else - QSKIP("This test only makes sense on windows 2000 and higher."); -#endif } +#endif void tst_QListView::emptyItemSize() { diff --git a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp index 2bccb03845..80d77aa652 100644 --- a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp +++ b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp @@ -4065,9 +4065,9 @@ void tst_QTableView::taskQTBUG_8777_scrollToSpans() } void tst_QTableView::taskQTBUG_10169_sizeHintForRow() -{ - QtTestTableView tableView; - QStandardItemModel model(1, 3); +{ + QtTestTableView tableView; + QStandardItemModel model(1, 3); model.setData(model.index(0, 0), "Word wrapping text goes here."); tableView.setModel(&model); tableView.verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); diff --git a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp index 2c93492fe9..e141ec294d 100644 --- a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp +++ b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp @@ -130,7 +130,7 @@ void tst_QTableWidget::getSetCheck() // QCOMPARE(INT_MAX, obj1.rowCount()); obj1.setRowCount(100); QCOMPARE(100, obj1.rowCount()); - + // int QTableWidget::columnCount() // void QTableWidget::setColumnCount(int) @@ -584,7 +584,7 @@ void tst_QTableWidget::selectedItems() } if (hidden) continue; - + for (int column = 0; column<testWidget->columnCount(); ++column) { foreach (int hiddenColumn, hiddenColumns){ if(hiddenColumn == column){ @@ -594,7 +594,7 @@ void tst_QTableWidget::selectedItems() } if (hidden) continue; - + QTableWidgetItem *item = testWidget->item(row, column); if (item && testWidget->isItemSelected(item)) QVERIFY(selectedItems.contains(item)); @@ -1321,7 +1321,7 @@ void tst_QTableWidget::setItemWithSorting() QAbstractItemModel *model = w.model(); QList<QPersistentModelIndex> persistent; - + int ti = 0; for (int r = 0; r < rowCount; ++r) { for (int c = 0; c < columnCount; ++c) { @@ -1330,10 +1330,10 @@ void tst_QTableWidget::setItemWithSorting() } persistent << model->index(r, sortColumn); } - + w.sortItems(sortColumn, static_cast<Qt::SortOrder>(sortOrder)); w.setSortingEnabled(true); - + QSignalSpy dataChangedSpy(model, SIGNAL(dataChanged(QModelIndex,QModelIndex))); QSignalSpy layoutChangedSpy(model, SIGNAL(layoutChanged())); @@ -1354,7 +1354,7 @@ void tst_QTableWidget::setItemWithSorting() QCOMPARE(w.item(r, c)->text(), str); } } - + for (int k = 0; k < persistent.count(); ++k) { QCOMPARE(persistent.at(k).row(), expectedRows.at(k)); int i = (persistent.at(k).row() * columnCount) + sortColumn; diff --git a/tests/auto/widgets/kernel/qactiongroup/tst_qactiongroup.cpp b/tests/auto/widgets/kernel/qactiongroup/tst_qactiongroup.cpp index bd4e53e7ed..7d724514b9 100644 --- a/tests/auto/widgets/kernel/qactiongroup/tst_qactiongroup.cpp +++ b/tests/auto/widgets/kernel/qactiongroup/tst_qactiongroup.cpp @@ -171,14 +171,6 @@ void tst_QActionGroup::separators() mw.show(); -#ifdef QT_SOFTKEYS_ENABLED - // Softkeys add extra "Select" and "Back" actions to menu by default. - // Two first actions will be Select and Back when softkeys are enabled - int numSoftkeyActions = 2; -#else - int numSoftkeyActions = 0; -#endif - QAction *action = new QAction(&actGroup); action->setText("test one"); @@ -190,13 +182,13 @@ void tst_QActionGroup::separators() while (it.hasNext()) menu.addAction(it.next()); - QCOMPARE((int)menu.actions().size(), 2 + numSoftkeyActions); + QCOMPARE((int)menu.actions().size(), 2); it = QListIterator<QAction*>(actGroup.actions()); while (it.hasNext()) menu.removeAction(it.next()); - QCOMPARE((int)menu.actions().size(), 0 + numSoftkeyActions); + QCOMPARE((int)menu.actions().size(), 0); action = new QAction(&actGroup); action->setText("test two"); @@ -205,7 +197,7 @@ void tst_QActionGroup::separators() while (it.hasNext()) menu.addAction(it.next()); - QCOMPARE((int)menu.actions().size(), 3 + numSoftkeyActions); + QCOMPARE((int)menu.actions().size(), 3); } void tst_QActionGroup::testActionInTwoQActionGroup() diff --git a/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp b/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp index 29846d619a..d5ac0c20a8 100644 --- a/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp +++ b/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp @@ -1589,7 +1589,7 @@ class ChangeEventWidget : public QWidget static bool recurse = false; if (!recurse) { recurse = true; - QStyle *style = new QFusionStyle + QStyle *style = new QFusionStyle; style->setParent(this); setStyle(style); recurse = false; diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp index 11e9a9d82f..3b9f408e73 100644 --- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp @@ -116,11 +116,15 @@ private slots: void insertOnCurrentIndex(); void textpixmapdata_data(); void textpixmapdata(); + void currentTextChanged_data(); + void currentTextChanged(); void editTextChanged(); void setModel(); void modelDeleted(); void setMaxCount(); void setCurrentIndex(); + void setCurrentText_data(); + void setCurrentText(); void convenienceViews(); void findText_data(); void findText(); @@ -1355,6 +1359,110 @@ void tst_QComboBox::setCurrentIndex() QCOMPARE(testWidget->currentText(), QString("foo")); } +void tst_QComboBox::setCurrentText_data() +{ + QTest::addColumn<bool>("editable"); + QTest::newRow("editable") << true; + QTest::newRow("not editable") << false; +} + +void tst_QComboBox::setCurrentText() +{ + QFETCH(bool, editable); + + QCOMPARE(testWidget->count(), 0); + testWidget->addItems(QStringList() << "foo" << "bar"); + QCOMPARE(testWidget->count(), 2); + + testWidget->setEditable(editable); + testWidget->setCurrentIndex(0); + QCOMPARE(testWidget->currentIndex(), 0); + + // effect on currentText and currentIndex + // currentIndex not changed if editable + QCOMPARE(testWidget->currentText(), QString("foo")); + testWidget->setCurrentText(QString("bar")); + QCOMPARE(testWidget->currentText(), QString("bar")); + if (editable) + QCOMPARE(testWidget->currentIndex(), 0); + else + QCOMPARE(testWidget->currentIndex(), 1); + + testWidget->setCurrentText(QString("foo")); + QCOMPARE(testWidget->currentIndex(), 0); + QCOMPARE(testWidget->currentText(), QString("foo")); + + // effect of text not found in list + testWidget->setCurrentText(QString("qt")); + QCOMPARE(testWidget->currentIndex(), 0); + if (editable) + QCOMPARE(testWidget->currentText(), QString("qt")); + else + QCOMPARE(testWidget->currentText(), QString("foo")); + +#ifndef QT_NO_PROPERTIES + // verify WRITE for currentText property + testWidget->setCurrentIndex(0); + const QByteArray n("currentText"); + QCOMPARE(testWidget->property(n).toString(), QString("foo")); + testWidget->setProperty(n, QString("bar")); + QCOMPARE(testWidget->property(n).toString(), QString("bar")); +#endif +} + +void tst_QComboBox::currentTextChanged_data() +{ + QTest::addColumn<bool>("editable"); + QTest::newRow("editable") << true; + QTest::newRow("not editable") << false; +} + +void tst_QComboBox::currentTextChanged() +{ + QFETCH(bool, editable); + + QCOMPARE(testWidget->count(), 0); + testWidget->addItems(QStringList() << "foo" << "bar"); + QCOMPARE(testWidget->count(), 2); + + QSignalSpy spy(testWidget, SIGNAL(currentTextChanged(QString))); + + testWidget->setEditable(editable); + + // set text in list + testWidget->setCurrentIndex(0); + QCOMPARE(testWidget->currentIndex(), 0); + spy.clear(); + testWidget->setCurrentText(QString("bar")); + QCOMPARE(spy.count(), 1); + QCOMPARE(qvariant_cast<QString>(spy.at(0).at(0)), QString("bar")); + + // set text not in list + testWidget->setCurrentIndex(0); + QCOMPARE(testWidget->currentIndex(), 0); + spy.clear(); + testWidget->setCurrentText(QString("qt")); + if (editable) { + QCOMPARE(spy.count(), 1); + QCOMPARE(qvariant_cast<QString>(spy.at(0).at(0)), QString("qt")); + } else { + QCOMPARE(spy.count(), 0); + } + + // item changed + testWidget->setCurrentIndex(0); + QCOMPARE(testWidget->currentIndex(), 0); + spy.clear(); + testWidget->setItemText(0, QString("ape")); + QCOMPARE(spy.count(), 1); + QCOMPARE(qvariant_cast<QString>(spy.at(0).at(0)), QString("ape")); + // change it back + spy.clear(); + testWidget->setItemText(0, QString("foo")); + QCOMPARE(spy.count(), 1); + QCOMPARE(qvariant_cast<QString>(spy.at(0).at(0)), QString("foo")); +} + void tst_QComboBox::editTextChanged() { QCOMPARE(testWidget->count(), 0); diff --git a/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp b/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp index 8c8f5b5d71..74b30039f8 100644 --- a/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp +++ b/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp @@ -107,9 +107,6 @@ private slots: void testSignalOrder(); void testDefaultButton_data(); void testDefaultButton(); -#ifdef QT_SOFTKEYS_ENABLED - void testSoftKeyReparenting(); -#endif void task191642_default(); private: @@ -714,51 +711,6 @@ void tst_QDialogButtonBox::testDefaultButton_data() QTest::newRow("third accept explicit after add") << 0 << 2 << 2; } -static int softKeyCount(QWidget *widget) -{ - int softkeyCount = 0; -#ifndef QT_NO_ACTION - QList<QAction *> actions = widget->actions(); - foreach (QAction *action, actions) { - if (action->softKeyRole() != QAction::NoSoftKey) - softkeyCount++; - } -#endif - return softkeyCount; -} - -#ifdef QT_SOFTKEYS_ENABLED -void tst_QDialogButtonBox::testSoftKeyReparenting() -{ - QDialog dialog; - QDialogButtonBox *buttonBox = new QDialogButtonBox; - buttonBox->addButton(QDialogButtonBox::Ok); - buttonBox->addButton(QDialogButtonBox::Cancel); - -#ifndef QT_NO_ACTION - QCOMPARE(softKeyCount(&dialog), 0); - QCOMPARE(softKeyCount(buttonBox), 2); -#endif - - // Were the softkeys re-parented correctly? - dialog.setLayout(new QVBoxLayout); - dialog.layout()->addWidget(buttonBox); -#ifndef QT_NO_ACTION - QCOMPARE(softKeyCount(&dialog), 2); - QCOMPARE(softKeyCount(buttonBox), 0); -#endif - - // Softkeys are only added to QDialog, not QWidget - QWidget *nested = new QWidget; - nested->setLayout(new QVBoxLayout); - nested->layout()->addWidget(buttonBox); -#ifndef QT_NO_ACTION - QCOMPARE(softKeyCount(nested), 0); - QCOMPARE(softKeyCount(buttonBox), 2); -#endif -} -#endif - void tst_QDialogButtonBox::testDefaultButton() { QFETCH(int, whenToSetDefault); diff --git a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp index cf2d0de0e2..5f0a1e84b0 100644 --- a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp +++ b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp @@ -1322,26 +1322,18 @@ void tst_QMainWindow::createPopupMenu() mainwindow.addDockWidget(Qt::LeftDockWidgetArea, &dockwidget4); -#ifdef QT_SOFTKEYS_ENABLED - // Softkeys add extra "Select" and "Back" actions to menu by default. - // Two first actions will be Select and Back when softkeys are enabled - int numSoftkeyActions = 2; -#else - int numSoftkeyActions = 0; -#endif - QMenu *menu = mainwindow.createPopupMenu(); QVERIFY(menu != 0); QList<QAction *> actions = menu->actions(); - QCOMPARE(actions.size(), 7 + numSoftkeyActions); + QCOMPARE(actions.size(), 7); - QCOMPARE(actions.at(0 + numSoftkeyActions), dockwidget1.toggleViewAction()); - QCOMPARE(actions.at(1 + numSoftkeyActions), dockwidget2.toggleViewAction()); - QCOMPARE(actions.at(2 + numSoftkeyActions), dockwidget3.toggleViewAction()); - QCOMPARE(actions.at(3 + numSoftkeyActions), dockwidget4.toggleViewAction()); - QVERIFY(actions.at(4 + numSoftkeyActions)->isSeparator()); - QCOMPARE(actions.at(5 + numSoftkeyActions), toolbar1.toggleViewAction()); - QCOMPARE(actions.at(6 + numSoftkeyActions), toolbar2.toggleViewAction()); + QCOMPARE(actions.at(0), dockwidget1.toggleViewAction()); + QCOMPARE(actions.at(1), dockwidget2.toggleViewAction()); + QCOMPARE(actions.at(2), dockwidget3.toggleViewAction()); + QCOMPARE(actions.at(3), dockwidget4.toggleViewAction()); + QVERIFY(actions.at(4)->isSeparator()); + QCOMPARE(actions.at(5), toolbar1.toggleViewAction()); + QCOMPARE(actions.at(6), toolbar2.toggleViewAction()); delete menu; @@ -1352,12 +1344,12 @@ void tst_QMainWindow::createPopupMenu() menu = mainwindow.createPopupMenu(); QVERIFY(menu != 0); actions = menu->actions(); - QCOMPARE(actions.size(), 4 + numSoftkeyActions); + QCOMPARE(actions.size(), 4); - QCOMPARE(actions.at(0 + numSoftkeyActions), dockwidget2.toggleViewAction()); - QCOMPARE(actions.at(1 + numSoftkeyActions), dockwidget3.toggleViewAction()); - QVERIFY(actions.at(2 + numSoftkeyActions)->isSeparator()); - QCOMPARE(actions.at(3 + numSoftkeyActions), toolbar2.toggleViewAction()); + QCOMPARE(actions.at(0), dockwidget2.toggleViewAction()); + QCOMPARE(actions.at(1), dockwidget3.toggleViewAction()); + QVERIFY(actions.at(2)->isSeparator()); + QCOMPARE(actions.at(3), toolbar2.toggleViewAction()); delete menu; } diff --git a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp index 4a53473903..28068a808d 100644 --- a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp +++ b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp @@ -243,17 +243,9 @@ void tst_QMenu::onStatusMessageChanged(const QString &s) void tst_QMenu::addActionsAndClear() { -#ifdef QT_SOFTKEYS_ENABLED - // Softkeys add extra "Select" and "Back" actions to menu by default. - // Two first actions will be Select and Back when softkeys are enabled - int numSoftkeyActions = 2; -#else - int numSoftkeyActions = 0; -#endif - - QCOMPARE(menus[0]->actions().count(), 0 + numSoftkeyActions); + QCOMPARE(menus[0]->actions().count(), 0); createActions(); - QCOMPARE(menus[0]->actions().count(), 8 + numSoftkeyActions); + QCOMPARE(menus[0]->actions().count(), 8); menus[0]->clear(); QCOMPARE(menus[0]->actions().count(), 0); } @@ -730,11 +722,6 @@ void tst_QMenu::menuSizeHint() int maxWidth =0; QRect result; foreach (QAction *action, menu.actions()) { -#ifdef QT_SOFTKEYS_ENABLED - // Softkey actions are not widgets and have no geometry. - if (menu.actionGeometry(action).topLeft() == QPoint(0,0)) - continue; -#endif maxWidth = qMax(maxWidth, menu.actionGeometry(action).width()); result |= menu.actionGeometry(action); QCOMPARE(result.x(), left + hmargin + panelWidth); |