diff options
author | Bea Lam <bea.lam@nokia.com> | 2012-01-06 14:02:10 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-13 07:54:20 +0100 |
commit | c194b012182c3ae495bb7a740f02a5a9f5b3c3b3 (patch) | |
tree | 47738d95edbb6873473738eb561e3a5b4ce6b931 /tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp | |
parent | d9ecb7345c23cff097ea1a83a829673e220b400f (diff) |
Add tests for item polish bug on Mac
On Mac OS X, if a QQuickItem triggers a polish request from
Component.onCompleted, its updatePolish() function is not called.
The tst_qquickitem::polishOnCompleted() test demonstrates this.
If a running animation is added to the polishOnCompleted.qml in the
test, the test will pass.
Task-number: QTBUG-23481, QTBUG-23480, QTBUG-21590
Change-Id: I172b12e784aa458c43c23e0ee43f034f0bd332ee
Reviewed-by: Martin Jones <martin.jones@nokia.com>
Diffstat (limited to 'tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp')
-rw-r--r-- | tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp b/tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp index e38dcf457f..7e32816599 100644 --- a/tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp +++ b/tests/auto/qtquick2/qquickitem/tst_qquickitem.cpp @@ -73,9 +73,9 @@ class TestPolishItem : public QQuickItem { Q_OBJECT public: - TestPolishItem(QQuickItem *parent) + TestPolishItem(QQuickItem *parent = 0) : QQuickItem(parent), wasPolished(false) { - QTimer::singleShot(10, this, SLOT(doPolish())); + } bool wasPolished; @@ -109,6 +109,8 @@ class tst_qquickitem : public QDeclarativeDataTest public: private slots: + void initTestCase(); + void noCanvas(); void simpleFocus(); void scopedFocus(); @@ -123,6 +125,7 @@ private slots: void mouseGrab(); void polishOutsideAnimation(); + void polishOnCompleted(); void wheelEvent_data(); void wheelEvent(); @@ -146,6 +149,12 @@ private: } }; +void tst_qquickitem::initTestCase() +{ + QDeclarativeDataTest::initTestCase(); + qmlRegisterType<TestPolishItem>("Qt.test", 1, 0, "TestPolishItem"); +} + // Focus has no effect when outside a canvas void tst_qquickitem::noCanvas() { @@ -862,12 +871,32 @@ void tst_qquickitem::polishOutsideAnimation() TestPolishItem *item = new TestPolishItem(canvas->rootItem()); item->setSize(QSizeF(200, 100)); QTest::qWait(50); + + QTimer::singleShot(10, item, SLOT(doPolish())); QTRY_VERIFY(item->wasPolished); delete item; delete canvas; } +void tst_qquickitem::polishOnCompleted() +{ + QQuickView *view = new QQuickView; + view->setSource(testFileUrl("polishOnCompleted.qml")); + view->show(); + + TestPolishItem *item = qobject_cast<TestPolishItem*>(view->rootObject()); + QVERIFY(item); + +#ifdef Q_OS_MAC + QSKIP("QTBUG-21590 view does not reliably receive polish without a running animation"); +#endif + + QTRY_VERIFY(item->wasPolished); + + delete view; +} + void tst_qquickitem::wheelEvent_data() { QTest::addColumn<bool>("visible"); |