Home | History | Annotate | Download | only in status
      1 // Copyright (c) 2011 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 "chrome/browser/chromeos/status/input_method_menu.h"
      6 
      7 #include "base/utf_string_conversions.h"
      8 #include "chrome/browser/chromeos/cros/cros_library.h"
      9 #include "testing/gtest/include/gtest/gtest.h"
     10 
     11 namespace chromeos {
     12 
     13 TEST(InputMethodMenuTest, GetTextForIndicatorTest) {
     14   ScopedStubCrosEnabler enabler;
     15   // Test normal cases. Two-letter language code should be returned.
     16   {
     17     InputMethodDescriptor desc("m17n:fa:isiri",  // input method engine id
     18                                "isiri (m17n)",  // input method name
     19                                "us",  // keyboard layout name
     20                                "fa");  // language name
     21     EXPECT_EQ(L"FA", InputMethodMenu::GetTextForIndicator(desc));
     22   }
     23   {
     24     InputMethodDescriptor desc("hangul", "Korean", "us", "ko");
     25     EXPECT_EQ(UTF8ToWide("\xed\x95\x9c"),
     26               InputMethodMenu::GetTextForIndicator(desc));
     27   }
     28   {
     29     InputMethodDescriptor desc("invalid-id", "unregistered string", "us", "xx");
     30     // Upper-case string of the unknown language code, "xx", should be returned.
     31     EXPECT_EQ(L"XX", InputMethodMenu::GetTextForIndicator(desc));
     32   }
     33 
     34   // Test special cases.
     35   {
     36     InputMethodDescriptor desc("xkb:us:dvorak:eng", "Dvorak", "us", "eng");
     37     EXPECT_EQ(L"DV", InputMethodMenu::GetTextForIndicator(desc));
     38   }
     39   {
     40     InputMethodDescriptor desc("xkb:us:colemak:eng", "Colemak", "us", "eng");
     41     EXPECT_EQ(L"CO", InputMethodMenu::GetTextForIndicator(desc));
     42   }
     43   {
     44     InputMethodDescriptor desc("xkb:us:altgr-intl:eng", "US extd", "us", "eng");
     45     EXPECT_EQ(L"EXTD", InputMethodMenu::GetTextForIndicator(desc));
     46   }
     47   {
     48     InputMethodDescriptor desc("xkb:us:intl:eng", "US intl", "us", "eng");
     49     EXPECT_EQ(L"INTL", InputMethodMenu::GetTextForIndicator(desc));
     50   }
     51   {
     52     InputMethodDescriptor desc("xkb:de:neo:ger", "Germany - Neo 2", "de(neo)",
     53                                "ger");
     54     EXPECT_EQ(L"NEO", InputMethodMenu::GetTextForIndicator(desc));
     55   }
     56   {
     57     InputMethodDescriptor desc("mozc", "Mozc", "us", "ja");
     58     EXPECT_EQ(UTF8ToWide("\xe3\x81\x82"),
     59               InputMethodMenu::GetTextForIndicator(desc));
     60   }
     61   {
     62     InputMethodDescriptor desc("mozc-jp", "Mozc", "jp", "ja");
     63     EXPECT_EQ(UTF8ToWide("\xe3\x81\x82"),
     64               InputMethodMenu::GetTextForIndicator(desc));
     65   }
     66   {
     67     InputMethodDescriptor desc("pinyin", "Pinyin", "us", "zh-CN");
     68     EXPECT_EQ(UTF8ToWide("\xe6\x8b\xbc"),
     69               InputMethodMenu::GetTextForIndicator(desc));
     70   }
     71   {
     72     InputMethodDescriptor desc("mozc-chewing", "Chewing", "us", "zh-TW");
     73     EXPECT_EQ(UTF8ToWide("\xe9\x85\xb7"),
     74               InputMethodMenu::GetTextForIndicator(desc));
     75   }
     76   {
     77     InputMethodDescriptor desc("m17n:zh:cangjie", "Cangjie", "us", "zh-TW");
     78     EXPECT_EQ(UTF8ToWide("\xe5\x80\x89"),
     79               InputMethodMenu::GetTextForIndicator(desc));
     80   }
     81   {
     82     InputMethodDescriptor desc("m17n:zh:quick", "Quick", "us", "zh-TW");
     83     EXPECT_EQ(UTF8ToWide("\xe9\x80\x9f"),
     84               InputMethodMenu::GetTextForIndicator(desc));
     85   }
     86 }
     87 
     88 
     89 // Test whether the function returns language name for non-ambiguous languages.
     90 TEST(InputMethodMenuTest, GetTextForMenuTest) {
     91   // For most languages input method or keyboard layout name is returned.
     92   // See below for exceptions.
     93   {
     94     InputMethodDescriptor desc("m17n:fa:isiri", "isiri (m17n)", "us", "fa");
     95     EXPECT_EQ(L"Persian input method (ISIRI 2901 layout)",
     96               InputMethodMenu::GetTextForMenu(desc));
     97   }
     98   {
     99     InputMethodDescriptor desc("hangul", "Korean", "us", "ko");
    100     EXPECT_EQ(L"Korean input method",
    101               InputMethodMenu::GetTextForMenu(desc));
    102   }
    103   {
    104     InputMethodDescriptor desc("m17n:vi:tcvn", "tcvn (m17n)", "us", "vi");
    105     EXPECT_EQ(L"Vietnamese input method (TCVN6064)",
    106               InputMethodMenu::GetTextForMenu(desc));
    107   }
    108   {
    109     InputMethodDescriptor desc("mozc", "Mozc (US keyboard layout)", "us", "ja");
    110     EXPECT_EQ(L"Japanese input method (for US keyboard)",
    111               InputMethodMenu::GetTextForMenu(desc));
    112   }
    113   {
    114     InputMethodDescriptor desc("xkb:jp::jpn", "Japan", "jp", "jpn");
    115     EXPECT_EQ(L"Japanese keyboard",
    116               InputMethodMenu::GetTextForMenu(desc));
    117   }
    118   {
    119     InputMethodDescriptor desc("xkb:us:dvorak:eng", "USA - Dvorak",
    120                                "us(dvorak)", "eng");
    121     EXPECT_EQ(L"US Dvorak keyboard",
    122               InputMethodMenu::GetTextForMenu(desc));
    123   }
    124   {
    125     InputMethodDescriptor desc("xkb:gb:dvorak:eng", "United Kingdom - Dvorak",
    126                                "gb(dvorak)", "eng");
    127     EXPECT_EQ(L"UK Dvorak keyboard",
    128               InputMethodMenu::GetTextForMenu(desc));
    129   }
    130 
    131   // For Arabic, Dutch, French, German and Hindi,
    132   // "language - keyboard layout" pair is returned.
    133   {
    134     InputMethodDescriptor desc("m17n:ar:kbd", "kbd (m17n)", "us", "ar");
    135     EXPECT_EQ(L"Arabic - Standard input method",
    136               InputMethodMenu::GetTextForMenu(desc));
    137   }
    138   {
    139     InputMethodDescriptor desc("xkb:nl::nld", "Netherlands", "nl", "nld");
    140     EXPECT_EQ(L"Dutch - Dutch keyboard",
    141               InputMethodMenu::GetTextForMenu(desc));
    142   }
    143   {
    144     InputMethodDescriptor desc("xkb:be::nld", "Belgium", "be", "nld");
    145     EXPECT_EQ(L"Dutch - Belgian keyboard",
    146               InputMethodMenu::GetTextForMenu(desc));
    147   }
    148   {
    149     InputMethodDescriptor desc("xkb:fr::fra", "France", "fr", "fra");
    150     EXPECT_EQ(L"French - French keyboard",
    151               InputMethodMenu::GetTextForMenu(desc));
    152   }
    153   {
    154     InputMethodDescriptor desc("xkb:be::fra", "Belgium", "be", "fra");
    155     EXPECT_EQ(L"French - Belgian keyboard",
    156               InputMethodMenu::GetTextForMenu(desc));
    157   }
    158   {
    159     InputMethodDescriptor desc("xkb:de::ger", "Germany", "de", "ger");
    160     EXPECT_EQ(L"German - German keyboard",
    161               InputMethodMenu::GetTextForMenu(desc));
    162   }
    163   {
    164     InputMethodDescriptor desc("xkb:be::ger", "Belgium", "be", "ger");
    165     EXPECT_EQ(L"German - Belgian keyboard",
    166               InputMethodMenu::GetTextForMenu(desc));
    167   }
    168   {
    169     InputMethodDescriptor desc("m17n:hi:itrans", "itrans (m17n)", "us", "hi");
    170     EXPECT_EQ(L"Hindi - Standard input method",
    171               InputMethodMenu::GetTextForMenu(desc));
    172   }
    173 
    174   {
    175     InputMethodDescriptor desc("invalid-id", "unregistered string", "us", "xx");
    176     // You can safely ignore the "Resouce ID is not found for: unregistered
    177     // string" error.
    178     EXPECT_EQ(L"unregistered string",
    179               InputMethodMenu::GetTextForMenu(desc));
    180   }
    181 }
    182 
    183 }  // namespace chromeos
    184