summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorGunnar Sletta <gunnar@trolltech.com>2009-11-13 11:53:27 +0100
committerGunnar Sletta <gunnar@trolltech.com>2009-11-13 11:53:27 +0100
commitbecf7dc2b4b7c2609350eb3236f854c1a4a344f5 (patch)
tree9cdc7101f704a7c6b6544c3aa74f79e5f2fdd1dc /tests
parent3794e55c2c8427dd8bd4f86af5e894cc80267881 (diff)
parent60d2ab05c350f866f942a35f341f455015fdb800 (diff)
Merge branch '4.6' of git@scm.dev.nokia.troll.no:qt/oslo-staging-2 into 4.6
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp63
-rw-r--r--tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp97
-rw-r--r--tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp70
-rw-r--r--tests/auto/qcoreapplication/tst_qcoreapplication.cpp36
-rw-r--r--tests/auto/qdockwidget/tst_qdockwidget.cpp42
-rw-r--r--tests/auto/qfont/tst_qfont.cpp7
-rw-r--r--tests/auto/qfontcombobox/tst_qfontcombobox.cpp6
-rw-r--r--tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp16
-rw-r--r--tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp58
-rw-r--r--tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp6
-rw-r--r--tests/auto/qgraphicsview/tst_qgraphicsview.cpp72
-rw-r--r--tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp27
-rw-r--r--tests/auto/qgridlayout/tst_qgridlayout.cpp36
-rw-r--r--tests/auto/qkeysequence/tst_qkeysequence.cpp45
-rw-r--r--tests/auto/qlabel/tst_qlabel.cpp51
15 files changed, 505 insertions, 127 deletions
diff --git a/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp b/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp
index bdc31af1c2..413419d2a1 100644
--- a/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp
+++ b/tests/auto/qabstractitemmodel/tst_qabstractitemmodel.cpp
@@ -865,15 +865,22 @@ void tst_QAbstractItemModel::testMoveSameParentDown_data()
QTest::addColumn<int>("startRow");
QTest::addColumn<int>("endRow");
QTest::addColumn<int>("destRow");
+ // We can't put the actual parent index for the move in here because m_model is not defined until init() is run.
+ QTest::addColumn<bool>("topLevel");
// Move from the start to the middle
- QTest::newRow("move01") << 0 << 2 << 8;
+ QTest::newRow("move01") << 0 << 2 << 8 << true;
// Move from the start to the end
- QTest::newRow("move02") << 0 << 2 << 10;
+ QTest::newRow("move02") << 0 << 2 << 10 << true;
// Move from the middle to the middle
- QTest::newRow("move03") << 3 << 5 << 8;
+ QTest::newRow("move03") << 3 << 5 << 8 << true;
// Move from the middle to the end
- QTest::newRow("move04") << 3 << 5 << 10;
+ QTest::newRow("move04") << 3 << 5 << 10 << true;
+
+ QTest::newRow("move05") << 0 << 2 << 8 << false;
+ QTest::newRow("move06") << 0 << 2 << 10 << false;
+ QTest::newRow("move07") << 3 << 5 << 8 << false;
+ QTest::newRow("move08") << 3 << 5 << 10 << false;
}
void tst_QAbstractItemModel::testMoveSameParentDown()
@@ -881,6 +888,9 @@ void tst_QAbstractItemModel::testMoveSameParentDown()
QFETCH( int, startRow);
QFETCH( int, endRow);
QFETCH( int, destRow);
+ QFETCH( bool, topLevel);
+
+ QModelIndex moveParent = topLevel ? QModelIndex() : m_model->index(5, 0);
QList<QPersistentModelIndex> persistentList;
QModelIndexList indexList;
@@ -913,33 +923,37 @@ void tst_QAbstractItemModel::testMoveSameParentDown()
ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
moveCommand->setNumCols(4);
+ if (!topLevel)
+ moveCommand->setAncestorRowNumbers(QList<int>() << 5);
moveCommand->setStartRow(startRow);
moveCommand->setEndRow(endRow);
moveCommand->setDestRow(destRow);
+ if (!topLevel)
+ moveCommand->setDestAncestors(QList<int>() << 5);
moveCommand->doCommand();
QVariantList beforeSignal = beforeSpy.takeAt(0);
QVariantList afterSignal = afterSpy.takeAt(0);
QCOMPARE(beforeSignal.size(), 5);
- QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), QModelIndex());
+ QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), moveParent);
QCOMPARE(beforeSignal.at(1).toInt(), startRow);
QCOMPARE(beforeSignal.at(2).toInt(), endRow);
- QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), QModelIndex());
+ QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), moveParent);
QCOMPARE(beforeSignal.at(4).toInt(), destRow);
QCOMPARE(afterSignal.size(), 5);
- QCOMPARE(afterSignal.at(0).value<QModelIndex>(), QModelIndex());
+ QCOMPARE(afterSignal.at(0).value<QModelIndex>(), moveParent);
QCOMPARE(afterSignal.at(1).toInt(), startRow);
QCOMPARE(afterSignal.at(2).toInt(), endRow);
- QCOMPARE(afterSignal.at(3).value<QModelIndex>(), QModelIndex());
+ QCOMPARE(afterSignal.at(3).value<QModelIndex>(), moveParent);
QCOMPARE(afterSignal.at(4).toInt(), destRow);
for (int i = 0; i < indexList.size(); i++)
{
QModelIndex idx = indexList.at(i);
QModelIndex persistentIndex = persistentList.at(i);
- if (idx.parent() == QModelIndex())
+ if (idx.parent() == moveParent)
{
int row = idx.row();
if ( row >= startRow)
@@ -976,15 +990,21 @@ void tst_QAbstractItemModel::testMoveSameParentUp_data()
QTest::addColumn<int>("startRow");
QTest::addColumn<int>("endRow");
QTest::addColumn<int>("destRow");
+ QTest::addColumn<bool>("topLevel");
// Move from the middle to the start
- QTest::newRow("move01") << 5 << 7 << 0;
+ QTest::newRow("move01") << 5 << 7 << 0 << true;
// Move from the end to the start
- QTest::newRow("move02") << 8 << 9 << 0;
+ QTest::newRow("move02") << 8 << 9 << 0 << true;
// Move from the middle to the middle
- QTest::newRow("move03") << 5 << 7 << 2;
+ QTest::newRow("move03") << 5 << 7 << 2 << true;
// Move from the end to the middle
- QTest::newRow("move04") << 8 << 9 << 5;
+ QTest::newRow("move04") << 8 << 9 << 5 << true;
+
+ QTest::newRow("move05") << 5 << 7 << 0 << false;
+ QTest::newRow("move06") << 8 << 9 << 0 << false;
+ QTest::newRow("move07") << 5 << 7 << 2 << false;
+ QTest::newRow("move08") << 8 << 9 << 5 << false;
}
void tst_QAbstractItemModel::testMoveSameParentUp()
@@ -993,6 +1013,9 @@ void tst_QAbstractItemModel::testMoveSameParentUp()
QFETCH( int, startRow);
QFETCH( int, endRow);
QFETCH( int, destRow);
+ QFETCH( bool, topLevel);
+
+ QModelIndex moveParent = topLevel ? QModelIndex() : m_model->index(5, 0);
QList<QPersistentModelIndex> persistentList;
QModelIndexList indexList;
@@ -1026,26 +1049,30 @@ void tst_QAbstractItemModel::testMoveSameParentUp()
ModelMoveCommand *moveCommand = new ModelMoveCommand(m_model, this);
moveCommand->setNumCols(4);
+ if (!topLevel)
+ moveCommand->setAncestorRowNumbers(QList<int>() << 5);
moveCommand->setStartRow(startRow);
moveCommand->setEndRow(endRow);
moveCommand->setDestRow(destRow);
+ if (!topLevel)
+ moveCommand->setDestAncestors(QList<int>() << 5);
moveCommand->doCommand();
QVariantList beforeSignal = beforeSpy.takeAt(0);
QVariantList afterSignal = afterSpy.takeAt(0);
QCOMPARE(beforeSignal.size(), 5);
- QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), QModelIndex());
+ QCOMPARE(beforeSignal.at(0).value<QModelIndex>(), moveParent);
QCOMPARE(beforeSignal.at(1).toInt(), startRow);
QCOMPARE(beforeSignal.at(2).toInt(), endRow);
- QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), QModelIndex());
+ QCOMPARE(beforeSignal.at(3).value<QModelIndex>(), moveParent);
QCOMPARE(beforeSignal.at(4).toInt(), destRow);
QCOMPARE(afterSignal.size(), 5);
- QCOMPARE(afterSignal.at(0).value<QModelIndex>(), QModelIndex());
+ QCOMPARE(afterSignal.at(0).value<QModelIndex>(), moveParent);
QCOMPARE(afterSignal.at(1).toInt(), startRow);
QCOMPARE(afterSignal.at(2).toInt(), endRow);
- QCOMPARE(afterSignal.at(3).value<QModelIndex>(), QModelIndex());
+ QCOMPARE(afterSignal.at(3).value<QModelIndex>(), moveParent);
QCOMPARE(afterSignal.at(4).toInt(), destRow);
@@ -1053,7 +1080,7 @@ void tst_QAbstractItemModel::testMoveSameParentUp()
{
QModelIndex idx = indexList.at(i);
QModelIndex persistentIndex = persistentList.at(i);
- if (idx.parent() == QModelIndex())
+ if (idx.parent() == moveParent)
{
int row = idx.row();
if ( row >= destRow)
diff --git a/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp b/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp
index 5033a50068..99a263be1e 100644
--- a/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp
+++ b/tests/auto/qabstractscrollarea/tst_qabstractscrollarea.cpp
@@ -71,6 +71,8 @@ private slots:
void viewportCrash();
void task214488_layoutDirection_data();
void task214488_layoutDirection();
+ void wheelEvent_data();
+ void wheelEvent();
};
tst_QAbstractScrollArea::tst_QAbstractScrollArea()
@@ -296,10 +298,10 @@ public:
setAttribute(Qt::WA_DropSiteRegistered, true);
- startTimer(2000);
+ startTimer(200);
}
- void timerEvent(QTimerEvent *event)
+ void timerEvent(QTimerEvent *)
{
// should not crash.
(void)new QScrollArea(this);
@@ -385,5 +387,96 @@ void tst_QAbstractScrollArea::patternBackground()
QCOMPARE(image.pixel(QPoint(20,20)) , QColor(Qt::red).rgb());
}
+Q_DECLARE_METATYPE(QWheelEvent *);
+
+void tst_QAbstractScrollArea::wheelEvent_data()
+{
+ QTest::addColumn<QSize>("widgetSize");
+ QTest::addColumn<QPoint>("initialOffset");
+ QTest::addColumn<QWheelEvent *>("event");
+ QTest::addColumn<int>("movedX"); // -1 , 0 , or 1
+ QTest::addColumn<int>("movedY");
+
+ QPoint pos(100,100);
+ int delta =-120;
+
+ QTest::newRow("1") << QSize(600,600) << QPoint(50,50)
+ << new QWheelEvent(pos, delta, 0, 0, Qt::Horizontal) << 1 << 0;
+
+ QTest::newRow("2") << QSize(600,600) << QPoint(50,50)
+ << new QWheelEvent(pos, delta, 0, 0, Qt::Vertical) << 0 << 1;
+
+ QTest::newRow("3") << QSize(600,600) << QPoint(50,50)
+ << new QWheelEvent(pos, -delta, 0, 0, Qt::Horizontal) << -1 << 0;
+
+ QTest::newRow("4") << QSize(600,600) << QPoint(50,50)
+ << new QWheelEvent(pos, -delta, 0, 0, Qt::Vertical) << 0 << -1;
+
+ QTest::newRow("5") << QSize(20,600) << QPoint(0,50)
+ << new QWheelEvent(pos, delta, 0, 0, Qt::Horizontal) << 0 << 1;
+
+ QTest::newRow("6") << QSize(20,600) << QPoint(0,50)
+ << new QWheelEvent(pos, delta, 0, 0, Qt::Vertical) << 0 << 1;
+
+ QTest::newRow("7") << QSize(20,600) << QPoint(0,50)
+ << new QWheelEvent(pos, -delta, 0, 0, Qt::Horizontal) << 0 << -1;
+
+ QTest::newRow("8") << QSize(20,600) << QPoint(0,50)
+ << new QWheelEvent(pos, -delta, 0, 0, Qt::Vertical) << 0 << -1;
+
+ QTest::newRow("9") << QSize(600,20) << QPoint(50,0)
+ << new QWheelEvent(pos, delta, 0, 0, Qt::Horizontal) << 1 << 0;
+
+ QTest::newRow("a") << QSize(600,20) << QPoint(50,0)
+ << new QWheelEvent(pos, delta, 0, 0, Qt::Vertical) << 1 << 0;
+
+ QTest::newRow("b") << QSize(600,20) << QPoint(50,0)
+ << new QWheelEvent(pos, -delta, 0, 0, Qt::Horizontal) << -1 << 0;
+
+ QTest::newRow("c") << QSize(600,20) << QPoint(50,0)
+ << new QWheelEvent(pos, -delta, 0, 0, Qt::Vertical) << -1 << 0;
+}
+
+
+
+
+void tst_QAbstractScrollArea::wheelEvent()
+{
+ QFETCH(QSize, widgetSize);
+ QFETCH(QPoint, initialOffset);
+ QFETCH(QWheelEvent *, event);
+ QFETCH(int, movedX);
+ QFETCH(int, movedY);
+
+ QScrollArea scrollArea;
+ scrollArea.resize(200, 200);
+ QLabel widget("H e l l o");
+ widget.resize(widgetSize);
+ scrollArea.setWidget(&widget);
+ scrollArea.show();
+ QTest::qWait(20);
+
+ scrollArea.verticalScrollBar()->setValue(initialOffset.y());
+ scrollArea.horizontalScrollBar()->setValue(initialOffset.x());
+
+ QCOMPARE(scrollArea.verticalScrollBar()->value(), initialOffset.y());
+ QCOMPARE(scrollArea.horizontalScrollBar()->value(), initialOffset.x());
+
+ QApplication::sendEvent(scrollArea.viewport(), event);
+
+ if(movedX == 0)
+ QCOMPARE(scrollArea.horizontalScrollBar()->value(), initialOffset.x());
+ else
+ QVERIFY(movedX * scrollArea.horizontalScrollBar()->value() > movedX * initialOffset.x());
+
+ if(movedY == 0)
+ QCOMPARE(scrollArea.verticalScrollBar()->value(), initialOffset.y());
+ else
+ QVERIFY(movedY * scrollArea.verticalScrollBar()->value() > movedY * initialOffset.y());
+
+ delete event;
+}
+
+
QTEST_MAIN(tst_QAbstractScrollArea)
#include "tst_qabstractscrollarea.moc"
diff --git a/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp b/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp
index 381f46f61b..a57c1d6185 100644
--- a/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp
+++ b/tests/auto/qcalendarwidget/tst_qcalendarwidget.cpp
@@ -75,6 +75,8 @@ private slots:
void resetTextFormat();
void setWeekdayFormat();
+ void showPrevNext_data();
+ void showPrevNext();
};
// Testing get/set functions
@@ -293,5 +295,73 @@ void tst_QCalendarWidget::cleanup()
{
}
+
+typedef void (QCalendarWidget::*ShowFunc)();
+Q_DECLARE_METATYPE(ShowFunc)
+
+void tst_QCalendarWidget::showPrevNext_data()
+{
+ QTest::addColumn<ShowFunc>("function");
+ QTest::addColumn<QDate>("dateOrigin");
+ QTest::addColumn<QDate>("expectedDate");
+
+ QTest::newRow("showNextMonth") << &QCalendarWidget::showNextMonth << QDate(1984,7,30) << QDate(1984,8,30);
+ QTest::newRow("showPrevMonth") << &QCalendarWidget::showPreviousMonth << QDate(1984,7,30) << QDate(1984,6,30);
+ QTest::newRow("showNextYear") << &QCalendarWidget::showNextYear << QDate(1984,7,30) << QDate(1985,7,30);
+ QTest::newRow("showPrevYear") << &QCalendarWidget::showPreviousYear << QDate(1984,7,30) << QDate(1983,7,30);
+
+ QTest::newRow("showNextMonth limit") << &QCalendarWidget::showNextMonth << QDate(2007,12,4) << QDate(2008,1,4);
+ QTest::newRow("showPreviousMonth limit") << &QCalendarWidget::showPreviousMonth << QDate(2006,1,23) << QDate(2005,12,23);
+
+ QTest::newRow("showNextMonth now") << &QCalendarWidget::showNextMonth << QDate() << QDate::currentDate().addMonths(1);
+ QTest::newRow("showNextYear now") << &QCalendarWidget::showNextYear << QDate() << QDate::currentDate().addYears(1);
+ QTest::newRow("showPrevieousMonth now") << &QCalendarWidget::showPreviousMonth << QDate() << QDate::currentDate().addMonths(-1);
+ QTest::newRow("showPreviousYear now") << &QCalendarWidget::showPreviousYear << QDate() << QDate::currentDate().addYears(-1);
+
+ QTest::newRow("showToday now") << &QCalendarWidget::showToday << QDate(2000,1,31) << QDate::currentDate();
+ QTest::newRow("showNextMonth 31") << &QCalendarWidget::showNextMonth << QDate(2000,1,31) << QDate(2000,2,28);
+ QTest::newRow("selectedDate") << &QCalendarWidget::showSelectedDate << QDate(2008,2,29) << QDate(2008,2,29);
+
+}
+
+void tst_QCalendarWidget::showPrevNext()
+{
+ QFETCH(ShowFunc, function);
+ QFETCH(QDate, dateOrigin);
+ QFETCH(QDate, expectedDate);
+
+ QCalendarWidget calWidget;
+ calWidget.show();
+ QTest::qWaitForWindowShown(&calWidget);
+ if(!dateOrigin.isNull()) {
+ calWidget.setSelectedDate(dateOrigin);
+ calWidget.setCurrentPage(dateOrigin.year(), dateOrigin.month());
+
+ QCOMPARE(calWidget.yearShown(), dateOrigin.year());
+ QCOMPARE(calWidget.monthShown(), dateOrigin.month());
+ } else {
+ QCOMPARE(calWidget.yearShown(), QDate::currentDate().year());
+ QCOMPARE(calWidget.monthShown(), QDate::currentDate().month());
+ }
+
+ (calWidget.*function)();
+
+ QCOMPARE(calWidget.yearShown(), expectedDate.year());
+ QCOMPARE(calWidget.monthShown(), expectedDate.month());
+
+ // QTBUG-4058
+ QTest::qWait(20);
+ QToolButton *button = qFindChild<QToolButton *>(&calWidget, "qt_calendar_prevmonth");
+ QTest::mouseClick(button, Qt::LeftButton);
+ expectedDate = expectedDate.addMonths(-1);
+ QCOMPARE(calWidget.yearShown(), expectedDate.year());
+ QCOMPARE(calWidget.monthShown(), expectedDate.month());
+
+ if(!dateOrigin.isNull()) {
+ //the selectedDate should not have changed
+ QCOMPARE(calWidget.selectedDate(), dateOrigin);
+ }
+}
+
QTEST_MAIN(tst_QCalendarWidget)
#include "tst_qcalendarwidget.moc"
diff --git a/tests/auto/qcoreapplication/tst_qcoreapplication.cpp b/tests/auto/qcoreapplication/tst_qcoreapplication.cpp
index c5f06e2bb9..3c61f81513 100644
--- a/tests/auto/qcoreapplication/tst_qcoreapplication.cpp
+++ b/tests/auto/qcoreapplication/tst_qcoreapplication.cpp
@@ -58,6 +58,7 @@ private slots:
#endif
void applicationPid();
void globalPostedEventsCount();
+ void processEventsAlwaysSendsPostedEvents();
};
class EventSpy : public QObject
@@ -488,5 +489,40 @@ void tst_QCoreApplication::globalPostedEventsCount()
QCOMPARE(x.globalPostedEventsCount, expected);
}
+class ProcessEventsAlwaysSendsPostedEventsObject : public QObject
+{
+public:
+ int counter;
+
+ inline ProcessEventsAlwaysSendsPostedEventsObject()
+ : counter(0)
+ { }
+
+ bool event(QEvent *event)
+ {
+ if (event->type() == QEvent::User)
+ ++counter;
+ return QObject::event(event);
+ }
+};
+
+void tst_QCoreApplication::processEventsAlwaysSendsPostedEvents()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QCoreApplication app(argc, argv);
+
+ ProcessEventsAlwaysSendsPostedEventsObject object;
+ QTime t;
+ t.start();
+ int i = 1;
+ do {
+ QCoreApplication::postEvent(&object, new QEvent(QEvent::User));
+ QCoreApplication::processEvents();
+ QCOMPARE(object.counter, i);
+ ++i;
+ } while (t.elapsed() < 3000);
+}
+
QTEST_APPLESS_MAIN(tst_QCoreApplication)
#include "tst_qcoreapplication.moc"
diff --git a/tests/auto/qdockwidget/tst_qdockwidget.cpp b/tests/auto/qdockwidget/tst_qdockwidget.cpp
index e62ba8c51e..c9a7f1caa5 100644
--- a/tests/auto/qdockwidget/tst_qdockwidget.cpp
+++ b/tests/auto/qdockwidget/tst_qdockwidget.cpp
@@ -87,12 +87,14 @@ private slots:
void dockLocationChanged();
void setTitleBarWidget();
void titleBarDoubleClick();
+ void restoreStateOfFloating();
// task specific tests:
void task165177_deleteFocusWidget();
void task169808_setFloating();
void task237438_setFloatingCrash();
void task248604_infiniteResize();
void task258459_visibilityChanged();
+ void taskQTBUG_1665_closableChanged();
};
// Testing get/set functions
@@ -612,6 +614,7 @@ void tst_QDockWidget::dockLocationChanged()
QMainWindow mw;
QDockWidget dw;
+ dw.setObjectName("dock1");
QSignalSpy spy(&dw, SIGNAL(dockLocationChanged(Qt::DockWidgetArea)));
mw.addDockWidget(Qt::LeftDockWidgetArea, &dw);
@@ -636,6 +639,7 @@ void tst_QDockWidget::dockLocationChanged()
QCOMPARE(spy.count(), 0);
QDockWidget dw2;
+ dw2.setObjectName("dock2");
mw.addDockWidget(Qt::TopDockWidgetArea, &dw2);
mw.tabifyDockWidget(&dw2, &dw);
QCOMPARE(spy.count(), 1);
@@ -657,6 +661,12 @@ void tst_QDockWidget::dockLocationChanged()
QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)),
Qt::TopDockWidgetArea);
spy.clear();
+
+ QByteArray ba = mw.saveState();
+ mw.restoreState(ba);
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)),
+ Qt::TopDockWidgetArea);
}
void tst_QDockWidget::featuresChanged()
@@ -714,6 +724,21 @@ void tst_QDockWidget::titleBarDoubleClick()
QCOMPARE(win.dockWidgetArea(&dock), Qt::TopDockWidgetArea);
}
+void tst_QDockWidget::restoreStateOfFloating()
+{
+ QMainWindow mw;
+ QDockWidget dock;
+ dock.setObjectName("dock1");
+ mw.addDockWidget(Qt::TopDockWidgetArea, &dock);
+ QVERIFY(!dock.isFloating());
+ QByteArray ba = mw.saveState();
+ dock.setFloating(true);
+ QVERIFY(dock.isFloating());
+ QVERIFY(mw.restoreState(ba));
+ QVERIFY(!dock.isFloating());
+}
+
+
void tst_QDockWidget::task165177_deleteFocusWidget()
{
QMainWindow mw;
@@ -834,5 +859,22 @@ void tst_QDockWidget::task258459_visibilityChanged()
QCOMPARE(spy2.first().first().toBool(), true); //dock1 is visible
}
+void tst_QDockWidget::taskQTBUG_1665_closableChanged()
+{
+ QDockWidget dock;
+ dock.show();
+ QTest::qWaitForWindowShown(&dock);
+
+ if (dock.windowFlags() & Qt::FramelessWindowHint)
+ QSKIP("this machine doesn't support native dock widget", SkipAll);
+
+ QVERIFY(dock.windowFlags() & Qt::WindowCloseButtonHint);
+
+ //now let's remove the closable attribute
+ dock.setFeatures(dock.features() ^ QDockWidget::DockWidgetClosable);
+ QVERIFY(!(dock.windowFlags() & Qt::WindowCloseButtonHint));
+}
+
+
QTEST_MAIN(tst_QDockWidget)
#include "tst_qdockwidget.moc"
diff --git a/tests/auto/qfont/tst_qfont.cpp b/tests/auto/qfont/tst_qfont.cpp
index fa76e44fee..5622e10de7 100644
--- a/tests/auto/qfont/tst_qfont.cpp
+++ b/tests/auto/qfont/tst_qfont.cpp
@@ -395,6 +395,13 @@ void tst_QFont::compare()
font.setOverline(false);
QVERIFY( font == font2 );
QVERIFY(!(font < font2));
+
+ font.setCapitalization(QFont::SmallCaps);
+ QVERIFY( font != font2 );
+ QCOMPARE(font < font2,!(font2 < font));
+ font.setCapitalization(QFont::MixedCase);
+ QVERIFY( font == font2 );
+ QVERIFY(!(font < font2));
}
#if defined(Q_WS_X11)
diff --git a/tests/auto/qfontcombobox/tst_qfontcombobox.cpp b/tests/auto/qfontcombobox/tst_qfontcombobox.cpp
index 7045c196df..b974ecab53 100644
--- a/tests/auto/qfontcombobox/tst_qfontcombobox.cpp
+++ b/tests/auto/qfontcombobox/tst_qfontcombobox.cpp
@@ -153,7 +153,7 @@ void tst_QFontComboBox::currentFont()
if (oldCurrentFont != box.currentFont()) {
//the signal may be emit twice if there is a foundry into brackets
- QVERIFY(spy0.count() >= 1);
+ QCOMPARE(spy0.count(),1);
}
}
@@ -286,6 +286,10 @@ void tst_QFontComboBox::currentFontChanged()
if (box.model()->rowCount() > 2) {
QTest::keyPress(&box, Qt::Key_Down);
QCOMPARE(spy0.count(), 1);
+
+ QFont f( "Sans Serif" );
+ box.setCurrentFont(f);
+ QCOMPARE(spy0.count(), 2);
} else
qWarning("Not enough fonts installed on test system. Consider adding some");
}
diff --git a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
index e33c7b6260..cd1eedd79e 100644
--- a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
+++ b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
@@ -399,7 +399,7 @@ void tst_QGraphicsGridLayout::columnAlignment()
widget->resize(widget->effectiveSizeHint(Qt::MaximumSize));
view.show();
widget->show();
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
// Check default
QCOMPARE(layout->columnAlignment(0), 0);
QCOMPARE(layout->columnAlignment(1), 0);
@@ -414,7 +414,7 @@ void tst_QGraphicsGridLayout::columnAlignment()
layout->setAlignment(layout->itemAt(1,1), Qt::AlignRight);
layout->setAlignment(layout->itemAt(1,2), Qt::AlignLeft);
- QApplication::processEvents(); // process LayoutRequest
+ QApplication::sendPostedEvents(0, 0); // process LayoutRequest
/*
+----------+------------+---------+
| Left | HCenter | Right |
@@ -846,7 +846,7 @@ void tst_QGraphicsGridLayout::rowAlignment()
widget->resize(300, 400);
view.show();
widget->show();
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
// Check default
QCOMPARE(layout->rowAlignment(0), 0);
QCOMPARE(layout->rowAlignment(1), 0);
@@ -869,7 +869,7 @@ void tst_QGraphicsGridLayout::rowAlignment()
layout->setAlignment(layout->itemAt(1,0), Qt::AlignTop);
layout->setAlignment(layout->itemAt(2,0), Qt::AlignHCenter);
- QApplication::processEvents(); // process LayoutRequest
+ QApplication::sendPostedEvents(0, 0); // process LayoutRequest
QCOMPARE(layout->alignment(layout->itemAt(0,0)), Qt::AlignRight); //Qt::AlignRight | Qt::AlignBottom
QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(50, 50, 50, 50));
@@ -1834,7 +1834,7 @@ void tst_QGraphicsGridLayout::defaultStretchFactors()
desc.apply(layout, item);
}
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
widget->show();
view.show();
@@ -1842,7 +1842,7 @@ void tst_QGraphicsGridLayout::defaultStretchFactors()
if (newSize.isValid())
widget->resize(newSize);
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
for (i = 0; i < expectedSizes.count(); ++i) {
QSizeF itemSize = layout->itemAt(i)->geometry().size();
QCOMPARE(itemSize, expectedSizes.at(i));
@@ -1994,7 +1994,7 @@ void tst_QGraphicsGridLayout::alignment2()
desc.apply(layout, item);
}
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
widget->show();
view.resize(400,300);
@@ -2002,7 +2002,7 @@ void tst_QGraphicsGridLayout::alignment2()
if (newSize.isValid())
widget->resize(newSize);
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
for (i = 0; i < expectedGeometries.count(); ++i) {
QRectF itemRect = layout->itemAt(i)->geometry();
QCOMPARE(itemRect, expectedGeometries.at(i));
diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
index d65c6ecdb2..27c6809110 100644
--- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -413,6 +413,7 @@ private slots:
void task243707_addChildBeforeParent();
void task197802_childrenVisibility();
void QTBUG_4233_updateCachedWithSceneRect();
+ void QTBUG_5418_textItemSetDefaultColor();
private:
QList<QGraphicsItem *> paintedItems;
@@ -9751,5 +9752,62 @@ void tst_QGraphicsItem::scenePosChange()
QCOMPARE(child2->changes.count(QGraphicsItem::ItemScenePositionHasChanged), 0);
}
+void tst_QGraphicsItem::QTBUG_5418_textItemSetDefaultColor()
+{
+ struct Item : public QGraphicsTextItem
+ {
+ bool painted;
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *opt, QWidget *wid)
+ {
+ painted = true;
+ QGraphicsTextItem::paint(painter, opt, wid);
+ }
+ };
+
+ Item *i = new Item;
+ i->painted = false;
+ i->setPlainText("I AM A TROLL");
+
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+ scene.addItem(i);
+ QApplication::processEvents();
+ QTRY_VERIFY(i->painted);
+ QApplication::processEvents();
+
+ i->painted = false;
+ QColor col(Qt::red);
+ i->setDefaultTextColor(col);
+ QApplication::processEvents();
+ QTRY_VERIFY(i->painted); //check that changing the color force an update
+
+ i->painted = false;
+ QImage image(400, 200, QImage::Format_RGB32);
+ image.fill(0);
+ QPainter painter(&image);
+ scene.render(&painter);
+ painter.end();
+ QVERIFY(i->painted);
+
+ int numRedPixel = 0;
+ QRgb rgb = col.rgb();
+ for (int y = 0; y < image.height(); ++y) {
+ for (int x = 0; x < image.width(); ++x) {
+ // Because of antialiasing we allow a certain range of errors here.
+ QRgb pixel = image.pixel(x, y);
+ if (qAbs((int)(pixel & 0xff) - (int)(rgb & 0xff)) +
+ qAbs((int)((pixel & 0xff00) >> 8) - (int)((rgb & 0xff00) >> 8)) +
+ qAbs((int)((pixel & 0xff0000) >> 16) - (int)((rgb & 0xff0000) >> 16)) <= 50) {
+ if (++numRedPixel >= 10) {
+ return;
+ }
+ }
+ }
+ }
+ QCOMPARE(numRedPixel, -1); //color not found, FAIL!
+}
+
QTEST_MAIN(tst_QGraphicsItem)
#include "tst_qgraphicsitem.moc"
diff --git a/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp b/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
index 546f92d6ef..d3087dc635 100644
--- a/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
+++ b/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
@@ -664,16 +664,16 @@ void tst_QGraphicsLinearLayout::invalidate()
widget->show();
layout.setContentsMargins(1, 2, 3, 4);
- qApp->processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(layout.layoutRequest, 1);
layout.setOrientation(Qt::Vertical);
- qApp->processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(layout.layoutRequest, 2);
for (int i = 0; i < count; ++i)
layout.invalidate(); // Event is compressed, should only get one layoutrequest
- qApp->processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(layout.layoutRequest, count ? 3 : 2);
delete widget;
}
diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
index 9c6aa393e6..f07453cea4 100644
--- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp
@@ -217,7 +217,6 @@ private slots:
void update();
void inputMethodSensitivity();
void inputContextReset();
- void defaultClipIntersectToView();
// task specific tests below me
void task172231_untransformableItems();
@@ -3693,77 +3692,6 @@ void tst_QGraphicsView::inputContextReset()
QCOMPARE(inputContext.resets, 0);
}
-class ViewClipTester : public QGraphicsView
-{
-public:
- ViewClipTester(QGraphicsScene *scene = 0)
- : QGraphicsView(scene)
- { }
- QRegion clipRegion;
-
-protected:
- void drawBackground(QPainter *painter, const QRectF &rect)
- {
- clipRegion = painter->clipRegion();
- }
-};
-
-class ItemClipTester : public QGraphicsRectItem
-{
-public:
- ItemClipTester() : QGraphicsRectItem(0, 0, 20, 20)
- {
- setBrush(Qt::blue);
- }
- QRegion clipRegion;
-
- void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0)
- {
- clipRegion = painter->clipRegion();
- QGraphicsRectItem::paint(painter, option, widget);
- }
-};
-
-void tst_QGraphicsView::defaultClipIntersectToView()
-{
- QGraphicsScene scene;
- ItemClipTester *tester = new ItemClipTester;
- scene.addItem(tester);
-
- ViewClipTester view(&scene);
- view.setAlignment(Qt::AlignTop | Qt::AlignLeft);
- view.setFrameStyle(0);
- view.resize(200, 200);
- view.show();
- QTRY_COMPARE(QApplication::activeWindow(), (QWidget *)&view);
-
- QRect viewRect(0, 0, 200, 200);
- QCOMPARE(view.clipRegion, QRegion(viewRect));
- QCOMPARE(tester->clipRegion, QRegion(viewRect));
-
- view.viewport()->update(0, 0, 5, 5);
- view.viewport()->update(10, 10, 5, 5);
- qApp->processEvents();
- viewRect = QRect(0, 0, 15, 15);
- QCOMPARE(view.clipRegion, QRegion(viewRect));
- QCOMPARE(tester->clipRegion, QRegion(viewRect));
-
- view.scale(2, 2);
- qApp->processEvents();
-
- viewRect.moveTop(-viewRect.height());
- viewRect = QRect(0, 0, 100, 100);
- QCOMPARE(view.clipRegion, QRegion(viewRect));
- QCOMPARE(tester->clipRegion, QRegion(viewRect));
-
- view.viewport()->update(0, 0, 5, 5);
- view.viewport()->update(10, 10, 5, 5);
- qApp->processEvents();
- viewRect = QRect(0, 0, 8, 8);
- QCOMPARE(view.clipRegion, QRegion(viewRect));
- QCOMPARE(tester->clipRegion, QRegion(viewRect));
-}
-
void tst_QGraphicsView::task253415_reconnectUpdateSceneOnSceneChanged()
{
QGraphicsView view;
diff --git a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
index 6b5ad09351..829e55c4b3 100644
--- a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -160,6 +160,7 @@ private slots:
void widgetSendsGeometryChanges();
void respectHFW();
void addChildInpolishEvent();
+ void polishEvent();
// Task fixes
void task236127_bspTreeIndexFails();
@@ -2768,6 +2769,32 @@ void tst_QGraphicsWidget::addChildInpolishEvent()
QCOMPARE(PolishWidget::numberOfPolish, 2);
}
+void tst_QGraphicsWidget::polishEvent()
+{
+ class MyGraphicsWidget : public QGraphicsWidget
+ { public:
+ void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *)
+ { events << QEvent::Paint; }
+ void polishEvent()
+ { events << QEvent::Polish; }
+ QList<QEvent::Type> events;
+ };
+
+ QGraphicsScene scene;
+
+ MyGraphicsWidget *widget = new MyGraphicsWidget;
+ scene.addItem(widget);
+
+ QGraphicsView view(&scene);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Make sure the item is painted.
+ QTRY_VERIFY(widget->events.contains(QEvent::Paint));
+
+ // Make sure the item got polish before paint.
+ QCOMPARE(widget->events.at(0), QEvent::Polish);
+}
QTEST_MAIN(tst_QGraphicsWidget)
#include "tst_qgraphicswidget.moc"
diff --git a/tests/auto/qgridlayout/tst_qgridlayout.cpp b/tests/auto/qgridlayout/tst_qgridlayout.cpp
index 46e2a03c32..313dc95058 100644
--- a/tests/auto/qgridlayout/tst_qgridlayout.cpp
+++ b/tests/auto/qgridlayout/tst_qgridlayout.cpp
@@ -268,7 +268,7 @@ void tst_QGridLayout::setMinAndMaxSize()
leftChild.setMinimumSize(100, 100);
leftChild.setMaximumSize(200, 200);
layout.addWidget(&leftChild, 0, 0);
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(widget.minimumSize(), leftChild.minimumSize());
QCOMPARE(widget.maximumSize(), leftChild.maximumSize());
@@ -277,7 +277,7 @@ void tst_QGridLayout::setMinAndMaxSize()
rightChild.setMinimumSize(100, 100);
rightChild.setMaximumSize(200, 200);
layout.addWidget(&rightChild, 0, 2);
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(widget.minimumWidth(),
leftChild.minimumWidth() + rightChild.minimumWidth());
@@ -293,7 +293,7 @@ void tst_QGridLayout::setMinAndMaxSize()
layout.setColumnMinimumWidth(1, colMin);
QCOMPARE(layout.columnMinimumWidth(1), colMin);
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(widget.minimumWidth(),
leftChild.minimumWidth() + rightChild.minimumWidth() + colMin);
QCOMPARE(widget.maximumWidth(),
@@ -306,7 +306,7 @@ void tst_QGridLayout::setMinAndMaxSize()
layout.setColumnStretch(1,1);
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(widget.minimumWidth(),
leftChild.minimumWidth() + rightChild.minimumWidth() + colMin);
QCOMPARE(widget.maximumWidth(), QLAYOUTSIZE_MAX);
@@ -318,7 +318,7 @@ void tst_QGridLayout::setMinAndMaxSize()
layout.setColumnStretch(1,0);
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(widget.minimumWidth(),
leftChild.minimumWidth() + rightChild.minimumWidth() + colMin);
QCOMPARE(widget.maximumWidth(),
@@ -335,7 +335,7 @@ void tst_QGridLayout::setMinAndMaxSize()
static const int spacerS = 250;
QSpacerItem *spacer = new QSpacerItem(spacerS, spacerS);
layout.addItem(spacer, 0, 1);
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(widget.minimumWidth(),
leftChild.minimumWidth() + rightChild.minimumWidth() + spacerS);
@@ -348,7 +348,7 @@ void tst_QGridLayout::setMinAndMaxSize()
spacer->changeSize(spacerS, spacerS, QSizePolicy::Fixed, QSizePolicy::Minimum);
layout.invalidate();
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(widget.minimumWidth(),
leftChild.minimumWidth() + rightChild.minimumWidth() + spacerS);
QCOMPARE(widget.maximumWidth(),
@@ -358,13 +358,13 @@ void tst_QGridLayout::setMinAndMaxSize()
layout.removeItem(spacer);
rightChild.hide();
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(widget.minimumSize(), leftChild.minimumSize());
QCOMPARE(widget.maximumSize(), leftChild.maximumSize());
rightChild.show();
layout.removeWidget(&rightChild);
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(widget.minimumSize(), leftChild.minimumSize());
QCOMPARE(widget.maximumSize(), leftChild.maximumSize());
@@ -373,7 +373,7 @@ void tst_QGridLayout::setMinAndMaxSize()
bottomChild.setMinimumSize(100, 100);
bottomChild.setMaximumSize(200, 200);
layout.addWidget(&bottomChild, 1, 0);
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(widget.minimumHeight(),
leftChild.minimumHeight() + bottomChild.minimumHeight());
@@ -385,13 +385,13 @@ void tst_QGridLayout::setMinAndMaxSize()
qMax(leftChild.maximumWidth(), bottomChild.maximumWidth()));
bottomChild.hide();
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(widget.minimumSize(), leftChild.minimumSize());
QCOMPARE(widget.maximumSize(), leftChild.maximumSize());
bottomChild.show();
layout.removeWidget(&bottomChild);
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(widget.minimumSize(), leftChild.minimumSize());
QCOMPARE(widget.maximumSize(), leftChild.maximumSize());
}
@@ -423,7 +423,7 @@ void tst_QGridLayout::spacingAndSpacers()
SizeHinter leftChild(100,100);
leftChild.setPalette(QPalette(Qt::red));
layout.addWidget(&leftChild, 0, 0);
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
expectedSizeHint = leftChild.sizeHint();
QCOMPARE(widget.sizeHint(), expectedSizeHint);
@@ -431,7 +431,7 @@ void tst_QGridLayout::spacingAndSpacers()
SizeHinter rightChild(200,100);
rightChild.setPalette(QPalette(Qt::green));
layout.addWidget(&rightChild, 0, 2);
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(rightChild.sizeHint(), QSize(200,100));
expectedSizeHint += QSize(rightChild.sizeHint().width(), 0);
@@ -440,11 +440,11 @@ void tst_QGridLayout::spacingAndSpacers()
layout.setColumnMinimumWidth(1, 100);
widget.adjustSize();
expectedSizeHint += QSize(100,0);
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(widget.sizeHint(), expectedSizeHint);
rightChild.hide();
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
expectedSizeHint -= QSize(rightChild.sizeHint().width(), 0);
QCOMPARE(widget.sizeHint(), expectedSizeHint);
@@ -459,12 +459,12 @@ void tst_QGridLayout::spacingAndSpacers()
leftChild.setMaximumWidth(200);
rightChild.setMaximumWidth(200);
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(widget.maximumWidth(), leftChild.maximumWidth() + rightChild.maximumWidth());
#endif
layout.removeWidget(&rightChild);
- QApplication::processEvents();
+ QApplication::sendPostedEvents(0, 0);
QCOMPARE(widget.sizeHint(), expectedSizeHint);
diff --git a/tests/auto/qkeysequence/tst_qkeysequence.cpp b/tests/auto/qkeysequence/tst_qkeysequence.cpp
index 1c257bf01a..bc9ae6cc47 100644
--- a/tests/auto/qkeysequence/tst_qkeysequence.cpp
+++ b/tests/auto/qkeysequence/tst_qkeysequence.cpp
@@ -119,6 +119,7 @@ private slots:
void symetricConstructors_data();
void symetricConstructors();
void checkMultipleNames();
+ void mnemonic_data();
void mnemonic();
void toString_data();
void toString();
@@ -133,6 +134,7 @@ private slots:
void translated_data();
void translated();
+
void initTestCase();
private:
QTranslator *ourTranslator;
@@ -299,7 +301,7 @@ void tst_QKeySequence::standardKeys_data()
QTest::newRow("findNext") << (int)QKeySequence::FindNext<< QString("F3");
QTest::newRow("findPrevious") << (int)QKeySequence::FindPrevious << QString("SHIFT+F3");
QTest::newRow("close") << (int)QKeySequence::Close<< QString("CTRL+F4");
- QTest::newRow("replace") << (int)QKeySequence::Replace<< QString("CTRL+H");
+ QTest::newRow("replace") << (int)QKeySequence::Replace<< QString("CTRL+H");
#endif
QTest::newRow("bold") << (int)QKeySequence::Bold << QString("CTRL+B");
QTest::newRow("italic") << (int)QKeySequence::Italic << QString("CTRL+I");
@@ -357,17 +359,50 @@ void tst_QKeySequence::keyBindings()
}
+
+void tst_QKeySequence::mnemonic_data()
+{
+ QTest::addColumn<QString>("string");
+ QTest::addColumn<QString>("key");
+ QTest::addColumn<bool>("warning");
+
+ QTest::newRow("1") << QString::fromLatin1("&bonjour") << QString::fromLatin1("ALT+B") << false;
+ QTest::newRow("2") << QString::fromLatin1("&&bonjour") << QString() << false;
+ QTest::newRow("3") << QString::fromLatin1("&&bon&jour") << QString::fromLatin1("ALT+J") << false;
+ QTest::newRow("4") << QString::fromLatin1("&&bon&jo&ur") << QString::fromLatin1("ALT+J") << true;
+ QTest::newRow("5") << QString::fromLatin1("b&on&&jour") << QString::fromLatin1("ALT+O") << false;
+ QTest::newRow("6") << QString::fromLatin1("bonjour") << QString() << false;
+ QTest::newRow("7") << QString::fromLatin1("&&&bonjour") << QString::fromLatin1("ALT+B") << false;
+ QTest::newRow("8") << QString::fromLatin1("bonjour&&&") << QString() << false;
+ QTest::newRow("9") << QString::fromLatin1("bo&&nj&o&&u&r") << QString::fromLatin1("ALT+O") << true;
+ QTest::newRow("10") << QString::fromLatin1("BON&JOUR") << QString::fromLatin1("ALT+J") << false;
+ QTest::newRow("11") << QString::fromUtf8("bonjour") << QString() << false;
+}
+
void tst_QKeySequence::mnemonic()
{
#ifdef Q_WS_MAC
QSKIP("mnemonics are not used on Mac OS X", SkipAll);
#endif
- QKeySequence k = QKeySequence::mnemonic("&Foo");
- QVERIFY(k == QKeySequence("ALT+F"));
- k = QKeySequence::mnemonic("&& &x");
- QVERIFY(k == QKeySequence("ALT+X"));
+ QFETCH(QString, string);
+ QFETCH(QString, key);
+ QFETCH(bool, warning);
+
+#ifndef QT_NO_DEBUG
+ if (warning) {
+ QString str = QString::fromLatin1("QKeySequence::mnemonic: \"%1\" contains multiple occurences of '&'").arg(string);
+ QTest::ignoreMessage(QtWarningMsg, qPrintable(str));
+ // qWarning(qPrintable(str));
+ }
+#endif
+ QKeySequence seq = QKeySequence::mnemonic(string);
+ QKeySequence res = QKeySequence(key);
+
+ QCOMPARE(seq, res);
}
+
+
void tst_QKeySequence::toString_data()
{
QTest::addColumn<QString>("strSequence");
diff --git a/tests/auto/qlabel/tst_qlabel.cpp b/tests/auto/qlabel/tst_qlabel.cpp
index 9d957a5b60..6b7e1063a6 100644
--- a/tests/auto/qlabel/tst_qlabel.cpp
+++ b/tests/auto/qlabel/tst_qlabel.cpp
@@ -51,6 +51,7 @@
#include <qmovie.h>
#include <qpicture.h>
#include <qmessagebox.h>
+#include <private/qlabel_p.h>
//TESTED_CLASS=
//TESTED_FILES=
@@ -116,6 +117,9 @@ private slots:
void unicodeText_data();
void unicodeText();
+ void mnemonic_data();
+ void mnemonic();
+
private:
QLabel *testWidget;
QPointer<Widget> test_box;
@@ -224,6 +228,7 @@ void tst_QLabel::setBuddy()
QVERIFY( !test_edit->hasFocus() );
QTest::keyClick( test_box, 't', Qt::AltModifier );
QVERIFY( test_edit->hasFocus() );
+ delete test_box;
}
void tst_QLabel::text()
@@ -245,6 +250,7 @@ void tst_QLabel::setText_data()
QTest::newRow( QString(prefix + "data1").toLatin1() ) << QString("This is the first line\nThis is the second line") << QString("Courier");
QTest::newRow( QString(prefix + "data2").toLatin1() ) << QString("This is the first line\nThis is the second line\nThis is the third line") << QString("Helvetica");
QTest::newRow( QString(prefix + "data3").toLatin1() ) << QString("This is <b>bold</b> richtext") << QString("Courier");
+ QTest::newRow( QString(prefix + "data4").toLatin1() ) << QString("I Have a &shortcut") << QString("Helvetica");
}
void tst_QLabel::setText()
@@ -509,5 +515,50 @@ void tst_QLabel::unicodeText()
testWidget->show();
}
+void tst_QLabel::mnemonic_data()
+{
+ QTest::addColumn<QString>("text");
+ QTest::addColumn<QString>("expectedDocText");
+ QTest::addColumn<QString>("expectedShortcutCursor");
+
+ QTest::newRow("1") << QString("Normal") << QString("Normal") << QString();
+ QTest::newRow("2") << QString("&Simple") << QString("Simple") << QString("S");
+ QTest::newRow("3") << QString("Also &simple") << QString("Also simple") << QString("s");
+ QTest::newRow("4") << QString("&&With &Double &&amp;") << QString("&With Double &amp;") << QString("D");
+ QTest::newRow("5") << QString("Hep&&Hop") << QString("Hep&Hop") << QString("");
+ QTest::newRow("6") << QString("Hep&&&Hop") << QString("Hep&Hop") << QString("H");
+}
+
+
+void tst_QLabel::mnemonic()
+{
+ // this test that the mnemonics appears correctly when the label has a text control.
+
+ QFETCH(QString, text);
+ QFETCH(QString, expectedDocText);
+ QFETCH(QString, expectedShortcutCursor);
+
+ QWidget w;
+ QHBoxLayout *hbox = new QHBoxLayout;
+ QLabel *lab = new QLabel(text);
+ //lab->setText("plop &plop");
+ QLineEdit *lineedit = new QLineEdit;
+ lab->setBuddy(lineedit);
+ lab->setTextInteractionFlags(Qt::TextSelectableByMouse);
+
+ hbox->addWidget(lab);
+ hbox->addWidget(lineedit);
+ hbox->addWidget(new QLineEdit);
+ w.setLayout(hbox);
+ w.show();
+ QTest::qWaitForWindowShown(&w);
+
+ QLabelPrivate *d = static_cast<QLabelPrivate *>(QObjectPrivate::get(lab));
+ QVERIFY(d->control);
+ QCOMPARE(d->control->document()->toPlainText(), expectedDocText);
+ QCOMPARE(d->shortcutCursor.selectedText(), expectedShortcutCursor);
+}
+
+
QTEST_MAIN(tst_QLabel)
#include "tst_qlabel.moc"