1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/logging.h"
6 #include "chrome/browser/chromeos/input_method/ibus_controller_impl.h"
7 #include "chromeos/ime/input_method_property.h"
8 #include "testing/gtest/include/gtest/gtest.h"
11 namespace input_method {
15 // A mock class for testing AddObserver() and RemoveObserver() methods
16 // in IBusControllerImpl.
17 class TestIBusController : public IBusControllerImpl {
19 TestIBusController() {
22 virtual ~TestIBusController() {
25 bool HasObservers() const {
26 return observers_.might_have_observers();
30 DISALLOW_COPY_AND_ASSIGN(TestIBusController);
33 class TestObserver : public IBusController::Observer {
35 // IBusController::Observer overrides:
36 virtual void PropertyChanged() OVERRIDE {}
40 TEST(IBusControllerImplTest, TestAddRemoveObserver) {
41 IBusBridge::Initialize();
43 TestIBusController controller;
44 TestObserver observer1;
45 TestObserver observer2;
46 TestObserver observer3;
47 EXPECT_FALSE(controller.HasObservers());
48 controller.AddObserver(&observer1);
49 EXPECT_TRUE(controller.HasObservers());
50 controller.AddObserver(&observer2);
51 EXPECT_TRUE(controller.HasObservers());
52 controller.RemoveObserver(&observer3); // nop
53 EXPECT_TRUE(controller.HasObservers());
54 controller.RemoveObserver(&observer1);
55 EXPECT_TRUE(controller.HasObservers());
56 controller.RemoveObserver(&observer1); // nop
57 EXPECT_TRUE(controller.HasObservers());
58 controller.RemoveObserver(&observer2);
59 EXPECT_FALSE(controller.HasObservers());
61 IBusBridge::Shutdown();
64 TEST(IBusControllerImplTest, TestGetCurrentProperties) {
65 IBusBridge::Initialize();
67 IBusControllerImpl controller;
68 EXPECT_EQ(0U, controller.GetCurrentProperties().size());
70 IBusBridge::Shutdown();
73 } // namespace input_method
74 } // namespace chromeos