summaryrefslogtreecommitdiffstats
path: root/tests/auto/declarative/qmlgraphicsrepeater
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/declarative/qmlgraphicsrepeater')
-rw-r--r--tests/auto/declarative/qmlgraphicsrepeater/data/properties.qml11
-rw-r--r--tests/auto/declarative/qmlgraphicsrepeater/tst_qmlgraphicsrepeater.cpp71
2 files changed, 63 insertions, 19 deletions
diff --git a/tests/auto/declarative/qmlgraphicsrepeater/data/properties.qml b/tests/auto/declarative/qmlgraphicsrepeater/data/properties.qml
new file mode 100644
index 0000000..550ce8d
--- /dev/null
+++ b/tests/auto/declarative/qmlgraphicsrepeater/data/properties.qml
@@ -0,0 +1,11 @@
+import Qt 4.6
+
+Row {
+ Repeater {
+ objectName: "repeater"
+ model: 5
+ Text {
+ text: "I'm item " + index
+ }
+ }
+} \ No newline at end of file
diff --git a/tests/auto/declarative/qmlgraphicsrepeater/tst_qmlgraphicsrepeater.cpp b/tests/auto/declarative/qmlgraphicsrepeater/tst_qmlgraphicsrepeater.cpp
index 4297901..9e3a028 100644
--- a/tests/auto/declarative/qmlgraphicsrepeater/tst_qmlgraphicsrepeater.cpp
+++ b/tests/auto/declarative/qmlgraphicsrepeater/tst_qmlgraphicsrepeater.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
@@ -38,12 +38,20 @@
** $QT_END_LICENSE$
**
****************************************************************************/
+
#include <QtTest/QtTest>
+#include <QtTest/QSignalSpy>
#include <private/qlistmodelinterface_p.h>
-#include <qmlview.h>
+#include <QtDeclarative/qmlengine.h>
+#include <QtDeclarative/qmlview.h>
+#include <QtDeclarative/qmlcontext.h>
#include <private/qmlgraphicsrepeater_p.h>
#include <private/qmlgraphicstext_p.h>
-#include <qmlcontext.h>
+
+inline QUrl TEST_FILE(const QString &filename)
+{
+ return QUrl::fromLocalFile(QLatin1String(SRCDIR) + QLatin1String("/data/") + filename);
+}
class tst_QmlGraphicsRepeater : public QObject
{
@@ -57,11 +65,12 @@ private slots:
void stringList();
void dataModel();
void itemModel();
+ void properties();
private:
QmlView *createView(const QString &filename);
template<typename T>
- T *findItem(QmlGraphicsItem *parent, const QString &id);
+ T *findItem(QGraphicsObject *parent, const QString &id);
};
class TestObject : public QObject
@@ -165,11 +174,11 @@ void tst_QmlGraphicsRepeater::numberModel()
canvas->execute();
qApp->processEvents();
- QmlGraphicsRepeater *repeater = findItem<QmlGraphicsRepeater>(canvas->root(), "repeater");
+ QmlGraphicsRepeater *repeater = findItem<QmlGraphicsRepeater>(canvas->rootObject(), "repeater");
QVERIFY(repeater != 0);
QCOMPARE(repeater->parentItem()->childItems().count(), 5+1);
- QMetaObject::invokeMethod(canvas->root(), "checkProperties");
+ QMetaObject::invokeMethod(canvas->rootObject(), "checkProperties");
QVERIFY(testObject->error() == false);
delete canvas;
@@ -191,7 +200,7 @@ void tst_QmlGraphicsRepeater::objectList()
canvas->execute();
qApp->processEvents();
- QmlGraphicsRepeater *repeater = findItem<QmlGraphicsRepeater>(canvas->root(), "repeater");
+ QmlGraphicsRepeater *repeater = findItem<QmlGraphicsRepeater>(canvas->rootObject(), "repeater");
QVERIFY(repeater != 0);
QCOMPARE(repeater->property("errors").toInt(), 0);//If this fails either they are out of order or can't find the object's data
QCOMPARE(repeater->property("instantiated").toInt(), 100);
@@ -218,10 +227,10 @@ void tst_QmlGraphicsRepeater::stringList()
canvas->execute();
qApp->processEvents();
- QmlGraphicsRepeater *repeater = findItem<QmlGraphicsRepeater>(canvas->root(), "repeater");
+ QmlGraphicsRepeater *repeater = findItem<QmlGraphicsRepeater>(canvas->rootObject(), "repeater");
QVERIFY(repeater != 0);
- QmlGraphicsItem *container = findItem<QmlGraphicsItem>(canvas->root(), "container");
+ QmlGraphicsItem *container = findItem<QmlGraphicsItem>(canvas->rootObject(), "container");
QVERIFY(container != 0);
QCOMPARE(container->childItems().count(), data.count() + 3);
@@ -271,10 +280,10 @@ void tst_QmlGraphicsRepeater::dataModel()
canvas->execute();
qApp->processEvents();
- QmlGraphicsRepeater *repeater = findItem<QmlGraphicsRepeater>(canvas->root(), "repeater");
+ QmlGraphicsRepeater *repeater = findItem<QmlGraphicsRepeater>(canvas->rootObject(), "repeater");
QVERIFY(repeater != 0);
- QmlGraphicsItem *container = findItem<QmlGraphicsItem>(canvas->root(), "container");
+ QmlGraphicsItem *container = findItem<QmlGraphicsItem>(canvas->rootObject(), "container");
QVERIFY(container != 0);
QCOMPARE(container->childItems().count(), 4);
@@ -296,16 +305,16 @@ void tst_QmlGraphicsRepeater::itemModel()
canvas->execute();
qApp->processEvents();
- QmlGraphicsRepeater *repeater = findItem<QmlGraphicsRepeater>(canvas->root(), "repeater");
+ QmlGraphicsRepeater *repeater = findItem<QmlGraphicsRepeater>(canvas->rootObject(), "repeater");
QVERIFY(repeater != 0);
- QmlGraphicsItem *container = findItem<QmlGraphicsItem>(canvas->root(), "container");
+ QmlGraphicsItem *container = findItem<QmlGraphicsItem>(canvas->rootObject(), "container");
QVERIFY(container != 0);
QCOMPARE(container->childItems().count(), 1);
testObject->setUseModel(true);
- QMetaObject::invokeMethod(canvas->root(), "checkProperties");
+ QMetaObject::invokeMethod(canvas->rootObject(), "checkProperties");
QVERIFY(testObject->error() == false);
QCOMPARE(container->childItems().count(), 4);
@@ -317,22 +326,46 @@ void tst_QmlGraphicsRepeater::itemModel()
delete canvas;
}
+void tst_QmlGraphicsRepeater::properties()
+{
+ QmlEngine engine;
+ QmlComponent component(&engine, TEST_FILE("/properties.qml"));
+
+ QmlGraphicsItem *rootObject = qobject_cast<QmlGraphicsItem*>(component.create());
+ QVERIFY(rootObject);
+
+ QmlGraphicsRepeater *repeater = findItem<QmlGraphicsRepeater>(rootObject, "repeater");
+ QVERIFY(repeater);
+
+ QSignalSpy modelSpy(repeater, SIGNAL(modelChanged()));
+ repeater->setModel(3);
+ QCOMPARE(modelSpy.count(),1);
+ repeater->setModel(3);
+ QCOMPARE(modelSpy.count(),1);
+
+ QSignalSpy delegateSpy(repeater, SIGNAL(delegateChanged()));
+
+ QmlComponent rectComponent(&engine);
+ rectComponent.setData("import Qt 4.6; Rectangle {}", QUrl::fromLocalFile(""));
+
+ repeater->setDelegate(&rectComponent);
+ QCOMPARE(delegateSpy.count(),1);
+ repeater->setDelegate(&rectComponent);
+ QCOMPARE(delegateSpy.count(),1);
+}
QmlView *tst_QmlGraphicsRepeater::createView(const QString &filename)
{
QmlView *canvas = new QmlView(0);
canvas->setFixedSize(240,320);
- QFile file(filename);
- file.open(QFile::ReadOnly);
- QString qml = file.readAll();
- canvas->setQml(qml, filename);
+ canvas->setSource(QUrl::fromLocalFile(filename));
return canvas;
}
template<typename T>
-T *tst_QmlGraphicsRepeater::findItem(QmlGraphicsItem *parent, const QString &objectName)
+T *tst_QmlGraphicsRepeater::findItem(QGraphicsObject *parent, const QString &objectName)
{
const QMetaObject &mo = T::staticMetaObject;
if (mo.cast(parent) && (objectName.isEmpty() || parent->objectName() == objectName))