summaryrefslogtreecommitdiffstats
path: root/dbus/bus_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dbus/bus_unittest.cc')
-rw-r--r--dbus/bus_unittest.cc32
1 files changed, 32 insertions, 0 deletions
diff --git a/dbus/bus_unittest.cc b/dbus/bus_unittest.cc
index 6209bc3..999727a 100644
--- a/dbus/bus_unittest.cc
+++ b/dbus/bus_unittest.cc
@@ -13,6 +13,17 @@
#include "testing/gtest/include/gtest/gtest.h"
+namespace {
+
+// Used to test AddFilterFunction().
+DBusHandlerResult DummyHandler(DBusConnection* connection,
+ DBusMessage* raw_message,
+ void* user_data) {
+ return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+}
+
+} // namespace
+
TEST(BusTest, GetObjectProxy) {
dbus::Bus::Options options;
scoped_refptr<dbus::Bus> bus = new dbus::Bus(options);
@@ -89,3 +100,24 @@ TEST(BusTest, ShutdownAndBlockWithDBusThread) {
EXPECT_TRUE(bus->shutdown_completed());
dbus_thread.Stop();
}
+
+TEST(BusTest, AddFilterFunction) {
+ dbus::Bus::Options options;
+ scoped_refptr<dbus::Bus> bus = new dbus::Bus(options);
+ // Should connect before calling AddFilterFunction().
+ bus->Connect();
+
+ int data1 = 100;
+ int data2 = 200;
+ ASSERT_TRUE(bus->AddFilterFunction(&DummyHandler, &data1));
+ // Cannot add the same function with the same data.
+ ASSERT_FALSE(bus->AddFilterFunction(&DummyHandler, &data1));
+ // Can add the same function with different data.
+ ASSERT_TRUE(bus->AddFilterFunction(&DummyHandler, &data2));
+
+ ASSERT_TRUE(bus->RemoveFilterFunction(&DummyHandler, &data1));
+ ASSERT_FALSE(bus->RemoveFilterFunction(&DummyHandler, &data1));
+ ASSERT_TRUE(bus->RemoveFilterFunction(&DummyHandler, &data2));
+
+ bus->ShutdownAndBlock();
+}