Index: chrome/browser/chromeos/input_method/ibus_controller_impl_unittest.cc |
diff --git a/chrome/browser/chromeos/input_method/ibus_controller_impl_unittest.cc b/chrome/browser/chromeos/input_method/ibus_controller_impl_unittest.cc |
index 2a251c88b7a6d3842ebcdeecec8bcffd5614877a..da9afcf3009b268d62de4a6cd517a8d5b1bdbfd6 100644 |
--- a/chrome/browser/chromeos/input_method/ibus_controller_impl_unittest.cc |
+++ b/chrome/browser/chromeos/input_method/ibus_controller_impl_unittest.cc |
@@ -18,6 +18,29 @@ bool FindAndUpdateProperty(const InputMethodProperty& new_prop, |
prop_list); |
} |
+// A mock class for testing AddObserver() and RemoveObserver() methods |
+// in IBusControllerImpl. |
+class TestIBusController : public IBusControllerImpl { |
+ public: |
+ TestIBusController() { |
+ } |
+ |
+ virtual ~TestIBusController() { |
+ } |
+ |
+ bool HasObservers() const { |
+ return observers_.might_have_observers(); |
+ } |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(TestIBusController); |
+}; |
+ |
+class TestObserver : public IBusController::Observer { |
+ public: |
+ // IBusController::Observer overrides: |
+ virtual void PropertyChanged() OVERRIDE {} |
+}; |
} // namespace |
TEST(IBusControllerImplTest, TestFindAndUpdateProperty) { |
@@ -49,5 +72,38 @@ TEST(IBusControllerImplTest, TestFindAndUpdateProperty) { |
properties[1]); |
} |
+TEST(IBusControllerImplTest, TestAddRemoveObserver) { |
+ IBusBridge::Initialize(); |
+ { |
+ TestIBusController controller; |
+ TestObserver observer1; |
+ TestObserver observer2; |
+ TestObserver observer3; |
+ EXPECT_FALSE(controller.HasObservers()); |
+ controller.AddObserver(&observer1); |
+ EXPECT_TRUE(controller.HasObservers()); |
+ controller.AddObserver(&observer2); |
+ EXPECT_TRUE(controller.HasObservers()); |
+ controller.RemoveObserver(&observer3); // nop |
+ EXPECT_TRUE(controller.HasObservers()); |
+ controller.RemoveObserver(&observer1); |
+ EXPECT_TRUE(controller.HasObservers()); |
+ controller.RemoveObserver(&observer1); // nop |
+ EXPECT_TRUE(controller.HasObservers()); |
+ controller.RemoveObserver(&observer2); |
+ EXPECT_FALSE(controller.HasObservers()); |
+ } |
+ IBusBridge::Shutdown(); |
+} |
+ |
+TEST(IBusControllerImplTest, TestGetCurrentProperties) { |
+ IBusBridge::Initialize(); |
+ { |
+ IBusControllerImpl controller; |
+ EXPECT_EQ(0U, controller.GetCurrentProperties().size()); |
+ } |
+ IBusBridge::Shutdown(); |
+} |
+ |
} // namespace input_method |
} // namespace chromeos |