summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2009-06-16 05:26:08 (GMT)
committerAaron Kennedy <aaron.kennedy@nokia.com>2009-06-16 05:26:08 (GMT)
commit27f14fcbf4eeec1b5f2255e1a0ebc74a221964a1 (patch)
treeea49d1c576c1f0a6b685a0b41b19cc664e021f9a
parent6bc2a137e2b9c508d86047576907956418d292aa (diff)
downloadQt-27f14fcbf4eeec1b5f2255e1a0ebc74a221964a1.zip
Qt-27f14fcbf4eeec1b5f2255e1a0ebc74a221964a1.tar.gz
Qt-27f14fcbf4eeec1b5f2255e1a0ebc74a221964a1.tar.bz2
Autotest for extension objects
-rw-r--r--tests/auto/declarative/qmlbindengine/extensionObjects.txt8
-rw-r--r--tests/auto/declarative/qmlbindengine/testtypes.cpp36
-rw-r--r--tests/auto/declarative/qmlbindengine/testtypes.h30
-rw-r--r--tests/auto/declarative/qmlbindengine/tst_qmlbindengine.cpp16
4 files changed, 90 insertions, 0 deletions
diff --git a/tests/auto/declarative/qmlbindengine/extensionObjects.txt b/tests/auto/declarative/qmlbindengine/extensionObjects.txt
new file mode 100644
index 0000000..4c33de4
--- /dev/null
+++ b/tests/auto/declarative/qmlbindengine/extensionObjects.txt
@@ -0,0 +1,8 @@
+MyExtendedObject
+{
+ baseProperty: baseExtendedProperty
+ baseExtendedProperty: 13
+
+ coreProperty: extendedProperty
+ extendedProperty: 9
+}
diff --git a/tests/auto/declarative/qmlbindengine/testtypes.cpp b/tests/auto/declarative/qmlbindengine/testtypes.cpp
index afac27b..2f83f58 100644
--- a/tests/auto/declarative/qmlbindengine/testtypes.cpp
+++ b/tests/auto/declarative/qmlbindengine/testtypes.cpp
@@ -1,5 +1,41 @@
#include "testtypes.h"
+class BaseExtensionObject : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int baseExtendedProperty READ extendedProperty WRITE setExtendedProperty NOTIFY extendedPropertyChanged);
+public:
+ BaseExtensionObject(QObject *parent) : QObject(parent), m_value(0) {}
+
+ int extendedProperty() const { return m_value; }
+ void setExtendedProperty(int v) { m_value = v; emit extendedPropertyChanged(); }
+
+signals:
+ void extendedPropertyChanged();
+private:
+ int m_value;
+};
+
+class ExtensionObject : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int extendedProperty READ extendedProperty WRITE setExtendedProperty NOTIFY extendedPropertyChanged);
+public:
+ ExtensionObject(QObject *parent) : QObject(parent), m_value(0) {}
+
+ int extendedProperty() const { return m_value; }
+ void setExtendedProperty(int v) { m_value = v; emit extendedPropertyChanged(); }
+
+signals:
+ void extendedPropertyChanged();
+private:
+ int m_value;
+};
+
QML_DEFINE_TYPE(MyQmlObject,MyQmlObject);
QML_DEFINE_TYPE(MyDeferredObject,MyDeferredObject);
QML_DEFINE_TYPE(MyQmlContainer,MyQmlContainer);
+QML_DEFINE_EXTENDED_TYPE(MyBaseExtendedObject,MyBaseExtendedObject,BaseExtensionObject);
+QML_DEFINE_EXTENDED_TYPE(MyExtendedObject,MyExtendedObject,ExtensionObject);
+
+#include "testtypes.moc"
diff --git a/tests/auto/declarative/qmlbindengine/testtypes.h b/tests/auto/declarative/qmlbindengine/testtypes.h
index 1934fe0..df31f7a 100644
--- a/tests/auto/declarative/qmlbindengine/testtypes.h
+++ b/tests/auto/declarative/qmlbindengine/testtypes.h
@@ -148,5 +148,35 @@ private:
};
QML_DECLARE_TYPE(MyDeferredObject);
+class MyBaseExtendedObject : public QObject
+{
+Q_OBJECT
+Q_PROPERTY(int baseProperty READ baseProperty WRITE setBaseProperty);
+public:
+ MyBaseExtendedObject() : m_value(0) {}
+
+ int baseProperty() const { return m_value; }
+ void setBaseProperty(int v) { m_value = v; }
+
+private:
+ int m_value;
+};
+QML_DECLARE_TYPE(MyBaseExtendedObject);
+
+class MyExtendedObject : public MyBaseExtendedObject
+{
+Q_OBJECT
+Q_PROPERTY(int coreProperty READ coreProperty WRITE setCoreProperty);
+public:
+ MyExtendedObject() : m_value(0) {}
+
+ int coreProperty() const { return m_value; }
+ void setCoreProperty(int v) { m_value = v; }
+
+private:
+ int m_value;
+};
+QML_DECLARE_TYPE(MyExtendedObject);
+
#endif // TESTTYPES_H
diff --git a/tests/auto/declarative/qmlbindengine/tst_qmlbindengine.cpp b/tests/auto/declarative/qmlbindengine/tst_qmlbindengine.cpp
index 0ff66c4..8d3c0b4 100644
--- a/tests/auto/declarative/qmlbindengine/tst_qmlbindengine.cpp
+++ b/tests/auto/declarative/qmlbindengine/tst_qmlbindengine.cpp
@@ -37,6 +37,7 @@ private slots:
void contextPropertiesTriggerReeval();
void objectPropertiesTriggerReeval();
void deferredProperties();
+ void extensionObjects();
private:
QmlEngine engine;
@@ -355,6 +356,21 @@ void tst_qmlbindengine::deferredProperties()
QVERIFY(qmlObject != 0);
}
+void tst_qmlbindengine::extensionObjects()
+{
+ QmlComponent component(&engine, TEST_FILE("extensionObjects.txt"));
+ MyExtendedObject *object =
+ qobject_cast<MyExtendedObject *>(component.create());
+ QVERIFY(object != 0);
+ QCOMPARE(object->baseProperty(), 13);
+ QCOMPARE(object->coreProperty(), 9);
+
+ object->setProperty("extendedProperty", QVariant(11));
+ object->setProperty("baseExtendedProperty", QVariant(92));
+ QCOMPARE(object->coreProperty(), 11);
+ QCOMPARE(object->baseProperty(), 92);
+}
+
QTEST_MAIN(tst_qmlbindengine)
#include "tst_qmlbindengine.moc"