- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / input_method / ibus_controller_impl_unittest.cc
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.
4
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"
9
10 namespace chromeos {
11 namespace input_method {
12
13 namespace {
14
15 // A mock class for testing AddObserver() and RemoveObserver() methods
16 // in IBusControllerImpl.
17 class TestIBusController : public IBusControllerImpl {
18  public:
19   TestIBusController() {
20   }
21
22   virtual ~TestIBusController() {
23   }
24
25   bool HasObservers() const {
26     return observers_.might_have_observers();
27   }
28
29  private:
30   DISALLOW_COPY_AND_ASSIGN(TestIBusController);
31 };
32
33 class TestObserver : public IBusController::Observer {
34  public:
35   // IBusController::Observer overrides:
36   virtual void PropertyChanged() OVERRIDE {}
37 };
38 }  // namespace
39
40 TEST(IBusControllerImplTest, TestAddRemoveObserver) {
41   IBusBridge::Initialize();
42   {
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());
60   }
61   IBusBridge::Shutdown();
62 }
63
64 TEST(IBusControllerImplTest, TestGetCurrentProperties) {
65   IBusBridge::Initialize();
66   {
67     IBusControllerImpl controller;
68     EXPECT_EQ(0U, controller.GetCurrentProperties().size());
69   }
70   IBusBridge::Shutdown();
71 }
72
73 }  // namespace input_method
74 }  // namespace chromeos