diff options
| author | Harald Fernengel <harry@kdevelop.org> | 2005-09-23 16:24:36 +0000 | 
|---|---|---|
| committer | Harald Fernengel <harry@kdevelop.org> | 2005-09-23 16:24:36 +0000 | 
| commit | cd883ae0436e0be1234cd0cde3c2e9a8b994d0e8 (patch) | |
| tree | e911fc2383e9fc4d91cb51774e4037efa439acd2 /test | |
| parent | ac2de419da28379195da11120ddb0e19f601aa24 (diff) | |
adding an autotest and "dbus-ify" the build process and include scheme
Diffstat (limited to 'test')
| -rw-r--r-- | test/Makefile.am | 7 | ||||
| -rw-r--r-- | test/qt/Makefile.am | 26 | ||||
| -rw-r--r-- | test/qt/tst_qdbusconnection.cpp | 164 | 
3 files changed, 195 insertions, 2 deletions
| diff --git a/test/Makefile.am b/test/Makefile.am index 5f904887..a43d8f54 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -5,9 +5,12 @@ endif  if HAVE_PYTHON      PYTHON_SUBDIR=python  endif +if HAVE_QTESTLIB +    QT_SUBDIR=qt +endif -SUBDIRS=$(GLIB_SUBDIR) $(PYTHON_SUBDIR) -DIST_SUBDIRS=glib python +SUBDIRS=$(GLIB_SUBDIR) $(PYTHON_SUBDIR) $(QT_SUBDIR) +DIST_SUBDIRS=glib python qt  INCLUDES=-I$(top_srcdir) $(DBUS_TEST_CFLAGS)  diff --git a/test/qt/Makefile.am b/test/qt/Makefile.am new file mode 100644 index 00000000..553accd4 --- /dev/null +++ b/test/qt/Makefile.am @@ -0,0 +1,26 @@ +INCLUDES=-I$(top_srcdir) -I$(top_srcdir)/qt $(DBUS_CLIENT_CFLAGS) $(DBUS_QT_CFLAGS) $(DBUS_QTESTLIB_CFLAGS) -DDBUS_COMPILATION + +if DBUS_BUILD_TESTS +TEST_BINARIES=qdbusconnection +TESTS= +else +TEST_BINARIES= +TESTS= +endif + + +noinst_PROGRAMS= $(TEST_BINARIES) + +qdbusconnection_SOURCES= \ +	tst_qdbusconnection.cpp + +$(top_srcdir)/test/qt/tst_qdbusconnection.cpp: tst_qdbusconnection.moc + +TEST_LIBS=$(DBUS_QTESTLIB_LIBS) $(top_builddir)/qt/libdbus-qt-1.la + +qdbusconnection_LDADD=$(TEST_LIBS) + +CLEANFILES=tst_qdbusconnection.moc + +%.moc: %.cpp +	$(QT_MOC) $< > $@ diff --git a/test/qt/tst_qdbusconnection.cpp b/test/qt/tst_qdbusconnection.cpp new file mode 100644 index 00000000..50ed0bde --- /dev/null +++ b/test/qt/tst_qdbusconnection.cpp @@ -0,0 +1,164 @@ +#include <qcoreapplication.h> +#include <qdebug.h> + +#include <QtTest/QtTest> + +#include <qdbus.h> + +class tst_QDBusConnection: public QObject +{ +    Q_OBJECT + +private slots: +    void addConnection(); +    void connect(); +    void send(); +    void sendAsync(); +    void sendSignal(); +}; + +class QDBusSpy: public QObject +{ +    Q_OBJECT +public slots: +    void handlePing(const QString &str) { args.clear(); args << str; } +    void asyncReply(const QDBusMessage &msg) { args << msg; serial = msg.replySerialNumber(); } + +public: +    QList<QVariant> args; +    int serial; +}; + +void tst_QDBusConnection::sendSignal() +{ +    QDBusConnection con = QDBusConnection::addConnection( +            QDBusConnection::SessionBus); + +    VERIFY(con.isConnected()); + +    QDBusMessage msg = QDBusMessage::signal("/org/kde/selftest", "org.kde.selftest", +            "Ping"); +    msg << QLatin1String("ping"); + +    VERIFY(con.send(msg)); + +    QTest::wait(1000); +} + +void tst_QDBusConnection::send() +{ +    QDBusConnection con = QDBusConnection::addConnection( +            QDBusConnection::SessionBus); + +    VERIFY(con.isConnected()); + +    QDBusMessage msg = QDBusMessage::methodCall("org.freedesktop.DBus", +            "/org/freedesktop/DBus", "org.freedesktop.DBus", "ListNames"); + +    QDBusMessage reply = con.sendWithReply(msg); + +    COMPARE(reply.count(), 1); +    COMPARE(reply.at(0).typeName(), "QStringList"); +    VERIFY(reply.at(0).toStringList().contains(con.baseService())); +} + +void tst_QDBusConnection::sendAsync() +{ +    QDBusConnection con = QDBusConnection::addConnection(QDBusConnection::SessionBus); +    VERIFY(con.isConnected()); + +    QDBusSpy spy; + +    QDBusMessage msg = QDBusMessage::methodCall("org.freedesktop.DBus", +            "/org/freedesktop/DBus", "org.freedesktop.DBus", "ListNames"); +    int msgId = con.sendWithReplyAsync(msg, &spy, SLOT(asyncReply(QDBusMessage))); +    VERIFY(msgId != 0); + +    QTest::wait(1000); + +    COMPARE(spy.args.value(0).typeName(), "QStringList"); +    VERIFY(spy.args.at(0).toStringList().contains(con.baseService())); +    COMPARE(spy.serial, msgId); +} + +void tst_QDBusConnection::connect() +{ +    QDBusSpy spy; + +    QDBusConnection con = QDBusConnection::addConnection( +            QDBusConnection::SessionBus); + +    con.connect("/org/kde/selftest", "org.kde.selftest", "ping", &spy, +                 SLOT(handlePing(QString))); + +    QDBusMessage msg = QDBusMessage::signal("/org/kde/selftest", "org.kde.selftest", +            "ping"); +    msg << QLatin1String("ping"); + +    VERIFY(con.send(msg)); + +    QTest::wait(1000); + +    COMPARE(spy.args.count(), 1); +    COMPARE(spy.args.at(0).toString(), QString("ping")); +} + +void tst_QDBusConnection::addConnection() +{ +    { +        QDBusConnection con = QDBusConnection::addConnection( +                QDBusConnection::SessionBus, "bubu"); + +        VERIFY(con.isConnected()); +        VERIFY(!con.lastError().isValid()); + +        QDBusConnection con2; +        VERIFY(!con2.isConnected()); +        VERIFY(!con2.lastError().isValid()); + +        con2 = con; +        VERIFY(con.isConnected()); +        VERIFY(con2.isConnected()); +        VERIFY(!con.lastError().isValid()); +        VERIFY(!con2.lastError().isValid()); +    } + +    { +        QDBusConnection con("bubu"); +        VERIFY(con.isConnected()); +        VERIFY(!con.lastError().isValid()); +    } + +    QDBusConnection::closeConnection("bubu"); + +    { +        QDBusConnection con("bubu"); +        VERIFY(!con.isConnected()); +        VERIFY(!con.lastError().isValid()); +    } + +    { +        { +            QDBusConnection con = QDBusConnection::addConnection( +                    QDBusConnection::SessionBus); +            VERIFY(con.isConnected()); +        } + +        { +            QDBusConnection con; +            VERIFY(con.isConnected()); +            QDBusConnection::closeConnection(); +            VERIFY(con.isConnected()); +        } + +        { +            QDBusConnection con; +            VERIFY(!con.isConnected()); +        } +    } +} + +QTEST_MAIN(tst_QDBusConnection) + +#include "tst_qdbusconnection.moc" + | 
