1a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// found in the LICENSE file. 4a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 5a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "ui/base/ime/win/imm32_manager.h" 6a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 7a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace ui { 10a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace { 11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)struct InputModeTestCase { 13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) TextInputMode input_mode; 14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) DWORD conversion_mode; 15a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) BOOL expected_open; 16a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) DWORD expected_conversion_mode; 17a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}; 18a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 19a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Google Test pretty-printer. 20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void PrintTo(const InputModeTestCase& data, std::ostream* os) { 21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) *os << " input_mode: " << testing::PrintToString(data.input_mode) 22a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) << "; conversion_mode: " << testing::PrintToString(data.conversion_mode); 23a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 25a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class IMM32ManagerTest 26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) : public ::testing::TestWithParam<InputModeTestCase> { 27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}; 28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)const InputModeTestCase 30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) kInputModeTestCases[] = { 31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_DEFAULT, 0, FALSE, 0}, 32a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_DEFAULT, IME_CMODE_NATIVE, FALSE, IME_CMODE_NATIVE}, 33a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_VERBATIM, 0, FALSE, 0}, 34a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_VERBATIM, IME_CMODE_KATAKANA, FALSE, IME_CMODE_KATAKANA}, 35a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_LATIN, 0, FALSE, 0}, 36a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_LATIN, IME_CMODE_NATIVE, FALSE, IME_CMODE_NATIVE}, 37a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_LATIN_NAME, 0, FALSE, 0}, 38a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_LATIN_NAME, IME_CMODE_NATIVE, FALSE, IME_CMODE_NATIVE}, 39a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_LATIN_PROSE, 0, FALSE, 0}, 40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_LATIN_PROSE, IME_CMODE_NATIVE, FALSE, IME_CMODE_NATIVE}, 41a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_FULL_WIDTH_LATIN, 42a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) IME_CMODE_NATIVE | IME_CMODE_KATAKANA | IME_CMODE_FULLSHAPE, 43a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) TRUE, 44a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) IME_CMODE_FULLSHAPE}, 45a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_KANA, 46a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 0, 47a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) TRUE, 48a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) IME_CMODE_NATIVE | IME_CMODE_FULLSHAPE}, 49a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_KANA, 50a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) IME_CMODE_ROMAN, 51a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) TRUE, 52a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) IME_CMODE_NATIVE | IME_CMODE_FULLSHAPE | IME_CMODE_ROMAN}, 53a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_KATAKANA, 54a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) IME_CMODE_NATIVE | IME_CMODE_FULLSHAPE, 55a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) TRUE, 56a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) IME_CMODE_NATIVE | IME_CMODE_KATAKANA | IME_CMODE_FULLSHAPE}, 57a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_KATAKANA, 58a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) IME_CMODE_NATIVE | IME_CMODE_FULLSHAPE | IME_CMODE_ROMAN, 59a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) TRUE, 60a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) IME_CMODE_NATIVE | IME_CMODE_KATAKANA | IME_CMODE_FULLSHAPE 61a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) | IME_CMODE_ROMAN}, 62a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_NUMERIC, 0, FALSE, 0}, 63a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_NUMERIC, IME_CMODE_FULLSHAPE, FALSE, IME_CMODE_FULLSHAPE}, 64a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_TEL, 0, FALSE, 0}, 65a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_TEL, IME_CMODE_ROMAN, FALSE, IME_CMODE_ROMAN}, 66a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_EMAIL, 0, FALSE, 0}, 67a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_EMAIL, IME_CMODE_CHARCODE, FALSE, IME_CMODE_CHARCODE}, 68a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_URL, 0, FALSE, 0}, 69a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) {TEXT_INPUT_MODE_URL, IME_CMODE_HANJACONVERT, FALSE, IME_CMODE_HANJACONVERT}, 70a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}; 71a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 72a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)TEST_P(IMM32ManagerTest, ConvertInputModeToImmFlags) { 73a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) const InputModeTestCase& test_case = GetParam(); 74a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 75a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) BOOL open; 76a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) DWORD conversion_mode; 77a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // Call testee method. 78a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) IMM32Manager::ConvertInputModeToImmFlags(test_case.input_mode, 79a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) test_case.conversion_mode, 80a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) &open, 81a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) &conversion_mode); 82a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 83a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) EXPECT_EQ(test_case.expected_open, open); 84a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) EXPECT_EQ(test_case.expected_conversion_mode, conversion_mode); 85a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 86a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 87a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)INSTANTIATE_TEST_CASE_P(, 88a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) IMM32ManagerTest, 89a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ::testing::ValuesIn(kInputModeTestCases)); 90a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 91a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} // namespace 92a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} // namespace ui 93