summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp56
-rw-r--r--tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h21
2 files changed, 61 insertions, 16 deletions
diff --git a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
index 4a09dca544..602de58b2c 100644
--- a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
+++ b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
@@ -1057,6 +1057,38 @@ void tst_QDBusConnection::multipleInterfacesInQObject()
QVERIFY_HOOKCALLED();
}
+void tst_QDBusConnection::connectSignal()
+{
+ if (!QCoreApplication::instance())
+ QSKIP("Test requires a QCoreApplication");
+
+ QDBusConnection con = QDBusConnection::sessionBus();
+
+ QDBusMessage signal = QDBusMessage::createSignal("/", "org.qtproject.TestCase",
+ "oneSignal");
+ signal << "one parameter";
+
+ SignalReceiver recv;
+ QVERIFY(con.connect(con.baseService(), signal.path(), signal.interface(),
+ signal.member(), &recv, SLOT(oneSlot(QString))));
+ QVERIFY(con.send(signal));
+ QTest::qWait(100);
+ QCOMPARE(recv.argumentReceived, signal.arguments().at(0).toString());
+ QCOMPARE(recv.signalsReceived, 1);
+
+ // disconnect and try with a signature
+ recv.argumentReceived.clear();
+ recv.signalsReceived = 0;
+ QVERIFY(con.disconnect(con.baseService(), signal.path(), signal.interface(),
+ signal.member(), &recv, SLOT(oneSlot(QString))));
+ QVERIFY(con.connect(con.baseService(), signal.path(), signal.interface(),
+ signal.member(), "s", &recv, SLOT(oneSlot(QString))));
+ QVERIFY(con.send(signal));
+ QTest::qWait(100);
+ QCOMPARE(recv.argumentReceived, signal.arguments().at(0).toString());
+ QCOMPARE(recv.signalsReceived, 1);
+}
+
void tst_QDBusConnection::slotsWithLessParameters()
{
if (!QCoreApplication::instance())
@@ -1068,25 +1100,27 @@ void tst_QDBusConnection::slotsWithLessParameters()
"oneSignal");
signal << "one parameter";
- signalsReceived = 0;
+ SignalReceiver recv;
QVERIFY(con.connect(con.baseService(), signal.path(), signal.interface(),
- signal.member(), this, SLOT(oneSlot())));
+ signal.member(), &recv, SLOT(oneSlot())));
QVERIFY(con.send(signal));
QTest::qWait(100);
- QCOMPARE(signalsReceived, 1);
+ QCOMPARE(recv.argumentReceived, QString());
+ QCOMPARE(recv.signalsReceived, 1);
// disconnect and try with a signature
- signalsReceived = 0;
+ recv.signalsReceived = 0;
QVERIFY(con.disconnect(con.baseService(), signal.path(), signal.interface(),
- signal.member(), this, SLOT(oneSlot())));
+ signal.member(), &recv, SLOT(oneSlot())));
QVERIFY(con.connect(con.baseService(), signal.path(), signal.interface(),
- signal.member(), "s", this, SLOT(oneSlot())));
+ signal.member(), "s", &recv, SLOT(oneSlot())));
QVERIFY(con.send(signal));
QTest::qWait(100);
- QCOMPARE(signalsReceived, 1);
+ QCOMPARE(recv.argumentReceived, QString());
+ QCOMPARE(recv.signalsReceived, 1);
}
-void tst_QDBusConnection::secondCallWithCallback()
+void SignalReceiver::secondCallWithCallback()
{
QDBusConnection con = QDBusConnection::sessionBus();
QDBusMessage msg = QDBusMessage::createMethodCall(con.baseService(), "/test", QString(),
@@ -1106,12 +1140,12 @@ void tst_QDBusConnection::nestedCallWithCallback()
QDBusMessage msg = QDBusMessage::createMethodCall(connection.baseService(), "/test", QString(),
"ThisFunctionDoesntExist");
- signalsReceived = 0;
- connection.callWithCallback(msg, this, SLOT(exitLoop()), SLOT(secondCallWithCallback()), 10);
+ SignalReceiver recv;
+ connection.callWithCallback(msg, &recv, SLOT(exitLoop()), SLOT(secondCallWithCallback()), 10);
QTestEventLoop::instance().enterLoop(15);
QVERIFY(!QTestEventLoop::instance().timeout());
- QCOMPARE(signalsReceived, 1);
+ QCOMPARE(recv.signalsReceived, 1);
QCOMPARE_HOOKCOUNT(2);
}
diff --git a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h
index b9eb0d9db7..b4d689e6f4 100644
--- a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h
+++ b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.h
@@ -69,20 +69,30 @@ public:
MyObjectWithoutInterface(QObject *parent = 0) : QObject(parent), callCount(0) {}
};
-class tst_QDBusConnection: public QObject
+class SignalReceiver : public QObject
{
Q_OBJECT
-
- int signalsReceived;
public:
- static int hookCallCount;
- tst_QDBusConnection();
+ QString argumentReceived;
+ int signalsReceived;
+ SignalReceiver() : signalsReceived(0) {}
public slots:
+ void oneSlot(const QString &arg) { ++signalsReceived; argumentReceived = arg;}
void oneSlot() { ++signalsReceived; }
void exitLoop() { ++signalsReceived; QTestEventLoop::instance().exitLoop(); }
void secondCallWithCallback();
+};
+
+class tst_QDBusConnection: public QObject
+{
+ Q_OBJECT
+
+public:
+ static int hookCallCount;
+ tst_QDBusConnection();
+public slots:
void init();
void cleanup();
@@ -115,6 +125,7 @@ private slots:
void callSelfByAnotherName();
void multipleInterfacesInQObject();
+ void connectSignal();
void slotsWithLessParameters();
void nestedCallWithCallback();