| Index: chrome/browser/chromeos/input_method/ibus_controller_base_unittest.cc
|
| diff --git a/chrome/browser/chromeos/input_method/ibus_controller_base_unittest.cc b/chrome/browser/chromeos/input_method/ibus_controller_base_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a44aabff7e00b639dc7332b932f295537d8f5f18
|
| --- /dev/null
|
| +++ b/chrome/browser/chromeos/input_method/ibus_controller_base_unittest.cc
|
| @@ -0,0 +1,200 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "base/logging.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| +#include "chrome/browser/chromeos/input_method/ibus_controller_base.h"
|
| +#include "chrome/browser/chromeos/input_method/input_method_config.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +namespace chromeos {
|
| +namespace input_method {
|
| +
|
| +namespace {
|
| +
|
| +// A mock class for testing SetInputMethodConfig(), AddObserver(), and
|
| +// RemoveObserver() methods in IBusControllerBase.
|
| +class TestIBusController : public IBusControllerBase {
|
| + public:
|
| + TestIBusController()
|
| + : set_input_method_config_internal_count_(0),
|
| + set_input_method_config_internal_return_(true) {
|
| + }
|
| + virtual ~TestIBusController() {
|
| + }
|
| +
|
| + // IBusController overrides:
|
| + virtual bool Start() OVERRIDE {
|
| + return true;
|
| + }
|
| + virtual bool Stop() OVERRIDE {
|
| + return true;
|
| + }
|
| + virtual bool ChangeInputMethod(const std::string& id) OVERRIDE {
|
| + return true;
|
| + }
|
| + virtual bool ActivateInputMethodProperty(const std::string& key) OVERRIDE {
|
| + return true;
|
| + }
|
| +#if defined(USE_VIRTUAL_KEYBOARD)
|
| + virtual void SendHandwritingStroke(const HandwritingStroke& stroke) OVERRIDE {
|
| + }
|
| + virtual void CancelHandwriting(int n_strokes) OVERRIDE {
|
| + }
|
| +#endif
|
| +
|
| + size_t GetObserverCount() const {
|
| + return observers_.size();
|
| + }
|
| +
|
| + int set_input_method_config_internal_count() const {
|
| + return set_input_method_config_internal_count_;
|
| + }
|
| + void set_set_input_method_config_internal_return(bool new_value) {
|
| + set_input_method_config_internal_return_ = new_value;
|
| + }
|
| + const ConfigKeyType& last_key() const { return last_key_; }
|
| +
|
| + protected:
|
| + virtual bool SetInputMethodConfigInternal(
|
| + const ConfigKeyType& key,
|
| + const InputMethodConfigValue& value) OVERRIDE {
|
| + ++set_input_method_config_internal_count_;
|
| + last_key_ = key;
|
| + return set_input_method_config_internal_return_;
|
| + }
|
| +
|
| + private:
|
| + int set_input_method_config_internal_count_;
|
| + bool set_input_method_config_internal_return_;
|
| + ConfigKeyType last_key_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TestIBusController);
|
| +};
|
| +
|
| +class TestObserver : public IBusController::Observer {
|
| + public:
|
| + // IBusController::Observer overrides:
|
| + virtual void PropertyChanged() OVERRIDE {}
|
| +};
|
| +
|
| +class IBusControllerBaseTest : public testing::Test {
|
| + public:
|
| + virtual void SetUp() {
|
| + controller_.reset(new TestIBusController);
|
| + }
|
| + virtual void TearDown() {
|
| + controller_.reset();
|
| + }
|
| +
|
| + protected:
|
| + scoped_ptr<TestIBusController> controller_;
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +TEST_F(IBusControllerBaseTest, TestSetInputMethodConfig) {
|
| + InputMethodConfigValue value_set;
|
| + InputMethodConfigValue value_get;
|
| + EXPECT_FALSE(controller_->GetInputMethodConfigForTesting("section",
|
| + "name",
|
| + &value_get));
|
| + EXPECT_EQ(0, controller_->set_input_method_config_internal_count());
|
| +
|
| + // Set a value.
|
| + value_set.type = InputMethodConfigValue::kValueTypeInt;
|
| + value_set.int_value = 12345;
|
| + EXPECT_TRUE(controller_->SetInputMethodConfig("section",
|
| + "name",
|
| + value_set));
|
| + EXPECT_EQ(1, controller_->set_input_method_config_internal_count());
|
| + EXPECT_EQ("section", controller_->last_key().first);
|
| + EXPECT_EQ("name", controller_->last_key().second);
|
| +
|
| + // Get the value.
|
| + EXPECT_TRUE(controller_->GetInputMethodConfigForTesting("section",
|
| + "name",
|
| + &value_get));
|
| + EXPECT_EQ(value_set.type, value_get.type);
|
| + EXPECT_EQ(value_set.int_value, value_get.int_value);
|
| +
|
| + // Set another value.
|
| + value_set.type = InputMethodConfigValue::kValueTypeBool;
|
| + value_set.bool_value = true;
|
| + EXPECT_TRUE(controller_->SetInputMethodConfig("section/2",
|
| + "name2",
|
| + value_set));
|
| + EXPECT_EQ(2, controller_->set_input_method_config_internal_count());
|
| + EXPECT_EQ("section/2", controller_->last_key().first);
|
| + EXPECT_EQ("name2", controller_->last_key().second);
|
| +
|
| + // Overwrite the first value.
|
| + value_set.type = InputMethodConfigValue::kValueTypeInt;
|
| + value_set.int_value = 54321;
|
| + EXPECT_TRUE(controller_->SetInputMethodConfig("section",
|
| + "name",
|
| + value_set));
|
| + EXPECT_EQ(3, controller_->set_input_method_config_internal_count());
|
| + EXPECT_EQ("section", controller_->last_key().first);
|
| + EXPECT_EQ("name", controller_->last_key().second);
|
| +
|
| + // Get the value.
|
| + EXPECT_TRUE(controller_->GetInputMethodConfigForTesting("section",
|
| + "name",
|
| + &value_get));
|
| + EXPECT_EQ(value_set.type, value_get.type);
|
| + EXPECT_EQ(value_set.int_value, value_get.int_value);
|
| +
|
| + // Get a non existent value.
|
| + EXPECT_FALSE(controller_->GetInputMethodConfigForTesting("sectionX",
|
| + "name",
|
| + &value_get));
|
| + EXPECT_FALSE(controller_->GetInputMethodConfigForTesting("section",
|
| + "nameX",
|
| + &value_get));
|
| +}
|
| +
|
| +TEST_F(IBusControllerBaseTest, TestSetInputMethodConfigInternal) {
|
| + InputMethodConfigValue value_set;
|
| + InputMethodConfigValue value_get;
|
| + // Set a value. In this case, SetInputMethodConfigInternal returns false.
|
| + controller_->set_set_input_method_config_internal_return(false);
|
| + value_set.type = InputMethodConfigValue::kValueTypeInt;
|
| + value_set.int_value = 12345;
|
| + EXPECT_FALSE(controller_->SetInputMethodConfig("section",
|
| + "name",
|
| + value_set));
|
| + EXPECT_EQ(1, controller_->set_input_method_config_internal_count());
|
| +
|
| + // Getting the value should fail.
|
| + EXPECT_FALSE(controller_->GetInputMethodConfigForTesting("section",
|
| + "name",
|
| + &value_get));
|
| +}
|
| +
|
| +TEST_F(IBusControllerBaseTest, TestAddRemoveObserver) {
|
| + TestObserver observer1;
|
| + TestObserver observer2;
|
| + TestObserver observer3;
|
| + EXPECT_EQ(0U, controller_->GetObserverCount());
|
| + controller_->AddObserver(&observer1);
|
| + EXPECT_EQ(1U, controller_->GetObserverCount());
|
| + controller_->AddObserver(&observer2);
|
| + EXPECT_EQ(2U, controller_->GetObserverCount());
|
| + controller_->RemoveObserver(&observer3); // nop
|
| + EXPECT_EQ(2U, controller_->GetObserverCount());
|
| + controller_->RemoveObserver(&observer1);
|
| + EXPECT_EQ(1U, controller_->GetObserverCount());
|
| + controller_->RemoveObserver(&observer1); // nop
|
| + EXPECT_EQ(1U, controller_->GetObserverCount());
|
| + controller_->RemoveObserver(&observer2);
|
| + EXPECT_EQ(0U, controller_->GetObserverCount());
|
| +}
|
| +
|
| +TEST_F(IBusControllerBaseTest, TestGetCurrentProperties) {
|
| + EXPECT_EQ(0U, controller_->GetCurrentProperties().size());
|
| +}
|
| +
|
| +} // namespace input_method
|
| +} // namespace chromeos
|
|
|