[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdesupport/qt-dbus
From:       Thiago Macieira <thiago () kde ! org>
Date:       2006-06-19 12:42:20
Message-ID: 1150720940.093505.31904.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 552915 by thiago:

Fix regression:
call methods that take output arguments too.


 M  +27 -0     selftests/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp  
 M  +1 -1      src/qdbusintegrator.cpp  


--- trunk/kdesupport/qt-dbus/selftests/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp #552914:552915
@@ -53,6 +53,8 @@
 
     void typeMatching_data();
     void typeMatching();
+
+    void methodWithMoreThanOneReturnValue();
 };
 
 class QDBusSignalSpy: public QObject
@@ -153,6 +155,9 @@
     void methodInt(int) { slotSpy = __PRETTY_FUNCTION__; }
     void methodString(QString) { slotSpy = __PRETTY_FUNCTION__; }
 
+    int methodStringString(const QString &s, QString &out)
+    { slotSpy = __PRETTY_FUNCTION__; out = s; return 42; }
+
 signals:
     void signalVoid();
     void signalInt(int);
@@ -975,6 +980,28 @@
     iface->deleteLater();
 }
 
+void tst_QDBusAbstractAdaptor::methodWithMoreThanOneReturnValue()
+{
+    QDBusConnection &con = QDBus::sessionBus();
+    QVERIFY(con.isConnected());
+
+    MyObject obj;
+    con.registerObject("/", &obj);
+
+    QString testString = "This is a test string.";
+
+    QDBusInterfacePtr remote(con, con.baseService(), "/", "local.Interface3");
+    QDBusMessage reply = remote->call(QDBusInterface::UseEventLoop, "methodStringString", testString);
+    QVERIFY(reply.count() == 2);
+
+    QDBusReply<int> intreply = reply;
+    QVERIFY(intreply.isSuccess());
+    QCOMPARE(intreply.value(), 42);
+
+    QCOMPARE(reply.at(1).userType(), int(QVariant::String));
+    QCOMPARE(qdbus_cast<QString>(reply.at(1)), testString);
+}
+
 QTEST_MAIN(tst_QDBusAbstractAdaptor)
 
 #include "tst_qdbusabstractadaptor.moc"
--- trunk/kdesupport/qt-dbus/src/qdbusintegrator.cpp #552914:552915
@@ -377,7 +377,7 @@
         // try to match the parameters
         int i;
         QByteArray reconstructedSignature;
-        for (i = 1; i < metaTypes.count(); ++i) {
+        for (i = 1; i <= inputCount; ++i) {
             reconstructedSignature += QDBusUtil::typeToSignature( QVariant::Type(metaTypes.at(i)) );
             if (!msgSignature.startsWith(reconstructedSignature))
                 break;
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic