summaryrefslogtreecommitdiffstats
path: root/tests/auto/declarative
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2009-05-14 07:58:38 (GMT)
committerAaron Kennedy <aaron.kennedy@nokia.com>2009-05-14 07:58:38 (GMT)
commitf6d5b57a759133f20d9c74bf9770b1bcacbef6aa (patch)
treea91d9e6677f4683fd5a5b05daf1ea1f0323fd731 /tests/auto/declarative
parent16e8a17e7b99e7ff9f818fce79285218141821a1 (diff)
downloadQt-f6d5b57a759133f20d9c74bf9770b1bcacbef6aa.zip
Qt-f6d5b57a759133f20d9c74bf9770b1bcacbef6aa.tar.gz
Qt-f6d5b57a759133f20d9c74bf9770b1bcacbef6aa.tar.bz2
Add another binding test
Diffstat (limited to 'tests/auto/declarative')
-rw-r--r--tests/auto/declarative/qmlbindengine/testtypes.h13
-rw-r--r--tests/auto/declarative/qmlbindengine/tst_qmlbindengine.cpp55
2 files changed, 67 insertions, 1 deletions
diff --git a/tests/auto/declarative/qmlbindengine/testtypes.h b/tests/auto/declarative/qmlbindengine/testtypes.h
index 5ba6216..6a4bda6 100644
--- a/tests/auto/declarative/qmlbindengine/testtypes.h
+++ b/tests/auto/declarative/qmlbindengine/testtypes.h
@@ -11,8 +11,9 @@ class MyQmlObject : public QObject
Q_PROPERTY(bool trueProperty READ trueProperty)
Q_PROPERTY(bool falseProperty READ falseProperty)
Q_PROPERTY(QString stringProperty READ stringProperty WRITE setStringProperty NOTIFY stringChanged)
+ Q_PROPERTY(QObject *objectProperty READ objectProperty WRITE setObjectProperty NOTIFY objectChanged);
public:
- MyQmlObject(): m_methodCalled(false), m_methodIntCalled(false) {}
+ MyQmlObject(): m_methodCalled(false), m_methodIntCalled(false), m_object(0) {}
bool trueProperty() const { return true; }
bool falseProperty() const { return false; }
@@ -26,6 +27,14 @@ public:
emit stringChanged();
}
+ QObject *objectProperty() const { return m_object; }
+ void setObjectProperty(QObject *obj) {
+ if (obj == m_object)
+ return;
+ m_object = obj;
+ emit objectChanged();
+ }
+
bool methodCalled() const { return m_methodCalled; }
bool methodIntCalled() const { return m_methodIntCalled; }
@@ -34,6 +43,7 @@ signals:
void basicSignal();
void argumentSignal(int a, QString b, qreal c);
void stringChanged();
+ void objectChanged();
public slots:
void method() { m_methodCalled = true; }
@@ -45,6 +55,7 @@ private:
bool m_methodCalled;
bool m_methodIntCalled;
+ QObject *m_object;
QString m_string;
};
diff --git a/tests/auto/declarative/qmlbindengine/tst_qmlbindengine.cpp b/tests/auto/declarative/qmlbindengine/tst_qmlbindengine.cpp
index deaac00..dd82d4f 100644
--- a/tests/auto/declarative/qmlbindengine/tst_qmlbindengine.cpp
+++ b/tests/auto/declarative/qmlbindengine/tst_qmlbindengine.cpp
@@ -23,6 +23,7 @@ private slots:
void basicExpressions_data();
void arrayExpressions();
void contextPropertiesTriggerReeval();
+ void objectPropertiesTriggerReeval();
private:
QmlEngine engine;
@@ -249,6 +250,60 @@ void tst_qmlbindengine::contextPropertiesTriggerReeval()
}
+void tst_qmlbindengine::objectPropertiesTriggerReeval()
+{
+ QmlContext context(engine.rootContext());
+ MyQmlObject object1;
+ MyQmlObject object2;
+ MyQmlObject object3;
+ context.setContextProperty("testObj", &object1);
+
+ object1.setStringProperty(QLatin1String("Hello"));
+ object2.setStringProperty(QLatin1String("Dog"));
+ object3.setStringProperty(QLatin1String("Cat"));
+
+ {
+ MyExpression expr(&context, "testObj.stringProperty");
+ QCOMPARE(expr.changed, false);
+ QCOMPARE(expr.value(), QVariant("Hello"));
+
+ object1.setStringProperty(QLatin1String("World"));
+ QCOMPARE(expr.changed, true);
+ QCOMPARE(expr.value(), QVariant("World"));
+ }
+
+ {
+ MyExpression expr(&context, "testObj.objectProperty.stringProperty");
+ QCOMPARE(expr.changed, false);
+ QCOMPARE(expr.value(), QVariant());
+
+ object1.setObjectProperty(&object2);
+ QCOMPARE(expr.changed, true);
+ expr.changed = false;
+ QCOMPARE(expr.value(), QVariant("Dog"));
+
+ object1.setObjectProperty(&object3);
+ QCOMPARE(expr.changed, true);
+ expr.changed = false;
+ QCOMPARE(expr.value(), QVariant("Cat"));
+
+ object1.setObjectProperty(0);
+ QCOMPARE(expr.changed, true);
+ expr.changed = false;
+ QCOMPARE(expr.value(), QVariant());
+
+ object1.setObjectProperty(&object3);
+ QCOMPARE(expr.changed, true);
+ expr.changed = false;
+ QCOMPARE(expr.value(), QVariant("Cat"));
+
+ object3.setStringProperty("Donkey");
+ QCOMPARE(expr.changed, true);
+ expr.changed = false;
+ QCOMPARE(expr.value(), QVariant("Donkey"));
+ }
+}
+
QTEST_MAIN(tst_qmlbindengine)
#include "tst_qmlbindengine.moc"