diff options
Diffstat (limited to 'tests/auto/widgets/widgets')
10 files changed, 499 insertions, 0 deletions
diff --git a/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp b/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp index ffb4526f11..93262722b9 100644 --- a/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp +++ b/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp @@ -490,6 +490,12 @@ void tst_QAbstractButton::toggled() QTest::mouseRelease( testWidget, Qt::LeftButton ); QVERIFY( click_count == 1 ); + + testWidget->setCheckable(true); + testWidget->toggle(); + testWidget->toggle(); + QCOMPARE(int(toggle_count), 2); + testWidget->setCheckable(false); } void tst_QAbstractButton::setShortcut() diff --git a/tests/auto/widgets/widgets/qbuttongroup/tst_qbuttongroup.cpp b/tests/auto/widgets/widgets/qbuttongroup/tst_qbuttongroup.cpp index c37060f5d5..f027eda6a2 100644 --- a/tests/auto/widgets/widgets/qbuttongroup/tst_qbuttongroup.cpp +++ b/tests/auto/widgets/widgets/qbuttongroup/tst_qbuttongroup.cpp @@ -359,6 +359,26 @@ void tst_QButtonGroup::testSignals() QCOMPARE(releasedSpy.count(), 1); QCOMPARE(releasedIdSpy.count(), 1); QVERIFY(releasedIdSpy.takeFirst().at(0).toInt() == 23); + + + QSignalSpy toggledSpy(&buttons, SIGNAL(buttonToggled(QAbstractButton*, bool))); + QSignalSpy toggledIdSpy(&buttons, SIGNAL(buttonToggled(int, bool))); + + pb1.setCheckable(true); + pb2.setCheckable(true); + pb1.toggle(); + QCOMPARE(toggledSpy.count(), 1); + QCOMPARE(toggledIdSpy.count(), 1); + + pb2.toggle(); + QCOMPARE(toggledSpy.count(), 3); // equals 3 since pb1 and pb2 are both toggled + QCOMPARE(toggledIdSpy.count(), 3); + + pb1.setCheckable(false); + pb2.setCheckable(false); + pb1.toggle(); + QCOMPARE(toggledSpy.count(), 3); + QCOMPARE(toggledIdSpy.count(), 3); } void tst_QButtonGroup::task106609() diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp index 82d3fae0fa..4631154230 100644 --- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp @@ -160,6 +160,7 @@ private slots: void maxVisibleItems(); void task_QTBUG_10491_currentIndexAndModelColumn(); void highlightedSignal(); + void itemData(); void task_QTBUG_31146_popupCompletion(); }; @@ -2756,6 +2757,151 @@ void tst_QComboBox::highlightedSignal() QCOMPARE(spy.size(), 1); } +void tst_QComboBox::itemData() +{ + QComboBox comboBox; + const int itemCount = 10; + + // ensure that the currentText(), the DisplayRole and the EditRole + // stay in sync when using QComboBox's default model + for (int i = 0; i < itemCount; ++i) { + QString itemText = QString("item text %1").arg(i); + comboBox.addItem(itemText); + } + + for (int i = 0; i < itemCount; ++i) { + QString itemText = QString("item text %1").arg(i); + QCOMPARE(comboBox.itemText(i), itemText); + QCOMPARE(comboBox.itemData(i, Qt::DisplayRole).toString(), itemText); + QCOMPARE(comboBox.itemData(i, Qt::EditRole).toString(), itemText); + + comboBox.setCurrentIndex(i); + QCOMPARE(comboBox.currentIndex(), i); + QCOMPARE(comboBox.currentText(), itemText); + QCOMPARE(comboBox.currentData(Qt::DisplayRole).toString(), itemText); + QCOMPARE(comboBox.currentData(Qt::EditRole).toString(), itemText); + } + + for (int i = 0; i < itemCount; ++i) { + // now change by using setItemText + QString itemText = QString("setItemText %1").arg(i); + comboBox.setItemText(i, itemText); + } + + for (int i = 0; i < itemCount; ++i) { + QString itemText = QString("setItemText %1").arg(i); + QCOMPARE(comboBox.itemText(i), itemText); + QCOMPARE(comboBox.itemData(i, Qt::DisplayRole).toString(), itemText); + QCOMPARE(comboBox.itemData(i, Qt::EditRole).toString(), itemText); + + comboBox.setCurrentIndex(i); + QCOMPARE(comboBox.currentIndex(), i); + QCOMPARE(comboBox.currentText(), itemText); + QCOMPARE(comboBox.currentData(Qt::DisplayRole).toString(), itemText); + QCOMPARE(comboBox.currentData(Qt::EditRole).toString(), itemText); + } + + for (int i = 0; i < itemCount; ++i) { + // now change by changing the DisplayRole's data + QString itemText = QString("setItemData(DisplayRole) %1").arg(i); + comboBox.setItemData(i, QVariant(itemText), Qt::DisplayRole); + } + + for (int i = 0; i < itemCount; ++i) { + QString itemText = QString("setItemData(DisplayRole) %1").arg(i); + QCOMPARE(comboBox.itemText(i), itemText); + QCOMPARE(comboBox.itemData(i, Qt::DisplayRole).toString(), itemText); + QCOMPARE(comboBox.itemData(i, Qt::EditRole).toString(), itemText); + + comboBox.setCurrentIndex(i); + QCOMPARE(comboBox.currentIndex(), i); + QCOMPARE(comboBox.currentText(), itemText); + QCOMPARE(comboBox.currentData(Qt::DisplayRole).toString(), itemText); + QCOMPARE(comboBox.currentData(Qt::EditRole).toString(), itemText); + } + + for (int i = 0; i < itemCount; ++i) { + // now change by changing the EditRole's data + QString itemText = QString("setItemData(EditRole) %1").arg(i); + comboBox.setItemData(i, QVariant(itemText), Qt::EditRole); + } + + for (int i = 0; i < itemCount; ++i) { + QString itemText = QString("setItemData(EditRole) %1").arg(i); + QCOMPARE(comboBox.itemText(i), itemText); + QCOMPARE(comboBox.itemData(i, Qt::DisplayRole).toString(), itemText); + QCOMPARE(comboBox.itemData(i, Qt::EditRole).toString(), itemText); + + comboBox.setCurrentIndex(i); + QCOMPARE(comboBox.currentIndex(), i); + QCOMPARE(comboBox.currentText(), itemText); + QCOMPARE(comboBox.currentData(Qt::DisplayRole).toString(), itemText); + QCOMPARE(comboBox.currentData(Qt::EditRole).toString(), itemText); + } + + comboBox.clear(); + + + // set additional user data in the addItem call + for (int i = 0; i < itemCount; ++i) { + QString itemText = QString("item text %1").arg(i); + QString itemDataText = QString("item data %1").arg(i); + comboBox.addItem(itemText, QVariant(itemDataText)); + } + + for (int i = 0; i < itemCount; ++i) { + QString itemText = QString("item text %1").arg(i); + QString itemDataText = QString("item data %1").arg(i); + QCOMPARE(comboBox.itemData(i, Qt::DisplayRole).toString(), itemText); + QCOMPARE(comboBox.itemData(i, Qt::EditRole).toString(), itemText); + QCOMPARE(comboBox.itemData(i).toString(), itemDataText); + + comboBox.setCurrentIndex(i); + QCOMPARE(comboBox.currentIndex(), i); + QCOMPARE(comboBox.currentData(Qt::DisplayRole).toString(), itemText); + QCOMPARE(comboBox.currentData(Qt::EditRole).toString(), itemText); + QCOMPARE(comboBox.currentData().toString(), itemDataText); + + } + + comboBox.clear(); + + + // additional roles, setItemData + // UserRole + 0 -> string + // UserRole + 1 -> double + // UserRole + 2 -> icon + QString qtlogoPath = QFINDTESTDATA("qtlogo.png"); + QIcon icon = QIcon(QPixmap(qtlogoPath)); + for (int i = 0; i < itemCount; ++i) { + QString itemText = QString("item text %1").arg(i); + QString itemDataText = QString("item data %1").arg(i); + double d = i; + comboBox.addItem(itemText); + comboBox.setItemData(i, QVariant(itemDataText), Qt::UserRole); + comboBox.setItemData(i, QVariant(d), Qt::UserRole + 1); + comboBox.setItemData(i, QVariant::fromValue(icon), Qt::UserRole + 2); + } + + for (int i = 0; i < itemCount; ++i) { + QString itemText = QString("item text %1").arg(i); + QString itemDataText = QString("item data %1").arg(i); + double d = i; + QCOMPARE(comboBox.itemData(i, Qt::DisplayRole).toString(), itemText); + QCOMPARE(comboBox.itemData(i, Qt::EditRole).toString(), itemText); + QCOMPARE(comboBox.itemData(i, Qt::UserRole).toString(), itemDataText); + QCOMPARE(comboBox.itemData(i, Qt::UserRole + 1).toDouble(), d); + QCOMPARE(comboBox.itemData(i, Qt::UserRole + 2).value<QIcon>(), icon); + + comboBox.setCurrentIndex(i); + QCOMPARE(comboBox.currentData(Qt::DisplayRole).toString(), itemText); + QCOMPARE(comboBox.currentData(Qt::EditRole).toString(), itemText); + QCOMPARE(comboBox.currentData(Qt::UserRole).toString(), itemDataText); + QCOMPARE(comboBox.currentData(Qt::UserRole + 1).toDouble(), d); + QCOMPARE(comboBox.currentData(Qt::UserRole + 2).value<QIcon>(), icon); + } +} + void tst_QComboBox::task_QTBUG_31146_popupCompletion() { QComboBox comboBox; diff --git a/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp b/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp index b0e454b643..db5b89f396 100644 --- a/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp +++ b/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp @@ -72,6 +72,8 @@ private slots: void testConstructor2_data(); void testConstructor3(); void testConstructor3_data(); + void testConstructor4(); + void testConstructor4_data(); void setOrientation_data(); void setOrientation(); void addButton1_data(); @@ -201,6 +203,41 @@ void tst_QDialogButtonBox::testConstructor3() QTEST(buttonBox.buttons().count(), "buttonCount"); } +void tst_QDialogButtonBox::testConstructor4_data() +{ + QTest::addColumn<QDialogButtonBox::StandardButtons>("buttons"); + QTest::addColumn<int>("buttonCount"); + + QTest::newRow("nothing") << (QDialogButtonBox::StandardButtons)0 << 0; + QTest::newRow("only 1") << QDialogButtonBox::StandardButtons(QDialogButtonBox::Ok) << 1; + QTest::newRow("only 1.. twice") + << (QDialogButtonBox::Ok | QDialogButtonBox::Ok) + << 1; + QTest::newRow("only 2") + << (QDialogButtonBox::Ok | QDialogButtonBox::Cancel) + << 2; + QTest::newRow("two different things") + << (QDialogButtonBox::Save | QDialogButtonBox::Close) + << 2; + QTest::newRow("three") + << (QDialogButtonBox::Ok + | QDialogButtonBox::Cancel + | QDialogButtonBox::Help) + << 3; + QTest::newRow("everything") + << (QDialogButtonBox::StandardButtons)UINT_MAX + << 18; +} + +void tst_QDialogButtonBox::testConstructor4() +{ + QFETCH(QDialogButtonBox::StandardButtons, buttons); + + QDialogButtonBox buttonBox(buttons); + QCOMPARE(buttonBox.orientation(), Qt::Horizontal); + QTEST(buttonBox.buttons().count(), "buttonCount"); +} + void tst_QDialogButtonBox::setOrientation_data() { QTest::addColumn<int>("orientation"); diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp index d428e2705d..3000aad9ce 100644 --- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp +++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp @@ -46,6 +46,9 @@ #include "qstringlist.h" #include "qstyle.h" #include "qvalidator.h" +#include "qwidgetaction.h" +#include "qimage.h" +#include "qicon.h" #include "qcompleter.h" #include "qstandarditemmodel.h" #include <qpa/qplatformtheme.h> @@ -61,8 +64,12 @@ #include <private/qlineedit_p.h> #include <private/qwidgetlinecontrol_p.h> #include <qmenu.h> +#include <qlabel.h> #include <qlayout.h> #include <qspinbox.h> +#include <qlistview.h> +#include <qstringlistmodel.h> +#include <qsortfilterproxymodel.h> #include <qdebug.h> #include "qcommonstyle.h" @@ -290,6 +297,9 @@ private slots: void undoRedoAndEchoModes_data(); void undoRedoAndEchoModes(); + void clearButton(); + void sideWidgets(); + protected slots: void editingFinished(); @@ -866,12 +876,18 @@ public: void tst_QLineEdit::hasAcceptableInputValidator() { + QSignalSpy spyChanged(testWidget, SIGNAL(textChanged(QString))); + QSignalSpy spyEdited(testWidget, SIGNAL(textEdited(QString))); + QFocusEvent lostFocus(QEvent::FocusOut); ValidatorWithFixup val; testWidget->setValidator(&val); testWidget->setText("foobar"); qApp->sendEvent(testWidget, &lostFocus); QVERIFY(testWidget->hasAcceptableInput()); + + QCOMPARE(spyChanged.count(), 2); + QCOMPARE(spyEdited.count(), 0); } @@ -4042,5 +4058,80 @@ void tst_QLineEdit::undoRedoAndEchoModes() QCOMPARE(testWidget->text(), expected.at(2)); } +void tst_QLineEdit::clearButton() +{ + // Construct a listview with a stringlist model and filter model. + QWidget testWidget; + QVBoxLayout *l = new QVBoxLayout(&testWidget); + QLineEdit *filterLineEdit = new QLineEdit(&testWidget); + l->addWidget(filterLineEdit); + QListView *listView = new QListView(&testWidget); + QStringListModel *model = new QStringListModel(QStringList() << QStringLiteral("aa") << QStringLiteral("ab") << QStringLiteral("cc"), listView); + QSortFilterProxyModel *filterModel = new QSortFilterProxyModel(listView); + filterModel->setSourceModel(model); + connect(filterLineEdit, SIGNAL(textChanged(QString)), filterModel, SLOT(setFilterFixedString(QString))); + listView->setModel(filterModel); + l->addWidget(listView); + testWidget.move(300, 300); + testWidget.show(); + qApp->setActiveWindow(&testWidget); + QVERIFY(QTest::qWaitForWindowActive(&testWidget)); + // Flip the clear button on,off, trying to detect crashes. + filterLineEdit->setClearButtonEnabled(true); + QVERIFY(filterLineEdit->isClearButtonEnabled()); + filterLineEdit->setClearButtonEnabled(true); + QVERIFY(filterLineEdit->isClearButtonEnabled()); + filterLineEdit->setClearButtonEnabled(false); + QVERIFY(!filterLineEdit->isClearButtonEnabled()); + filterLineEdit->setClearButtonEnabled(false); + QVERIFY(!filterLineEdit->isClearButtonEnabled()); + filterLineEdit->setClearButtonEnabled(true); + QVERIFY(filterLineEdit->isClearButtonEnabled()); + // Emulate filtering + QToolButton *clearButton = filterLineEdit->findChild<QToolButton *>(); + QVERIFY(clearButton); + QCOMPARE(filterModel->rowCount(), 3); + QTest::keyClick(filterLineEdit, 'a'); + QTRY_COMPARE(filterModel->rowCount(), 2); // matches 'aa', 'ab' + QTest::keyClick(filterLineEdit, 'b'); + QTRY_COMPARE(filterModel->rowCount(), 1); // matches 'ab' + QTest::mouseClick(clearButton, Qt::LeftButton, 0, QRect(QPoint(0, 0), clearButton->size()).center()); + QTRY_COMPARE(filterModel->rowCount(), 3); +} + +void tst_QLineEdit::sideWidgets() +{ + QWidget testWidget; + QVBoxLayout *l = new QVBoxLayout(&testWidget); + QLineEdit *lineEdit = new QLineEdit(&testWidget); + l->addWidget(lineEdit); + l->addSpacerItem(new QSpacerItem(0, 50, QSizePolicy::Ignored, QSizePolicy::Fixed)); + QImage image(QSize(20, 20), QImage::Format_ARGB32); + image.fill(Qt::yellow); + QAction *iconAction = new QAction(QIcon(QPixmap::fromImage(image)), QString(), lineEdit); + QWidgetAction *label1Action = new QWidgetAction(lineEdit); + label1Action->setDefaultWidget(new QLabel(QStringLiteral("l1"))); + QWidgetAction *label2Action = new QWidgetAction(lineEdit); + label2Action->setDefaultWidget(new QLabel(QStringLiteral("l2"))); + QWidgetAction *label3Action = new QWidgetAction(lineEdit); + label3Action->setDefaultWidget(new QLabel(QStringLiteral("l3"))); + lineEdit->addAction(iconAction, QLineEdit::LeadingPosition); + lineEdit->addAction(label2Action, QLineEdit::LeadingPosition); + lineEdit->addAction(label1Action, QLineEdit::TrailingPosition); + lineEdit->addAction(label3Action, QLineEdit::TrailingPosition); + testWidget.move(300, 300); + testWidget.show(); + QVERIFY(QTest::qWaitForWindowExposed(&testWidget)); + // Arbitrarily add/remove actions, trying to detect crashes. Add QTRY_VERIFY(false) to view the result. + delete label3Action; + lineEdit->removeAction(label2Action); + lineEdit->removeAction(iconAction); + lineEdit->removeAction(label1Action); + lineEdit->removeAction(iconAction); + lineEdit->removeAction(label1Action); + lineEdit->addAction(iconAction); + lineEdit->addAction(iconAction); +} + QTEST_MAIN(tst_QLineEdit) #include "tst_qlineedit.moc" diff --git a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp index b42bfcac81..e5a9b570bb 100644 --- a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp +++ b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp @@ -118,6 +118,7 @@ private slots: void toolButtonStyle(); void menuBar(); void centralWidget(); + void takeCentralWidget(); void corner(); void addToolBarBreak(); void insertToolBarBreak(); @@ -189,6 +190,14 @@ void tst_QMainWindow::getSetCheck() obj1.setCentralWidget((QWidget *)0); QCOMPARE((QWidget *)0, obj1.centralWidget()); // delete var3; // No delete, since QMainWindow takes ownership + + QWidget *var4 = new QWidget; + QPointer<QWidget> oldcentralwidget(var4); + obj1.setCentralWidget(var4); + obj1.setCentralWidget(new QWidget); + QCoreApplication::sendPostedEvents(var4, QEvent::DeferredDelete); + QVERIFY(oldcentralwidget.isNull()); + QVERIFY(obj1.centralWidget()->parent()); } tst_QMainWindow::tst_QMainWindow() @@ -806,6 +815,52 @@ void tst_QMainWindow::centralWidget() QVERIFY(w1 == 0); QVERIFY(w2 == 0); } + +} + +void tst_QMainWindow::takeCentralWidget() { + // test if takeCentralWidget works + QMainWindow mw; + + QPointer<QWidget> w1 = new QWidget; + + QVERIFY(mw.centralWidget() == 0); + + mw.setCentralWidget(w1); + + QWidget *oldCentralWidget = mw.takeCentralWidget(); + QVERIFY(oldCentralWidget == w1.data()); + + // ensure that takeCentralWidget doesn't end up calling deleteLater + // on the central widget + QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete); + QVERIFY(mw.centralWidget() == 0); + QVERIFY(!w1.isNull()); + QVERIFY(w1->parent() == 0); + + mw.setCentralWidget(w1); + // ensure that the deleteLater called by setCentralWidget + // gets executed + QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete); + QVERIFY(mw.centralWidget() == w1.data()); + + QPointer<QWidget> w2 = new QWidget; + + mw.setCentralWidget(w2); + // ensure w2 gets deleted + QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete); + QVERIFY(w1.isNull()); + + QVERIFY(mw.centralWidget() == w2.data()); + + QWidget *hopefullyW2 = mw.takeCentralWidget(); + QVERIFY(mw.centralWidget() == 0); + // ensure that takeCentralWidget doesn't end up calling deleteLater + // on the central widget + QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete); + + QVERIFY(!w2.isNull()); + QCOMPARE(w2.data(), hopefullyW2); } void tst_QMainWindow::corner() diff --git a/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp b/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp index a64b34c56a..004fdda5ef 100644 --- a/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp +++ b/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp @@ -98,6 +98,9 @@ private slots: void setValue_data(); void setValue(); + void setDisplayIntegerBase_data(); + void setDisplayIntegerBase(); + void setPrefixSuffix_data(); void setPrefixSuffix(); @@ -274,6 +277,61 @@ void tst_QSpinBox::setValue() QCOMPARE(spin.value(), expected); } +void tst_QSpinBox::setDisplayIntegerBase_data() +{ + QTest::addColumn<int>("value"); + QTest::addColumn<int>("base"); + QTest::addColumn<QString>("string"); + + QTest::newRow("base 10") << 42 << 10 << "42"; + QTest::newRow("base 2") << 42 << 2 << "101010"; + QTest::newRow("base 8") << 42 << 8 << "52"; + QTest::newRow("base 16") << 42 << 16 << "2a"; + QTest::newRow("base 0") << 42 << 0 << "42"; + QTest::newRow("base -4") << 42 << -4 << "42"; + QTest::newRow("base 40") << 42 << 40 << "42"; + + QTest::newRow("negative base 10") << -42 << 10 << "-42"; + QTest::newRow("negative base 2") << -42 << 2 << "-101010"; + QTest::newRow("negative base 8") << -42 << 8 << "-52"; + QTest::newRow("negative base 16") << -42 << 16 << "-2a"; + QTest::newRow("negative base 0") << -42 << 0 << "-42"; + QTest::newRow("negative base -4") << -42 << -4 << "-42"; + QTest::newRow("negative base 40") << -42 << 40 << "-42"; + + QTest::newRow("0 base 10") << 0 << 10 << "0"; + QTest::newRow("0 base 2") << 0 << 2 << "0"; + QTest::newRow("0 base 8") << 0 << 8 << "0"; + QTest::newRow("0 base 16") << 0 << 16 << "0"; + QTest::newRow("0 base 0") << 0 << 0 << "0"; + QTest::newRow("0 base -4") << 0 << -4 << "0"; + QTest::newRow("0 base 40") << 0 << 40 << "0"; +} + +void tst_QSpinBox::setDisplayIntegerBase() +{ + QFETCH(int, value); + QFETCH(int, base); + QFETCH(QString, string); + + SpinBox spin; + spin.setRange(INT_MIN, INT_MAX); + + spin.setValue(value); + QCOMPARE(spin.lineEdit()->text(), QString::number(value)); + + spin.setDisplayIntegerBase(base); + QCOMPARE(spin.lineEdit()->text(), string); + + spin.setValue(0); + QCOMPARE(spin.value(), 0); + QCOMPARE(spin.lineEdit()->text(), QString::number(0, base)); + + spin.lineEdit()->clear(); + QTest::keyClicks(spin.lineEdit(), string); + QCOMPARE(spin.value(), value); +} + void tst_QSpinBox::setPrefixSuffix_data() { QTest::addColumn<QString>("prefix"); diff --git a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp index 340eefbf17..8de3291207 100644 --- a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp +++ b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp @@ -109,6 +109,8 @@ void tst_QSplitter::getSetCheck() QSplitter obj1; // bool QSplitter::opaqueResize() // void QSplitter::setOpaqueResize(bool) + bool styleHint = obj1.style()->styleHint(QStyle::SH_Splitter_OpaqueResize); + QCOMPARE(styleHint, obj1.opaqueResize()); obj1.setOpaqueResize(false); QCOMPARE(false, obj1.opaqueResize()); obj1.setOpaqueResize(true); diff --git a/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp b/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp index a188e3bfe1..0dac7d85e4 100644 --- a/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp +++ b/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp @@ -97,6 +97,8 @@ private slots: void changeTitleWhileDoubleClickingTab(); void taskQTBUG_10052_widgetLayoutWhenMoving(); + + void tabBarClicked(); }; // Testing get/set functions @@ -652,5 +654,45 @@ void tst_QTabBar::taskQTBUG_10052_widgetLayoutWhenMoving() QVERIFY(w2.moved); } +void tst_QTabBar::tabBarClicked() +{ + QTabBar tabBar; + tabBar.addTab("0"); + QSignalSpy clickSpy(&tabBar, SIGNAL(tabBarClicked(int))); + QSignalSpy doubleClickSpy(&tabBar, SIGNAL(tabBarDoubleClicked(int))); + + QCOMPARE(clickSpy.count(), 0); + QCOMPARE(doubleClickSpy.count(), 0); + + Qt::MouseButton button = Qt::LeftButton; + while (button <= Qt::MaxMouseButton) { + const QPoint tabPos = tabBar.tabRect(0).center(); + + QTest::mouseClick(&tabBar, button, 0, tabPos); + QCOMPARE(clickSpy.count(), 1); + QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), 0); + QCOMPARE(doubleClickSpy.count(), 0); + + QTest::mouseDClick(&tabBar, button, 0, tabPos); + QCOMPARE(clickSpy.count(), 0); + QCOMPARE(doubleClickSpy.count(), 1); + QCOMPARE(doubleClickSpy.takeFirst().takeFirst().toInt(), 0); + + const QPoint barPos(tabBar.tabRect(0).right() + 5, tabBar.tabRect(0).center().y()); + + QTest::mouseClick(&tabBar, button, 0, barPos); + QCOMPARE(clickSpy.count(), 1); + QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), -1); + QCOMPARE(doubleClickSpy.count(), 0); + + QTest::mouseDClick(&tabBar, button, 0, barPos); + QCOMPARE(clickSpy.count(), 0); + QCOMPARE(doubleClickSpy.count(), 1); + QCOMPARE(doubleClickSpy.takeFirst().takeFirst().toInt(), -1); + + button = Qt::MouseButton(button << 1); + } +} + QTEST_MAIN(tst_QTabBar) #include "tst_qtabbar.moc" diff --git a/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp b/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp index 5dd9ee9b0f..fa518e6afd 100644 --- a/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp +++ b/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp @@ -42,6 +42,7 @@ #include <QtTest/QtTest> #include <qtabwidget.h> +#include <qtabbar.h> #include <qdebug.h> #include <qapplication.h> #include <qlabel.h> @@ -110,6 +111,7 @@ class tst_QTabWidget:public QObject { void minimumSizeHint(); void heightForWidth_data(); void heightForWidth(); + void tabBarClicked(); private: int addPage(); @@ -666,6 +668,46 @@ void tst_QTabWidget::heightForWidth() delete window; } +void tst_QTabWidget::tabBarClicked() +{ + QTabWidget tabWidget; + tabWidget.addTab(new QWidget(&tabWidget), "0"); + QSignalSpy clickSpy(&tabWidget, SIGNAL(tabBarClicked(int))); + QSignalSpy doubleClickSpy(&tabWidget, SIGNAL(tabBarDoubleClicked(int))); + + QCOMPARE(clickSpy.count(), 0); + QCOMPARE(doubleClickSpy.count(), 0); + + QTabBar &tabBar = *tabWidget.tabBar(); + Qt::MouseButton button = Qt::LeftButton; + while (button <= Qt::MaxMouseButton) { + const QPoint tabPos = tabBar.tabRect(0).center(); + + QTest::mouseClick(&tabBar, button, 0, tabPos); + QCOMPARE(clickSpy.count(), 1); + QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), 0); + QCOMPARE(doubleClickSpy.count(), 0); + + QTest::mouseDClick(&tabBar, button, 0, tabPos); + QCOMPARE(clickSpy.count(), 0); + QCOMPARE(doubleClickSpy.count(), 1); + QCOMPARE(doubleClickSpy.takeFirst().takeFirst().toInt(), 0); + + const QPoint barPos(tabBar.tabRect(0).right() + 5, tabBar.tabRect(0).center().y()); + + QTest::mouseClick(&tabBar, button, 0, barPos); + QCOMPARE(clickSpy.count(), 1); + QCOMPARE(clickSpy.takeFirst().takeFirst().toInt(), -1); + QCOMPARE(doubleClickSpy.count(), 0); + + QTest::mouseDClick(&tabBar, button, 0, barPos); + QCOMPARE(clickSpy.count(), 0); + QCOMPARE(doubleClickSpy.count(), 1); + QCOMPARE(doubleClickSpy.takeFirst().takeFirst().toInt(), -1); + + button = Qt::MouseButton(button << 1); + } +} QTEST_MAIN(tst_QTabWidget) #include "tst_qtabwidget.moc" |