diff options
Diffstat (limited to 'tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp')
-rw-r--r-- | tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp | 168 |
1 files changed, 72 insertions, 96 deletions
diff --git a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp index ec2203e615..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 @@ -77,12 +79,6 @@ protected: class tst_QGraphicsWidget : public QObject { Q_OBJECT -public slots: - void initTestCase(); - void cleanupTestCase(); - void init(); - void cleanup(); - private slots: void qgraphicswidget(); @@ -262,28 +258,6 @@ protected: } }; -// This will be called before the first test function is executed. -// It is only called once. -void tst_QGraphicsWidget::initTestCase() -{ -} - -// This will be called after the last test function is executed. -// It is only called once. -void tst_QGraphicsWidget::cleanupTestCase() -{ -} - -// This will be called before each test function is executed. -void tst_QGraphicsWidget::init() -{ -} - -// This will be called after every test function. -void tst_QGraphicsWidget::cleanup() -{ -} - class SizeHinter : public QGraphicsWidget { public: @@ -588,7 +562,7 @@ void tst_QGraphicsWidget::focusPolicy_data() QTest::addColumn<Qt::FocusPolicy>("focusPolicy2"); for (int i = 0; i < 25; ++i) { - QTestData &data = QTest::newRow(QString("%1").arg(i).toLatin1()); + QTestData &data = QTest::newRow(QByteArray::number(i).constData()); switch(i % 5) { case 0: data << Qt::TabFocus; break; case 1: data << Qt::ClickFocus; break; @@ -1108,7 +1082,7 @@ void tst_QGraphicsWidget::initStyleOption() view.setAlignment(Qt::AlignTop | Qt::AlignLeft); SubQGraphicsWidget *widget = new SubQGraphicsWidget; - widget->setAcceptsHoverEvents(true); + widget->setAcceptHoverEvents(true); QStyleOption option; scene.addItem(widget); @@ -1464,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; @@ -1494,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, QString::fromLatin1("w%1").arg(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, QString::fromLatin1("w%1").arg(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() @@ -1756,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()); } } @@ -2090,12 +2066,12 @@ void tst_QGraphicsWidget::task236127_bspTreeIndexFails() view.show(); QVERIFY(QTest::qWaitForWindowExposed(&view)); - QTRY_VERIFY(!scene.itemAt(25, 25)); + QTRY_VERIFY(scene.items(QPointF(25, 25)).isEmpty()); widget->setGeometry(0, 112, 360, 528); - QTRY_COMPARE(scene.itemAt(15, 120), (QGraphicsItem *)widget); + QTRY_COMPARE(scene.items(QPointF(15, 120)).value(0, Q_NULLPTR), (QGraphicsItem *)widget); widget2->setGeometry(0, 573, 360, 67); - QTRY_COMPARE(scene.itemAt(15, 120), (QGraphicsItem *)widget); - QTRY_COMPARE(scene.itemAt(50, 585), (QGraphicsItem *)widget2); + QTRY_COMPARE(scene.items(QPointF(15, 120)).value(0, Q_NULLPTR), (QGraphicsItem *)widget); + QTRY_COMPARE(scene.items(QPointF(50, 585)).value(0, Q_NULLPTR), (QGraphicsItem *)widget2); } void tst_QGraphicsWidget::defaultSize() |