Home | History | Annotate | Download | only in win
      1 // Copyright 2013 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 "ui/base/ime/win/tsf_input_scope.h"
      6 
      7 #include <InputScope.h>
      8 
      9 #include "testing/gtest/include/gtest/gtest.h"
     10 
     11 namespace ui {
     12 namespace {
     13 
     14 struct GetInputScopesTestCase {
     15   TextInputType input_type;
     16   TextInputMode input_mode;
     17   size_t expected_size;
     18   InputScope expected_input_scopes[2];
     19 };
     20 
     21 // Google Test pretty-printer.
     22 void PrintTo(const GetInputScopesTestCase& data, std::ostream* os) {
     23   *os << " input_type: " << testing::PrintToString(data.input_type)
     24       << "; input_mode: " << testing::PrintToString(data.input_mode);
     25 }
     26 
     27 class TSFInputScopeTest
     28     : public testing::TestWithParam<GetInputScopesTestCase> {
     29 };
     30 
     31 const GetInputScopesTestCase kGetInputScopesTestCases[] = {
     32   // Test cases of TextInputType.
     33   {TEXT_INPUT_TYPE_NONE, TEXT_INPUT_MODE_DEFAULT,
     34    1, {IS_DEFAULT}},
     35   {TEXT_INPUT_TYPE_TEXT, TEXT_INPUT_MODE_DEFAULT,
     36    1, {IS_DEFAULT}},
     37   {TEXT_INPUT_TYPE_PASSWORD, TEXT_INPUT_MODE_DEFAULT,
     38    1, {IS_PASSWORD}},
     39   {TEXT_INPUT_TYPE_SEARCH, TEXT_INPUT_MODE_DEFAULT,
     40    1, {IS_SEARCH}},
     41   {TEXT_INPUT_TYPE_EMAIL, TEXT_INPUT_MODE_DEFAULT,
     42    1, {IS_EMAIL_SMTPEMAILADDRESS}},
     43   {TEXT_INPUT_TYPE_NUMBER, TEXT_INPUT_MODE_DEFAULT,
     44    1, {IS_NUMBER}},
     45   {TEXT_INPUT_TYPE_TELEPHONE, TEXT_INPUT_MODE_DEFAULT,
     46    1, {IS_TELEPHONE_FULLTELEPHONENUMBER}},
     47   {TEXT_INPUT_TYPE_URL, TEXT_INPUT_MODE_DEFAULT,
     48    1, {IS_URL}},
     49   {TEXT_INPUT_TYPE_DATE, TEXT_INPUT_MODE_DEFAULT,
     50    1, {IS_DEFAULT}},
     51   {TEXT_INPUT_TYPE_DATE_TIME, TEXT_INPUT_MODE_DEFAULT,
     52    1, {IS_DEFAULT}},
     53   {TEXT_INPUT_TYPE_DATE_TIME_LOCAL, TEXT_INPUT_MODE_DEFAULT,
     54    1, {IS_DEFAULT}},
     55   {TEXT_INPUT_TYPE_MONTH, TEXT_INPUT_MODE_DEFAULT,
     56    1, {IS_DEFAULT}},
     57   {TEXT_INPUT_TYPE_TIME, TEXT_INPUT_MODE_DEFAULT,
     58    1, {IS_DEFAULT}},
     59   {TEXT_INPUT_TYPE_WEEK, TEXT_INPUT_MODE_DEFAULT,
     60    1, {IS_DEFAULT}},
     61   {TEXT_INPUT_TYPE_TEXT_AREA, TEXT_INPUT_MODE_DEFAULT,
     62    1, {IS_DEFAULT}},
     63   {TEXT_INPUT_TYPE_CONTENT_EDITABLE, TEXT_INPUT_MODE_DEFAULT,
     64    1, {IS_DEFAULT}},
     65   {TEXT_INPUT_TYPE_DATE_TIME_FIELD, TEXT_INPUT_MODE_DEFAULT,
     66    1, {IS_DEFAULT}},
     67   // Test cases of TextInputMode.
     68   {TEXT_INPUT_TYPE_NONE, TEXT_INPUT_MODE_DEFAULT,
     69    1, {IS_DEFAULT}},
     70   {TEXT_INPUT_TYPE_NONE, TEXT_INPUT_MODE_VERBATIM,
     71    1, {IS_DEFAULT}},
     72   {TEXT_INPUT_TYPE_NONE, TEXT_INPUT_MODE_LATIN,
     73    1, {IS_DEFAULT}},
     74   {TEXT_INPUT_TYPE_NONE, TEXT_INPUT_MODE_LATIN_NAME,
     75    1, {IS_DEFAULT}},
     76   {TEXT_INPUT_TYPE_NONE, TEXT_INPUT_MODE_LATIN_PROSE,
     77    1, {IS_DEFAULT}},
     78   {TEXT_INPUT_TYPE_NONE, TEXT_INPUT_MODE_FULL_WIDTH_LATIN,
     79    1, {IS_ALPHANUMERIC_FULLWIDTH}},
     80   {TEXT_INPUT_TYPE_NONE, TEXT_INPUT_MODE_KANA,
     81    1, {IS_HIRAGANA}},
     82   {TEXT_INPUT_TYPE_NONE, TEXT_INPUT_MODE_KATAKANA,
     83    1, {IS_KATAKANA_FULLWIDTH}},
     84   {TEXT_INPUT_TYPE_NONE, TEXT_INPUT_MODE_NUMERIC,
     85    1, {IS_NUMBER}},
     86   {TEXT_INPUT_TYPE_NONE, TEXT_INPUT_MODE_TEL,
     87    1, {IS_TELEPHONE_FULLTELEPHONENUMBER}},
     88   {TEXT_INPUT_TYPE_NONE, TEXT_INPUT_MODE_EMAIL,
     89    1, {IS_EMAIL_SMTPEMAILADDRESS}},
     90   {TEXT_INPUT_TYPE_NONE, TEXT_INPUT_MODE_URL,
     91    1, {IS_URL}},
     92    // Mixed test cases.
     93   {TEXT_INPUT_TYPE_SEARCH, TEXT_INPUT_MODE_KANA,
     94    2, {IS_SEARCH, IS_HIRAGANA}},
     95   {TEXT_INPUT_TYPE_EMAIL, TEXT_INPUT_MODE_EMAIL,
     96    1, {IS_EMAIL_SMTPEMAILADDRESS}},
     97   {TEXT_INPUT_TYPE_NUMBER, TEXT_INPUT_MODE_NUMERIC,
     98    1, {IS_NUMBER}},
     99   {TEXT_INPUT_TYPE_TELEPHONE, TEXT_INPUT_MODE_TEL,
    100    1, {IS_TELEPHONE_FULLTELEPHONENUMBER}},
    101   {TEXT_INPUT_TYPE_URL, TEXT_INPUT_MODE_URL,
    102    1, {IS_URL}},
    103 };
    104 
    105 TEST_P(TSFInputScopeTest, GetInputScopes) {
    106   const GetInputScopesTestCase& test_case = GetParam();
    107 
    108   std::vector<InputScope> input_scopes = tsf_inputscope::GetInputScopes(
    109       test_case.input_type, test_case.input_mode);
    110 
    111   EXPECT_EQ(test_case.expected_size, input_scopes.size());
    112   for (size_t i = 0; i < test_case.expected_size; ++i)
    113     EXPECT_EQ(test_case.expected_input_scopes[i], input_scopes[i]);
    114 }
    115 
    116 INSTANTIATE_TEST_CASE_P(,
    117                         TSFInputScopeTest,
    118                         ::testing::ValuesIn(kGetInputScopesTestCases));
    119 
    120 }  // namespace
    121 }  // namespace ui
    122