aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-04-26 14:12:14 +0200
committerLiang Qi <liang.qi@qt.io>2016-05-02 13:14:39 +0000
commit5caa2d03c193f39f9094703d4277122f51a31345 (patch)
treec2d8a66771aa3d39537af5e2eb89cc638102fa11 /tests
parent434750f1a6cd78b595933210f41e1bf3ab3bd51b (diff)
Quick: expose movementDirection of PathView
It is needed by the behavior of TabBar in universal style in QtQC2. [ChangeLog][QtQuick][PathView] Added movementDirection property Change-Id: Iedc214a12e7336e52125ec82b9ded45502905978 Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/quick/qquickpathview/data/movementDirection.qml43
-rw-r--r--tests/auto/quick/qquickpathview/tst_qquickpathview.cpp68
2 files changed, 111 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickpathview/data/movementDirection.qml b/tests/auto/quick/qquickpathview/data/movementDirection.qml
new file mode 100644
index 0000000000..fce914dd68
--- /dev/null
+++ b/tests/auto/quick/qquickpathview/data/movementDirection.qml
@@ -0,0 +1,43 @@
+import QtQuick 2.0
+
+Item {
+ id: root
+ width: 320; height: 480
+
+ PathView {
+ id: view
+ objectName: "view"
+ anchors.fill: parent
+
+ model: ListModel {
+ ListElement { lColor: "red" }
+ ListElement { lColor: "green" }
+ ListElement { lColor: "yellow" }
+ ListElement { lColor: "blue" }
+ ListElement { lColor: "purple" }
+ ListElement { lColor: "gray" }
+ ListElement { lColor: "brown" }
+ ListElement { lColor: "thistle" }
+ }
+
+ delegate: Component {
+ id: photoDelegate
+ Rectangle {
+ id: wrapper
+ objectName: "wrapper"
+ width: 40; height: 40; color: lColor
+
+ Text { text: index }
+ }
+ }
+
+ snapMode: PathView.SnapToItem
+ highlightMoveDuration: 1000
+ path: Path {
+ startX: 0+20; startY: root.height/2
+ PathLine { x: root.width*2; y: root.height/2 }
+ }
+
+ Text { text: "Offset: " + view.offset }
+ }
+}
diff --git a/tests/auto/quick/qquickpathview/tst_qquickpathview.cpp b/tests/auto/quick/qquickpathview/tst_qquickpathview.cpp
index 51c772f540..6761313210 100644
--- a/tests/auto/quick/qquickpathview/tst_qquickpathview.cpp
+++ b/tests/auto/quick/qquickpathview/tst_qquickpathview.cpp
@@ -137,6 +137,8 @@ private slots:
void jsArrayChange();
void qtbug42716();
void addCustomAttribute();
+ void movementDirection_data();
+ void movementDirection();
};
class TestObject : public QObject
@@ -2383,6 +2385,72 @@ void tst_QQuickPathView::addCustomAttribute()
window->show();
}
+void tst_QQuickPathView::movementDirection_data()
+{
+ QTest::addColumn<QQuickPathView::MovementDirection>("movementdirection");
+ QTest::addColumn<int>("toidx");
+ QTest::addColumn<qreal>("fromoffset");
+ QTest::addColumn<qreal>("tooffset");
+
+ QTest::newRow("default-shortest") << QQuickPathView::Shortest << 3 << 8.0 << 5.0;
+ QTest::newRow("negative") << QQuickPathView::Negative << 2 << 0.0 << 6.0;
+ QTest::newRow("positive") << QQuickPathView::Positive << 3 << 8.0 << 5.0;
+
+}
+
+static void verify_offsets(QQuickPathView *pathview, int toidx, qreal fromoffset, qreal tooffset)
+{
+ pathview->setCurrentIndex(toidx);
+ bool started = false;
+ qreal first, second;
+ QTest::qWait(100);
+ first = pathview->offset();
+ while (1) {
+ QTest::qWait(10); // highlightMoveDuration: 1000
+ second = pathview->offset();
+ if (!started && second != first) { // animation started
+ started = true;
+ break;
+ }
+ }
+
+ if (tooffset > fromoffset) {
+ QVERIFY(fromoffset <= first);
+ QVERIFY(first <= second);
+ QVERIFY(second <= tooffset);
+ } else {
+ QVERIFY(fromoffset >= first);
+ QVERIFY(first >= second);
+ QVERIFY(second >= tooffset);
+ }
+ QTRY_COMPARE(pathview->offset(), tooffset);
+}
+
+void tst_QQuickPathView::movementDirection()
+{
+ QFETCH(QQuickPathView::MovementDirection, movementdirection);
+ QFETCH(int, toidx);
+ QFETCH(qreal, fromoffset);
+ QFETCH(qreal, tooffset);
+
+ QScopedPointer<QQuickView> window(createView());
+ QQuickViewTestUtil::moveMouseAway(window.data());
+ window->setSource(testFileUrl("movementDirection.qml"));
+ window->show();
+ window->requestActivate();
+ QVERIFY(QTest::qWaitForWindowActive(window.data()));
+ QCOMPARE(window.data(), qGuiApp->focusWindow());
+
+ QQuickPathView *pathview = window->rootObject()->findChild<QQuickPathView*>("view");
+ QVERIFY(pathview != 0);
+ QVERIFY(pathview->offset() == 0.0);
+ QVERIFY(pathview->currentIndex() == 0);
+ pathview->setMovementDirection(movementdirection);
+ QVERIFY(pathview->movementDirection() == movementdirection);
+
+ verify_offsets(pathview, toidx, fromoffset, tooffset);
+}
+
QTEST_MAIN(tst_QQuickPathView)
#include "tst_qquickpathview.moc"