summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathias Hasselmann <mathias.hasselmann@kdab.com>2013-11-03 11:04:45 +0100
committerMathias Hasselmann <mathias.hasselmann@kdab.com>2013-11-03 11:04:45 +0100
commita9c9cac38edfdaa7b1cbf67a0c867281a2fe4760 (patch)
tree63138ac5b5819daa827d5e137a7aaae197b48421
parent581cb0979eddc6cb7608b60772daa7ab78373ccb (diff)
downloadqtquickstreamer-a9c9cac38edfdaa7b1cbf67a0c867281a2fe4760.tar.gz
qtquickstreamer-a9c9cac38edfdaa7b1cbf67a0c867281a2fe4760.tar.xz
Add basic metaobject test
-rw-r--r--src/QuickStreamer/object.cpp4
-rw-r--r--tests/tests.pri15
-rw-r--r--tests/tests.pro4
-rw-r--r--tests/tst_metaobject/tst_metaobject.pro9
-rw-r--r--tests/tst_metaobject/tst_metaobjecttest.cpp59
-rw-r--r--tests/tst_qml/tst_qml.pro12
6 files changed, 89 insertions, 14 deletions
diff --git a/src/QuickStreamer/object.cpp b/src/QuickStreamer/object.cpp
index 62a8c45..1e0746e 100644
--- a/src/QuickStreamer/object.cpp
+++ b/src/QuickStreamer/object.cpp
@@ -543,7 +543,7 @@ const QMetaObject *Object::metaObject() const
void *Object::qt_metacast(const char *className)
{
- qDebug("%s: %s", Q_FUNC_INFO, className);
+ qDebug("%s: %s %p", Q_FUNC_INFO, className, this);
if (className == Q_NULLPTR)
return Q_NULLPTR;
@@ -551,7 +551,7 @@ void *Object::qt_metacast(const char *className)
if (strcmp(className, G_OBJECT_TYPE_NAME(m_target)) == 0)
return this;
if (strcmp(className, QQmlParserStatus_iid) == 0)
- return this;
+ return static_cast<QQmlParserStatus *>(this);
return QObject::qt_metacast(className);
}
diff --git a/tests/tests.pri b/tests/tests.pri
new file mode 100644
index 0000000..fd2a1d7
--- /dev/null
+++ b/tests/tests.pri
@@ -0,0 +1,15 @@
+TEMPLATE = app
+
+CONFIG += c++11 console testcase
+CONFIG -= app_bundle
+
+QT = core quick qmltest testlib
+
+DEFINES += \
+ TOP_OUTDIR=\\\"$$TOP_OUTDIR/\\\" \
+ TOP_SRCDIR=\\\"$$TOP_SRCDIR/\\\" \
+ OUTDIR=\\\"$$OUT_PWD/\\\" \
+ SRCDIR=\\\"$$PWD/\\\"
+
+INCLUDEPATH += $$TOP_SRCDIR/src
+message($$TOP_SRCDIR/src)
diff --git a/tests/tests.pro b/tests/tests.pro
index 075dbe5..da8e580 100644
--- a/tests/tests.pro
+++ b/tests/tests.pro
@@ -1,6 +1,8 @@
TEMPLATE = subdirs
SUBDIRS += \
+ tst_metaobject \
tst_qml
-# tst_wrapping \
+OTHER_FILES += \
+ tests.pri
diff --git a/tests/tst_metaobject/tst_metaobject.pro b/tests/tst_metaobject/tst_metaobject.pro
new file mode 100644
index 0000000..f42ab91
--- /dev/null
+++ b/tests/tst_metaobject/tst_metaobject.pro
@@ -0,0 +1,9 @@
+include(../tests.pri)
+
+CONFIG += link_pkgconfig
+PKGCONFIG += gstreamer-1.0
+
+LIBS += -L$$TOP_OUTDIR/src/QuickStreamer -lquickstreamerplugin
+
+SOURCES += \
+ tst_metaobjecttest.cpp
diff --git a/tests/tst_metaobject/tst_metaobjecttest.cpp b/tests/tst_metaobject/tst_metaobjecttest.cpp
new file mode 100644
index 0000000..9a85e03
--- /dev/null
+++ b/tests/tst_metaobject/tst_metaobjecttest.cpp
@@ -0,0 +1,59 @@
+#include "QuickStreamer/object.h"
+
+#include <gst/gst.h>
+
+#include <QCoreApplication>
+#include <QQmlParserStatus>
+#include <QtTest>
+
+using QQuickStreamer::Object;
+
+class MetaObjectTest : public QObject
+{
+ Q_OBJECT
+
+public:
+ MetaObjectTest()
+ {
+ }
+
+private slots:
+ void init()
+ {
+ gst_init(Q_NULLPTR, Q_NULLPTR);
+ QVERIFY(Object::registerObjectClass(GST_TYPE_PIPELINE));
+ }
+
+ void testClassName()
+ {
+ Object item(GST_OBJECT(gst_pipeline_new(Q_NULLPTR)));
+ QCOMPARE(item.metaObject()->className(), "GstPipeline");
+ }
+
+ void testProperties()
+ {
+ Object item(GST_OBJECT(gst_pipeline_new(Q_NULLPTR)));
+
+ const int propertyIndex = item.metaObject()->indexOfProperty("name");
+
+ QVERIFY(propertyIndex >= 0);
+
+ const auto &property = item.metaObject()->property(propertyIndex);
+
+ QVERIFY(property.isReadable());
+ QVERIFY(property.isWritable());
+ QVERIFY(property.hasNotifySignal());
+ QCOMPARE(property.typeName(), "QString");
+ QCOMPARE(property.name(), "name");
+ }
+
+ void testQObjectCast()
+ {
+ Object item(GST_OBJECT(gst_pipeline_new(Q_NULLPTR)));
+ QCOMPARE(qobject_cast<QQmlParserStatus *>(&item), &item);
+ }
+};
+
+QTEST_MAIN(MetaObjectTest)
+
+#include "tst_metaobjecttest.moc"
diff --git a/tests/tst_qml/tst_qml.pro b/tests/tst_qml/tst_qml.pro
index b93a194..b0b7e01 100644
--- a/tests/tst_qml/tst_qml.pro
+++ b/tests/tst_qml/tst_qml.pro
@@ -1,14 +1,4 @@
-TEMPLATE = app
-TARGET = tst_qmltest
-
-QT = core qmltest
-
-CONFIG += console testcase
-CONFIG -= app_bundle
-
-DEFINES += \
- TOP_OUTDIR=\\\"$$TOP_OUTDIR/\\\" \
- SRCDIR=\\\"$$PWD/\\\"
+include(../tests.pri)
SOURCES += \
tst_qmltest.cpp