aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquicklistview
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2018-01-30 10:42:34 +0100
committerSimon Hausmann <simon.hausmann@qt.io>2018-02-02 15:59:32 +0100
commita9a9fa0c4737017aa4fc72b467eb45645d0912f0 (patch)
tree4753218705648384e6555be0e2bf3165bfb391d9 /tests/auto/quick/qquicklistview
parenteace041161a03a849d3896af65493b7885cecc04 (diff)
parente6d4df156e9aec62054740dc99ab8ba2855eaafc (diff)
Merge remote-tracking branch 'origin/5.10' into dev
Conflicts: src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp src/qml/compiler/qqmlirbuilder.cpp src/qml/compiler/qqmlirbuilder_p.h src/qml/compiler/qqmltypecompiler.cpp src/qml/compiler/qv4codegen.cpp src/qml/compiler/qv4codegen_p.h src/qml/compiler/qv4compileddata_p.h src/qml/compiler/qv4compiler.cpp src/qml/compiler/qv4compilercontext_p.h src/qml/compiler/qv4isel_moth.cpp src/qml/compiler/qv4jsir.cpp src/qml/compiler/qv4jsir_p.h src/qml/jit/qv4isel_masm.cpp src/qml/jsruntime/qv4engine.cpp src/qml/jsruntime/qv4functionobject.cpp src/qml/jsruntime/qv4runtimecodegen.cpp src/qml/jsruntime/qv4script.cpp src/qml/jsruntime/qv4script_p.h src/qml/qml/qqmltypeloader.cpp src/quick/items/qquickanimatedimage.cpp src/quick/items/qquickanimatedimage_p_p.h src/quick/scenegraph/compressedtexture/qsgpkmhandler.cpp tests/auto/qml/qmlplugindump/qmlplugindump.pro tests/auto/qml/qmlplugindump/tst_qmlplugindump.cpp tools/qmlcachegen/qmlcachegen.cpp tools/qmljs/qmljs.cpp Done-with: Shawn Rutledge <shawn.rutledge@qt.io> Done-with: Lars Knoll <lars.knoll@qt.io> Done-with: Ulf Hermann <ulf.hermann@qt.io> Change-Id: I010e6525440a85f3b9a10bb9083f8e4352751b1d
Diffstat (limited to 'tests/auto/quick/qquicklistview')
-rw-r--r--tests/auto/quick/qquicklistview/data/addoncompleted.qml90
-rw-r--r--tests/auto/quick/qquicklistview/tst_qquicklistview.cpp47
2 files changed, 136 insertions, 1 deletions
diff --git a/tests/auto/quick/qquicklistview/data/addoncompleted.qml b/tests/auto/quick/qquicklistview/data/addoncompleted.qml
new file mode 100644
index 0000000000..57265cb2c0
--- /dev/null
+++ b/tests/auto/quick/qquicklistview/data/addoncompleted.qml
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+
+Rectangle {
+ width: 640
+ height: 480
+ color: "green"
+
+ ListModel {
+ id: listModel
+ ListElement { name: "a" }
+ ListElement { name: "b" }
+ ListElement { name: "c" }
+ ListElement { name: "d" }
+ ListElement { name: "e" }
+ ListElement { name: "f" }
+ ListElement { name: "g" }
+ ListElement { name: "h" }
+ ListElement { name: "i" }
+ ListElement { name: "j" }
+ }
+
+ ListView {
+ anchors.fill: parent
+ model: listModel
+ objectName: "view"
+
+ delegate: Rectangle {
+ height: 15
+ width: 15
+ color: "blue"
+ objectName: name
+ Component.onCompleted: {
+ if (name.length === 1 && listModel.get(index + 1).name.length === 1) {
+ for (var i = 0; i < 10; ++i)
+ listModel.insert(index + 1, {name: name + i});
+ }
+ }
+ }
+ }
+}
diff --git a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
index 8827ad0f3a..dc8c727cbe 100644
--- a/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
+++ b/tests/auto/quick/qquicklistview/tst_qquicklistview.cpp
@@ -255,6 +255,7 @@ private slots:
void QTBUG_50105();
void keyNavigationEnabled();
void QTBUG_61269_appendDuringScrollDown();
+ void QTBUG_61269_appendDuringScrollDown_data();
void QTBUG_50097_stickyHeader_positionViewAtIndex();
void QTBUG_63974_stickyHeader_positionViewAtIndex_Contain();
void itemFiltered();
@@ -263,6 +264,8 @@ private slots:
void QTBUG_34576_velocityZero();
void QTBUG_61537_modelChangesAsync();
+ void addOnCompleted();
+
private:
template <class T> void items(const QUrl &source);
template <class T> void changed(const QUrl &source);
@@ -8468,8 +8471,19 @@ void tst_QQuickListView::keyNavigationEnabled()
QCOMPARE(listView->currentIndex(), 1);
}
-void tst_QQuickListView::QTBUG_61269_appendDuringScrollDown()
+void tst_QQuickListView::QTBUG_61269_appendDuringScrollDown_data()
+{
+ QTest::addColumn<QQuickListView::SnapMode>("snapMode");
+
+ QTest::newRow("NoSnap") << QQuickListView::NoSnap;
+ QTest::newRow("SnapToItem") << QQuickListView::SnapToItem;
+ QTest::newRow("SnapOneItem") << QQuickListView::SnapOneItem;
+}
+
+void tst_QQuickListView::QTBUG_61269_appendDuringScrollDown() // AKA QTBUG-62864
{
+ QFETCH(QQuickListView::SnapMode, snapMode);
+
QScopedPointer<QQuickView> window(createView());
window->setSource(testFileUrl("appendDuringScrollDown.qml"));
window->show();
@@ -8477,6 +8491,7 @@ void tst_QQuickListView::QTBUG_61269_appendDuringScrollDown()
QVERIFY(QTest::qWaitForWindowActive(window.data()));
QQuickListView *listView = qobject_cast<QQuickListView *>(window->rootObject());
+ listView->setSnapMode(snapMode);
QQuickItem *highlightItem = listView->highlightItem();
QVERIFY(listView);
QCOMPARE(listView->isKeyNavigationEnabled(), true);
@@ -8722,6 +8737,36 @@ void tst_QQuickListView::QTBUG_61537_modelChangesAsync()
QCOMPARE(reportedCount, actualCount);
}
+void tst_QQuickListView::addOnCompleted()
+{
+ QScopedPointer<QQuickView> window(createView());
+ window->setSource(testFileUrl("addoncompleted.qml"));
+ window->show();
+ QVERIFY(QTest::qWaitForWindowExposed(window.data()));
+
+ QQuickListView *listview = findItem<QQuickListView>(window->rootObject(), "view");
+ QTRY_VERIFY(listview != 0);
+
+ QQuickItem *contentItem = listview->contentItem();
+ QTRY_VERIFY(contentItem != 0);
+
+ qreal y = -1;
+ for (char name = 'a'; name <= 'j'; ++name) {
+ for (int num = 9; num >= 0; --num) {
+ const QString objName = QString::fromLatin1("%1%2").arg(name).arg(num);
+ QQuickItem *item = findItem<QQuickItem>(contentItem, objName);
+ if (!item) {
+ QVERIFY(name >= 'd');
+ y = 9999999;
+ } else {
+ const qreal newY = item->y();
+ QVERIFY2(newY > y, objName.toUtf8().constData());
+ y = newY;
+ }
+ }
+ }
+}
+
QTEST_MAIN(tst_QQuickListView)
#include "tst_qquicklistview.moc"