summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-11-05 14:14:49 +0100
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2015-12-22 11:45:47 +0000
commit3690bcfda3e7c28789e1499996adfffde87ba150 (patch)
treeff693ea45c69d5aabf0a5f3e6ca7c752104e577e /tests/auto/widgets
parentfc8711dece1d9f29afe004ffb57f081e2436fac7 (diff)
Refactor tst_QGraphicsWidget::setTabOrderAndReparent().
The test produces compiler warnings in release builds: tst_qgraphicswidget.cpp: In member function 'void tst_QGraphicsWidget::setTabOrderAndReparent()': tst_qgraphicswidget.cpp:1521:89: warning: 'w2' may be used uninitialized in this function [-Wmaybe-uninitialized] tst_qgraphicswidget.cpp:1536:88: warning: 'w1' may be used uninitialized in this function [-Wmaybe-uninitialized] Use arrays instead of the variables w1,2... and rewrite the helper function compareFocusChain() to work on iterators allowing to remove some temporary lists. Also return error messages in a QByteArray ready for the Q[TRY_]VERIFY2 macros. Change-Id: I43466921af59521d1faf00b75fe943508418abb3 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp128
1 files changed, 66 insertions, 62 deletions
diff --git a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
index fe7e3bf59e..bc162d24f3 100644
--- a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -49,6 +49,8 @@
#include "../../../qtest-config.h"
+typedef QList<QGraphicsItem *> QGraphicsItemList;
+
class EventSpy : public QObject
{
Q_OBJECT
@@ -1436,27 +1438,37 @@ void tst_QGraphicsWidget::setTabOrder()
}
}
-static bool compareFocusChain(QGraphicsView *view, const QList<QGraphicsItem*> &order)
+template <class Iterator>
+bool compareFocusChain(QGraphicsView *view,
+ Iterator i1, Iterator i2,
+ QByteArray *errorMessage)
{
QGraphicsScene *scene = view->scene();
- QStringList actual;
QGraphicsItem *oldFocusItem = scene->focusItem();
- for (int i = 0; i < order.count(); ++i) {
- QGraphicsItem *focusItem = scene->focusItem();
- actual << focusItem->data(0).toString();
- //qDebug() << "i:" << i << "expected:" << QString::number(uint(order.at(i)), 16) << QString::number(uint(focusItem), 16);
- if (focusItem != order.at(i)) {
- qDebug() << "actual:" << actual;
+ Iterator last = i2 - 1;
+ for (Iterator i = i1; i != i2; ++i) {
+ QGraphicsItem *actualFocusItem = scene->focusItem();
+ QGraphicsItem *expectedFocusItem = *i;
+ if (actualFocusItem != expectedFocusItem) {
+ *errorMessage = "Actual:" + actualFocusItem->data(0).toByteArray()
+ + " expected:" + expectedFocusItem->data(0).toByteArray();
scene->setFocusItem(oldFocusItem);
return false;
}
- if (i < order.count() - 1)
+ if (i != last)
QTest::keyPress(view, Qt::Key_Tab);
}
scene->setFocusItem(oldFocusItem);
return true;
}
+template <class Container>
+bool compareFocusChain(QGraphicsView *view, const Container &c,
+ QByteArray *errorMessage)
+{
+ return compareFocusChain(view, c.constBegin(), c.constEnd(), errorMessage);
+}
+
void tst_QGraphicsWidget::setTabOrderAndReparent()
{
QGraphicsScene scene;
@@ -1466,78 +1478,68 @@ void tst_QGraphicsWidget::setTabOrderAndReparent()
QVERIFY(QTest::qWaitForWindowActive(&view));
QCOMPARE(QApplication::activeWindow(), (QWidget*)&view);
- int i;
- QGraphicsWidget *w1, *w2, *w3, *w4;
- for (i = 1; i < 4; ++i) {
- QGraphicsWidget *wid = new QGraphicsWidget;
- wid->setFocusPolicy(Qt::StrongFocus);
- wid->setData(0, QLatin1Char('w') + QString::number(i));
- scene.addItem(wid);
- if (i == 1)
- w1 = wid;
- else if (i == 2)
- w2 = wid;
- else if (i == 3)
- w3 = wid;
- }
-
- w1->setFocus();
- QTRY_VERIFY(w1->hasFocus());
- QVERIFY(compareFocusChain(&view, QList<QGraphicsItem*>() << w1 << w2 << w3));
+ QGraphicsWidget *w[4];
+ for (int i = 0; i < 3; ++i) {
+ w[i] = new QGraphicsWidget;
+ w[i]->setFocusPolicy(Qt::StrongFocus);
+ w[i]->setData(0, 'w' + QByteArray::number(i + 1));
+ scene.addItem(w[i]);
+ }
+
+ w[0]->setFocus();
+ QTRY_VERIFY(w[0]->hasFocus());
+ QByteArray errorMessage;
+ QVERIFY2(compareFocusChain(&view, w, w + 3, &errorMessage), errorMessage.constData());
QGraphicsWidget *p = new QGraphicsWidget;
p->setData(0, QLatin1String("parent"));
p->setFocusPolicy(Qt::StrongFocus);
- w1->setFocus();
- QVERIFY(compareFocusChain(&view, QList<QGraphicsItem*>() << w1 << w2 << w3));
+ w[0]->setFocus();
+ QVERIFY2(compareFocusChain(&view, w, w + 3, &errorMessage), errorMessage.constData());
- w1->setParentItem(p);
- w2->setFocus();
- QVERIFY(compareFocusChain(&view, QList<QGraphicsItem*>() << w2 << w3));
+ w[0]->setParentItem(p);
+ w[1]->setFocus();
+ QVERIFY2(compareFocusChain(&view, w + 1, w + 3, &errorMessage), errorMessage.constData());
- w2->setParentItem(p);
- w3->setFocus();
- QVERIFY(compareFocusChain(&view, QList<QGraphicsItem*>() << w3));
- w3->setParentItem(p);
+ w[1]->setParentItem(p);
+ w[2]->setFocus();
+ QVERIFY2(compareFocusChain(&view, w + 2, w + 3, &errorMessage), errorMessage.constData());
+ w[2]->setParentItem(p);
QCOMPARE(scene.focusItem(), static_cast<QGraphicsItem*>(0));
scene.addItem(p);
p->setFocus();
- QVERIFY(compareFocusChain(&view, QList<QGraphicsItem*>() << p << w1 << w2 << w3));
+ QVERIFY2(compareFocusChain(&view, QGraphicsItemList() << p << w[0] << w[1] << w[2],
+ &errorMessage), errorMessage.constData());
delete p;
- for (i = 1; i < 5; ++i) {
- QGraphicsWidget *wid = new QGraphicsWidget;
- wid->setFocusPolicy(Qt::StrongFocus);
- wid->setData(0, QLatin1Char('w') + QString::number(i));
- scene.addItem(wid);
- if (i == 1)
- w1 = wid;
- else if (i == 2)
- w2 = wid;
- else if (i == 3)
- w3 = wid;
- else if (i == 4)
- w4 = wid;
- }
- w4->setParentItem(w1);
- QGraphicsWidget::setTabOrder(w1, w4);
- w1->setFocus();
- QVERIFY(compareFocusChain(&view, QList<QGraphicsItem*>() << w1 << w4 << w2 << w3));
+ for (int i = 0; i < 4; ++i) {
+ w[i] = new QGraphicsWidget;
+ w[i]->setFocusPolicy(Qt::StrongFocus);
+ w[i]->setData(0, 'w' + QByteArray::number(i + 1));
+ scene.addItem(w[i]);
+ }
+
+ w[3]->setParentItem(w[0]);
+ QGraphicsWidget::setTabOrder(w[0], w[3]);
+ w[0]->setFocus();
+ QVERIFY2(compareFocusChain(&view, QGraphicsItemList() << w[0] << w[3] << w[1] << w[2],
+ &errorMessage), errorMessage.constData());
p = new QGraphicsWidget;
p->setData(0, QLatin1String("parent"));
p->setFocusPolicy(Qt::StrongFocus);
- w1->setParentItem(p);
- w2->setFocus();
- QVERIFY(compareFocusChain(&view, QList<QGraphicsItem*>() << w2 << w3));
+ w[0]->setParentItem(p);
+ w[1]->setFocus();
+ QVERIFY2(compareFocusChain(&view, w + 1, w + 3, &errorMessage), errorMessage.constData());
scene.addItem(p);
- w2->setFocus();
- QVERIFY(compareFocusChain(&view, QList<QGraphicsItem*>() << w2 << w3 << p << w1 << w4));
+ w[1]->setFocus();
+ QVERIFY2(compareFocusChain(&view, QGraphicsItemList() << w[1] << w[2] << p << w[0] << w[3],
+ &errorMessage), errorMessage.constData());
}
void tst_QGraphicsWidget::topLevelWidget_data()
@@ -1728,13 +1730,15 @@ void tst_QGraphicsWidget::verifyFocusChain()
w1_4->setGeometry(75,0,25, 25);
scene.addItem(w1_4);
QTRY_VERIFY(w1_3->hasFocus());
- QTRY_VERIFY(compareFocusChain(view, QList<QGraphicsItem*>() << w1_3 << w1_4));
+ QByteArray errorMessage;
+ const QGraphicsItemList expected = QGraphicsItemList() << w1_3 << w1_4;
+ QTRY_VERIFY2(compareFocusChain(view, expected, &errorMessage), errorMessage.constData());
QTest::keyPress(QApplication::focusWidget(), Qt::Key_Backtab);
QTRY_VERIFY(lineEdit->hasFocus());
// tabFocusFirst should now point to w1_3
QTest::keyPress(QApplication::focusWidget(), Qt::Key_Tab);
QTRY_VERIFY(w1_3->hasFocus());
- QTRY_VERIFY(compareFocusChain(view, QList<QGraphicsItem*>() << w1_3 << w1_4));
+ QTRY_VERIFY2(compareFocusChain(view, expected, &errorMessage), errorMessage.constData());
}
}