diff options
author | Mathias Hasselmann <mathias.hasselmann@kdab.com> | 2013-11-03 11:04:45 +0100 |
---|---|---|
committer | Mathias Hasselmann <mathias.hasselmann@kdab.com> | 2013-11-03 11:04:45 +0100 |
commit | a9c9cac38edfdaa7b1cbf67a0c867281a2fe4760 (patch) | |
tree | 63138ac5b5819daa827d5e137a7aaae197b48421 | |
parent | 581cb0979eddc6cb7608b60772daa7ab78373ccb (diff) | |
download | qtquickstreamer-a9c9cac38edfdaa7b1cbf67a0c867281a2fe4760.tar.gz qtquickstreamer-a9c9cac38edfdaa7b1cbf67a0c867281a2fe4760.tar.xz |
Add basic metaobject test
-rw-r--r-- | src/QuickStreamer/object.cpp | 4 | ||||
-rw-r--r-- | tests/tests.pri | 15 | ||||
-rw-r--r-- | tests/tests.pro | 4 | ||||
-rw-r--r-- | tests/tst_metaobject/tst_metaobject.pro | 9 | ||||
-rw-r--r-- | tests/tst_metaobject/tst_metaobjecttest.cpp | 59 | ||||
-rw-r--r-- | tests/tst_qml/tst_qml.pro | 12 |
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 |