summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorHarald Fernengel <harry@kdevelop.org>2005-09-23 16:24:36 +0000
committerHarald Fernengel <harry@kdevelop.org>2005-09-23 16:24:36 +0000
commitcd883ae0436e0be1234cd0cde3c2e9a8b994d0e8 (patch)
treee911fc2383e9fc4d91cb51774e4037efa439acd2 /test
parentac2de419da28379195da11120ddb0e19f601aa24 (diff)
adding an autotest and "dbus-ify" the build process and include scheme
Diffstat (limited to 'test')
-rw-r--r--test/Makefile.am7
-rw-r--r--test/qt/Makefile.am26
-rw-r--r--test/qt/tst_qdbusconnection.cpp164
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"
+