summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/widgets/widgets')
-rw-r--r--tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp6
-rw-r--r--tests/auto/widgets/widgets/qbuttongroup/tst_qbuttongroup.cpp20
-rw-r--r--tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp146
-rw-r--r--tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp37
-rw-r--r--tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp91
-rw-r--r--tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp55
-rw-r--r--tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp58
-rw-r--r--tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp2
-rw-r--r--tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp42
-rw-r--r--tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp42
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"