diff options
Diffstat (limited to 'dbus/bus_unittest.cc')
-rw-r--r-- | dbus/bus_unittest.cc | 32 |
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(); +} |