tests/auto/qdbusconnection/tst_qdbusconnection.cpp
branchRCL_3
changeset 7 3f74d0d4af4c
parent 4 3b1da2848fc7
--- a/tests/auto/qdbusconnection/tst_qdbusconnection.cpp	Mon Mar 15 12:43:09 2010 +0200
+++ b/tests/auto/qdbusconnection/tst_qdbusconnection.cpp	Thu Apr 08 14:19:33 2010 +0300
@@ -80,6 +80,8 @@
     int signalsReceived;
 public slots:
     void oneSlot() { ++signalsReceived; }
+    void exitLoop() { ++signalsReceived; QTestEventLoop::instance().exitLoop(); }
+    void secondCallWithCallback();
 
 private slots:
     void noConnection();
@@ -102,6 +104,7 @@
     void multipleInterfacesInQObject();
 
     void slotsWithLessParameters();
+    void nestedCallWithCallback();
 
 public:
     QString serviceName() const { return "com.trolltech.Qt.Autotests.QDBusConnection"; }
@@ -618,6 +621,32 @@
     QCOMPARE(signalsReceived, 1);
 }
 
+void tst_QDBusConnection::secondCallWithCallback()
+{
+    qDebug("Hello");
+    QDBusConnection con = QDBusConnection::sessionBus();
+    QDBusMessage msg = QDBusMessage::createMethodCall(con.baseService(), "/test", QString(),
+                                                      "test0");
+    con.callWithCallback(msg, this, SLOT(exitLoop()), SLOT(secondCallWithCallback()));
+}
+
+void tst_QDBusConnection::nestedCallWithCallback()
+{
+    TestObject testObject;
+    QDBusConnection connection = QDBusConnection::sessionBus();
+    QVERIFY(connection.registerObject("/test", &testObject,
+            QDBusConnection::ExportAllContents));
+
+    QDBusMessage msg = QDBusMessage::createMethodCall(connection.baseService(), "/test", QString(),
+                                                      "ThisFunctionDoesntExist");
+    signalsReceived = 0;
+
+    connection.callWithCallback(msg, this, SLOT(exitLoop()), SLOT(secondCallWithCallback()), 10);
+    QTestEventLoop::instance().enterLoop(15);
+    QVERIFY(!QTestEventLoop::instance().timeout());
+    QCOMPARE(signalsReceived, 1);
+}
+
 QString MyObject::path;
 QTEST_MAIN(tst_QDBusConnection)