diff options
author | kakadu <kakadu.hafanana@gmail.com> | 2013-10-24 14:55:11 +0400 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-29 23:04:18 +0100 |
commit | 4d33a38f4b11cea2123b818487ff55f0988767bc (patch) | |
tree | a1c6dc9801315b40448b630b4ad20fd53accc88f /tests/auto/qml/qqmlinstantiator/tst_qqmlinstantiator.cpp | |
parent | 3d96c688a919c3ebc0ea3822e59bbc728c68eb95 (diff) |
Fix adding created objects to instantiator.
Before all new objects were pushed into the end of QVector,
i.e. if item model changes object with low index newly created object
will be added like it has big index. So, removing objects from
instantiator was buggy.
Task-number: QTBUG-33847.
Change-Id: I49fba53a40fce72060b629f737c10b525c67cc86
Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Diffstat (limited to 'tests/auto/qml/qqmlinstantiator/tst_qqmlinstantiator.cpp')
-rw-r--r-- | tests/auto/qml/qqmlinstantiator/tst_qqmlinstantiator.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmlinstantiator/tst_qqmlinstantiator.cpp b/tests/auto/qml/qqmlinstantiator/tst_qqmlinstantiator.cpp index 3e90eb2cbe..1b31e55e2d 100644 --- a/tests/auto/qml/qqmlinstantiator/tst_qqmlinstantiator.cpp +++ b/tests/auto/qml/qqmlinstantiator/tst_qqmlinstantiator.cpp @@ -45,7 +45,9 @@ #include <QtQml/qqmlengine.h> #include <QtQml/qqmlcomponent.h> #include <QtQml/private/qqmlinstantiator_p.h> +#include <QtQml/qqmlcontext.h> #include "../../shared/util.h" +#include "stringmodel.h" class tst_qqmlinstantiator: public QQmlDataTest { @@ -58,6 +60,7 @@ private slots: void stringModel(); void activeProperty(); void intModelChange(); + void createAndRemove(); }; void tst_qqmlinstantiator::createNone() @@ -193,6 +196,27 @@ void tst_qqmlinstantiator::intModelChange() } } +void tst_qqmlinstantiator::createAndRemove() +{ + QQmlEngine engine; + QQmlComponent component(&engine, testFileUrl("createAndRemove.qml")); + StringModel *model = new StringModel("model1"); + engine.rootContext()->setContextProperty("model1", model); + QObject *rootObject = component.create(); + QVERIFY(rootObject != 0); + + QQmlInstantiator *instantiator = + qobject_cast<QQmlInstantiator*>(rootObject->findChild<QObject*>("instantiator1")); + QVERIFY(instantiator != 0); + model->drop(1); + QVector<QString> names; + names << "Beta" << "Gamma" << "Delta"; + for (int i=0; i<3; i++) { + QObject *object = instantiator->objectAt(i); + QVERIFY(object); + QCOMPARE(object->property("datum").toString(), names[i]); + } +} QTEST_MAIN(tst_qqmlinstantiator) #include "tst_qqmlinstantiator.moc" |