detail::apply(callback, params.getValues());
}
};
- eldbus_proxy_signal_handler_add(connectionState.proxy, signalName.c_str(), listenerCallback, tmp);
+ auto handler = eldbus_proxy_signal_handler_add(connectionState.proxy, signalName.c_str(), listenerCallback, tmp);
destructors.push_back([ = ]() {
+ eldbus_signal_handler_del(handler);
delete tmp;
});
}
auto r = db.method<int(int, int)>("add").call(10, 55);
ASSERT_TRUE(r);
ASSERT_EQ(std::get<0>(r), 10 + 55);
- r = db.method<int(int, int)>("add").call(-10, 55);
+}
+
+// Calls method on external process synchronously, expect error
+TEST_F(DBusTest, synchronousCallExpectError)
+{
+ auto connection = DBus::getDBusConnectionByType(DBus::ConnectionType::SYSTEM);
+ DBus::DBusClient db{testBusName, syncPathName, syncInterfaceName, connection};
+ auto r = db.method<int(int, int)>("add").call(-10, 55);
ASSERT_FALSE(r);
ASSERT_EQ(r.getError().message, "org.freedesktop.DBus.Error.Failed: negative");
}