tests/auto/qdbusinterface/tst_qdbusinterface.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
--- a/tests/auto/qdbusinterface/tst_qdbusinterface.cpp	Tue Jan 26 12:42:25 2010 +0200
+++ b/tests/auto/qdbusinterface/tst_qdbusinterface.cpp	Tue Feb 02 00:43:10 2010 +0200
@@ -171,6 +171,13 @@
 {
     Q_OBJECT
     MyObject obj;
+public slots:
+    void testServiceOwnerChanged(const QString &service)
+    {
+        if (service == "com.example.Test")
+            QTestEventLoop::instance().exitLoop();
+    }
+
 private slots:
     void initTestCase();
 
@@ -227,6 +234,7 @@
 
 void tst_QDBusInterface::invalidAfterServiceOwnerChanged()
 {
+    // this test is technically the same as tst_QDBusAbstractInterface::followSignal
     QDBusConnection conn = QDBusConnection::sessionBus();
     QDBusConnectionInterface *connIface = conn.interface();
 
@@ -235,33 +243,14 @@
     QDBusInterface invalidInterface("com.example.Test", "/");
     QVERIFY(!invalidInterface.isValid());
 
+    QTestEventLoop::instance().connect(connIface, SIGNAL(serviceOwnerChanged(QString, QString, QString)),
+                                       SLOT(exitLoop()));
     QVERIFY(connIface->registerService("com.example.Test") == QDBusConnectionInterface::ServiceRegistered);
 
-    QSignalSpy serviceOwnerChangedSpy(connIface, SIGNAL(serviceOwnerChanged(QString, QString, QString)));
-
-    QEventLoop loop;
-    QObject::connect(connIface, SIGNAL(serviceOwnerChanged(QString, QString, QString)),
-                     &loop, SLOT(quit()));
-    loop.exec();
+    QTestEventLoop::instance().enterLoop(5);
 
-    // at least once, but other services might have changed while running the test, too.
-    QVERIFY(serviceOwnerChangedSpy.count() >= 1);
-    bool foundOurService = false;
-    for (int i = 0; i < serviceOwnerChangedSpy.count(); ++i) {
-        QList<QVariant> args = serviceOwnerChangedSpy.at(i);
-        QString name = args[0].toString();
-        QString oldOwner = args[1].toString();
-        QString newOwner = args[2].toString();
-        if (name == QLatin1String("com.example.Test")) {
-            if (newOwner == conn.baseService()) {
-                foundOurService = true;
-                break;
-            }
-        }
-    }
-    QVERIFY(foundOurService);
-
-    QVERIFY(!invalidInterface.isValid());
+    QVERIFY(!QTestEventLoop::instance().timeout());
+    QVERIFY(invalidInterface.isValid());
 }
 
 void tst_QDBusInterface::introspect()