Index: dbus/bus_unittest.cc |
diff --git a/dbus/bus_unittest.cc b/dbus/bus_unittest.cc |
index 6209bc3fc8656ff022c91568bbcb50b6a176674d..999727a94ca42e51bb8c2efaffe1a4a81834f383 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(); |
+} |