blob: 0c73b03d456959317c70f066968ded80ab5bb8c6 [file] [log] [blame]
// Copyright 2013 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 "ui/base/ime/win/imm32_manager.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace ui {
namespace {
struct InputModeTestCase {
TextInputMode input_mode;
DWORD conversion_mode;
BOOL expected_open;
DWORD expected_conversion_mode;
};
// Google Test pretty-printer.
void PrintTo(const InputModeTestCase& data, std::ostream* os) {
*os << " input_mode: " << testing::PrintToString(data.input_mode)
<< "; conversion_mode: " << testing::PrintToString(data.conversion_mode);
}
class IMM32ManagerTest
: public ::testing::TestWithParam<InputModeTestCase> {
};
const InputModeTestCase
kInputModeTestCases[] = {
{TEXT_INPUT_MODE_DEFAULT, 0, FALSE, 0},
{TEXT_INPUT_MODE_DEFAULT, IME_CMODE_NATIVE, FALSE, IME_CMODE_NATIVE},
{TEXT_INPUT_MODE_VERBATIM, 0, FALSE, 0},
{TEXT_INPUT_MODE_VERBATIM, IME_CMODE_KATAKANA, FALSE, IME_CMODE_KATAKANA},
{TEXT_INPUT_MODE_LATIN, 0, FALSE, 0},
{TEXT_INPUT_MODE_LATIN, IME_CMODE_NATIVE, FALSE, IME_CMODE_NATIVE},
{TEXT_INPUT_MODE_LATIN_NAME, 0, FALSE, 0},
{TEXT_INPUT_MODE_LATIN_NAME, IME_CMODE_NATIVE, FALSE, IME_CMODE_NATIVE},
{TEXT_INPUT_MODE_LATIN_PROSE, 0, FALSE, 0},
{TEXT_INPUT_MODE_LATIN_PROSE, IME_CMODE_NATIVE, FALSE, IME_CMODE_NATIVE},
{TEXT_INPUT_MODE_FULL_WIDTH_LATIN,
IME_CMODE_NATIVE | IME_CMODE_KATAKANA | IME_CMODE_FULLSHAPE,
TRUE,
IME_CMODE_FULLSHAPE},
{TEXT_INPUT_MODE_KANA,
0,
TRUE,
IME_CMODE_NATIVE | IME_CMODE_FULLSHAPE},
{TEXT_INPUT_MODE_KANA,
IME_CMODE_ROMAN,
TRUE,
IME_CMODE_NATIVE | IME_CMODE_FULLSHAPE | IME_CMODE_ROMAN},
{TEXT_INPUT_MODE_KATAKANA,
IME_CMODE_NATIVE | IME_CMODE_FULLSHAPE,
TRUE,
IME_CMODE_NATIVE | IME_CMODE_KATAKANA | IME_CMODE_FULLSHAPE},
{TEXT_INPUT_MODE_KATAKANA,
IME_CMODE_NATIVE | IME_CMODE_FULLSHAPE | IME_CMODE_ROMAN,
TRUE,
IME_CMODE_NATIVE | IME_CMODE_KATAKANA | IME_CMODE_FULLSHAPE
| IME_CMODE_ROMAN},
{TEXT_INPUT_MODE_NUMERIC, 0, FALSE, 0},
{TEXT_INPUT_MODE_NUMERIC, IME_CMODE_FULLSHAPE, FALSE, IME_CMODE_FULLSHAPE},
{TEXT_INPUT_MODE_TEL, 0, FALSE, 0},
{TEXT_INPUT_MODE_TEL, IME_CMODE_ROMAN, FALSE, IME_CMODE_ROMAN},
{TEXT_INPUT_MODE_EMAIL, 0, FALSE, 0},
{TEXT_INPUT_MODE_EMAIL, IME_CMODE_CHARCODE, FALSE, IME_CMODE_CHARCODE},
{TEXT_INPUT_MODE_URL, 0, FALSE, 0},
{TEXT_INPUT_MODE_URL, IME_CMODE_HANJACONVERT, FALSE, IME_CMODE_HANJACONVERT},
};
TEST_P(IMM32ManagerTest, ConvertInputModeToImmFlags) {
const InputModeTestCase& test_case = GetParam();
BOOL open;
DWORD conversion_mode;
// Call testee method.
IMM32Manager::ConvertInputModeToImmFlags(test_case.input_mode,
test_case.conversion_mode,
&open,
&conversion_mode);
EXPECT_EQ(test_case.expected_open, open);
EXPECT_EQ(test_case.expected_conversion_mode, conversion_mode);
}
INSTANTIATE_TEST_CASE_P(,
IMM32ManagerTest,
::testing::ValuesIn(kInputModeTestCases));
} // namespace
} // namespace ui