aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml/qqmlinstantiator/tst_qqmlinstantiator.cpp
diff options
context:
space:
mode:
authorkakadu <kakadu.hafanana@gmail.com>2013-10-24 14:55:11 +0400
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-29 23:04:18 +0100
commit4d33a38f4b11cea2123b818487ff55f0988767bc (patch)
treea1c6dc9801315b40448b630b4ad20fd53accc88f /tests/auto/qml/qqmlinstantiator/tst_qqmlinstantiator.cpp
parent3d96c688a919c3ebc0ea3822e59bbc728c68eb95 (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.cpp24
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"