| // Copyright 2010-2014, Google Inc. |
| // All rights reserved. |
| // |
| // Redistribution and use in source and binary forms, with or without |
| // modification, are permitted provided that the following conditions are |
| // met: |
| // |
| // * Redistributions of source code must retain the above copyright |
| // notice, this list of conditions and the following disclaimer. |
| // * Redistributions in binary form must reproduce the above |
| // copyright notice, this list of conditions and the following disclaimer |
| // in the documentation and/or other materials provided with the |
| // distribution. |
| // * Neither the name of Google Inc. nor the names of its |
| // contributors may be used to endorse or promote products derived from |
| // this software without specific prior written permission. |
| // |
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| #include <string> |
| #include "session/commands.pb.h" |
| #include "testing/base/public/googletest.h" |
| #include "testing/base/public/gunit.h" |
| #include "win32/base/string_util.h" |
| |
| namespace mozc { |
| namespace win32 { |
| |
| TEST(StringUtilTest, InvalidCases) { |
| EXPECT_EQ("", StringUtil::KeyToReadingA("")); |
| // KeyToReadingA fails if the resultant string is longer than 512 characters. |
| string longa(10000, 'a'); |
| EXPECT_EQ("", StringUtil::KeyToReadingA(longa.c_str())); |
| } |
| |
| TEST(StringUtilTest, Hiragana) { |
| // "ア", "あ" |
| EXPECT_EQ("\xef\xbd\xb1", StringUtil::KeyToReadingA("\xe3\x81\x82")); |
| // "イ", "い" |
| EXPECT_EQ("\xef\xbd\xb2", StringUtil::KeyToReadingA("\xe3\x81\x84")); |
| // "ウ", "う" |
| EXPECT_EQ("\xef\xbd\xb3", StringUtil::KeyToReadingA("\xe3\x81\x86")); |
| // "エ", "え" |
| EXPECT_EQ("\xef\xbd\xb4", StringUtil::KeyToReadingA("\xe3\x81\x88")); |
| // "オ", "お" |
| EXPECT_EQ("\xef\xbd\xb5", StringUtil::KeyToReadingA("\xe3\x81\x8a")); |
| // "ァ", "ぁ" |
| EXPECT_EQ("\xef\xbd\xa7", StringUtil::KeyToReadingA("\xe3\x81\x81")); |
| // "ィ", "ぃ" |
| EXPECT_EQ("\xef\xbd\xa8", StringUtil::KeyToReadingA("\xe3\x81\x83")); |
| // "ゥ", "ぅ" |
| EXPECT_EQ("\xef\xbd\xa9", StringUtil::KeyToReadingA("\xe3\x81\x85")); |
| // "ェ", "ぇ" |
| EXPECT_EQ("\xef\xbd\xaa", StringUtil::KeyToReadingA("\xe3\x81\x87")); |
| // "ォ", "ぉ" |
| EXPECT_EQ("\xef\xbd\xab", StringUtil::KeyToReadingA("\xe3\x81\x89")); |
| // "カ", "か" |
| EXPECT_EQ("\xef\xbd\xb6", StringUtil::KeyToReadingA("\xe3\x81\x8b")); |
| // "キ", "き" |
| EXPECT_EQ("\xef\xbd\xb7", StringUtil::KeyToReadingA("\xe3\x81\x8d")); |
| // "ク", "く" |
| EXPECT_EQ("\xef\xbd\xb8", StringUtil::KeyToReadingA("\xe3\x81\x8f")); |
| // "ケ", "け" |
| EXPECT_EQ("\xef\xbd\xb9", StringUtil::KeyToReadingA("\xe3\x81\x91")); |
| // "コ", "こ" |
| EXPECT_EQ("\xef\xbd\xba", StringUtil::KeyToReadingA("\xe3\x81\x93")); |
| // "ガ", "が" |
| EXPECT_EQ("\xef\xbd\xb6\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\x8c")); |
| // "ギ", "ぎ" |
| EXPECT_EQ("\xef\xbd\xb7\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\x8e")); |
| // "グ", "ぐ" |
| EXPECT_EQ("\xef\xbd\xb8\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\x90")); |
| // "ゲ", "げ" |
| EXPECT_EQ("\xef\xbd\xb9\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\x92")); |
| // "ゴ", "ご" |
| EXPECT_EQ("\xef\xbd\xba\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\x94")); |
| // "サ", "さ" |
| EXPECT_EQ("\xef\xbd\xbb", StringUtil::KeyToReadingA("\xe3\x81\x95")); |
| // "シ", "し" |
| EXPECT_EQ("\xef\xbd\xbc", StringUtil::KeyToReadingA("\xe3\x81\x97")); |
| // "ス", "す" |
| EXPECT_EQ("\xef\xbd\xbd", StringUtil::KeyToReadingA("\xe3\x81\x99")); |
| // "セ", "せ" |
| EXPECT_EQ("\xef\xbd\xbe", StringUtil::KeyToReadingA("\xe3\x81\x9b")); |
| // "ソ", "そ" |
| EXPECT_EQ("\xef\xbd\xbf", StringUtil::KeyToReadingA("\xe3\x81\x9d")); |
| // "ザ", "ざ" |
| EXPECT_EQ("\xef\xbd\xbb\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\x96")); |
| // "ジ", "じ" |
| EXPECT_EQ("\xef\xbd\xbc\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\x98")); |
| // "ズ", "ず" |
| EXPECT_EQ("\xef\xbd\xbd\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\x9a")); |
| // "ゼ", "ぜ" |
| EXPECT_EQ("\xef\xbd\xbe\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\x9c")); |
| // "ゾ", "ぞ" |
| EXPECT_EQ("\xef\xbd\xbf\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\x9e")); |
| // "タ", "た" |
| EXPECT_EQ("\xef\xbe\x80", StringUtil::KeyToReadingA("\xe3\x81\x9f")); |
| // "チ", "ち" |
| EXPECT_EQ("\xef\xbe\x81", StringUtil::KeyToReadingA("\xe3\x81\xa1")); |
| // "ツ", "つ" |
| EXPECT_EQ("\xef\xbe\x82", StringUtil::KeyToReadingA("\xe3\x81\xa4")); |
| // "テ", "て" |
| EXPECT_EQ("\xef\xbe\x83", StringUtil::KeyToReadingA("\xe3\x81\xa6")); |
| // "ト", "と" |
| EXPECT_EQ("\xef\xbe\x84", StringUtil::KeyToReadingA("\xe3\x81\xa8")); |
| // "ダ", "だ" |
| EXPECT_EQ("\xef\xbe\x80\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\xa0")); |
| // "ヂ", "ぢ" |
| EXPECT_EQ("\xef\xbe\x81\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\xa2")); |
| // "ヅ", "づ" |
| EXPECT_EQ("\xef\xbe\x82\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\xa5")); |
| // "デ", "で" |
| EXPECT_EQ("\xef\xbe\x83\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\xa7")); |
| // "ド", "ど" |
| EXPECT_EQ("\xef\xbe\x84\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\xa9")); |
| // "ッ", "っ" |
| EXPECT_EQ("\xef\xbd\xaf", StringUtil::KeyToReadingA("\xe3\x81\xa3")); |
| // "ナ", "な" |
| EXPECT_EQ("\xef\xbe\x85", StringUtil::KeyToReadingA("\xe3\x81\xaa")); |
| // "ニ", "に" |
| EXPECT_EQ("\xef\xbe\x86", StringUtil::KeyToReadingA("\xe3\x81\xab")); |
| // "ヌ", "ぬ" |
| EXPECT_EQ("\xef\xbe\x87", StringUtil::KeyToReadingA("\xe3\x81\xac")); |
| // "ネ", "ね" |
| EXPECT_EQ("\xef\xbe\x88", StringUtil::KeyToReadingA("\xe3\x81\xad")); |
| // "ノ", "の" |
| EXPECT_EQ("\xef\xbe\x89", StringUtil::KeyToReadingA("\xe3\x81\xae")); |
| // "ハ", "は" |
| EXPECT_EQ("\xef\xbe\x8a", StringUtil::KeyToReadingA("\xe3\x81\xaf")); |
| // "ヒ", "ひ" |
| EXPECT_EQ("\xef\xbe\x8b", StringUtil::KeyToReadingA("\xe3\x81\xb2")); |
| // "フ", "ふ" |
| EXPECT_EQ("\xef\xbe\x8c", StringUtil::KeyToReadingA("\xe3\x81\xb5")); |
| // "ヘ", "へ" |
| EXPECT_EQ("\xef\xbe\x8d", StringUtil::KeyToReadingA("\xe3\x81\xb8")); |
| // "ホ", "ほ" |
| EXPECT_EQ("\xef\xbe\x8e", StringUtil::KeyToReadingA("\xe3\x81\xbb")); |
| // "バ", "ば" |
| EXPECT_EQ("\xef\xbe\x8a\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\xb0")); |
| // "ビ", "び" |
| EXPECT_EQ("\xef\xbe\x8b\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\xb3")); |
| // "ブ", "ぶ" |
| EXPECT_EQ("\xef\xbe\x8c\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\xb6")); |
| // "ベ", "べ" |
| EXPECT_EQ("\xef\xbe\x8d\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\xb9")); |
| // "ボ", "ぼ" |
| EXPECT_EQ("\xef\xbe\x8e\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x81\xbc")); |
| // "パ", "ぱ" |
| EXPECT_EQ("\xef\xbe\x8a\xef\xbe\x9f", |
| StringUtil::KeyToReadingA("\xe3\x81\xb1")); |
| // "ピ", "ぴ" |
| EXPECT_EQ("\xef\xbe\x8b\xef\xbe\x9f", |
| StringUtil::KeyToReadingA("\xe3\x81\xb4")); |
| // "プ", "ぷ" |
| EXPECT_EQ("\xef\xbe\x8c\xef\xbe\x9f", |
| StringUtil::KeyToReadingA("\xe3\x81\xb7")); |
| // "ペ", "ぺ" |
| EXPECT_EQ("\xef\xbe\x8d\xef\xbe\x9f", |
| StringUtil::KeyToReadingA("\xe3\x81\xba")); |
| // "ポ", "ぽ" |
| EXPECT_EQ("\xef\xbe\x8e\xef\xbe\x9f", |
| StringUtil::KeyToReadingA("\xe3\x81\xbd")); |
| // "マ", "ま" |
| EXPECT_EQ("\xef\xbe\x8f", StringUtil::KeyToReadingA("\xe3\x81\xbe")); |
| // "ミ", "み" |
| EXPECT_EQ("\xef\xbe\x90", StringUtil::KeyToReadingA("\xe3\x81\xbf")); |
| // "ム", "む" |
| EXPECT_EQ("\xef\xbe\x91", StringUtil::KeyToReadingA("\xe3\x82\x80")); |
| // "メ", "め" |
| EXPECT_EQ("\xef\xbe\x92", StringUtil::KeyToReadingA("\xe3\x82\x81")); |
| // "モ", "も" |
| EXPECT_EQ("\xef\xbe\x93", StringUtil::KeyToReadingA("\xe3\x82\x82")); |
| // "ヤ", "や" |
| EXPECT_EQ("\xef\xbe\x94", StringUtil::KeyToReadingA("\xe3\x82\x84")); |
| // "ユ", "ゆ" |
| EXPECT_EQ("\xef\xbe\x95", StringUtil::KeyToReadingA("\xe3\x82\x86")); |
| // "ヨ", "よ" |
| EXPECT_EQ("\xef\xbe\x96", StringUtil::KeyToReadingA("\xe3\x82\x88")); |
| // "ャ", "ゃ" |
| EXPECT_EQ("\xef\xbd\xac", StringUtil::KeyToReadingA("\xe3\x82\x83")); |
| // "ュ", "ゅ" |
| EXPECT_EQ("\xef\xbd\xad", StringUtil::KeyToReadingA("\xe3\x82\x85")); |
| // "ョ", "ょ" |
| EXPECT_EQ("\xef\xbd\xae", StringUtil::KeyToReadingA("\xe3\x82\x87")); |
| // "ワ", "わ" |
| EXPECT_EQ("\xef\xbe\x9c", StringUtil::KeyToReadingA("\xe3\x82\x8f")); |
| // "ヲ", "を" |
| EXPECT_EQ("\xef\xbd\xa6", StringUtil::KeyToReadingA("\xe3\x82\x92")); |
| // "ン", "ん" |
| EXPECT_EQ("\xef\xbe\x9d", StringUtil::KeyToReadingA("\xe3\x82\x93")); |
| } |
| |
| TEST(StringUtilTest, Katakana) { |
| // "ア", "ア" |
| EXPECT_EQ("\xef\xbd\xb1", StringUtil::KeyToReadingA("\xe3\x82\xa2")); |
| // "イ", "イ" |
| EXPECT_EQ("\xef\xbd\xb2", StringUtil::KeyToReadingA("\xe3\x82\xa4")); |
| // "ウ", "ウ" |
| EXPECT_EQ("\xef\xbd\xb3", StringUtil::KeyToReadingA("\xe3\x82\xa6")); |
| // "エ", "エ" |
| EXPECT_EQ("\xef\xbd\xb4", StringUtil::KeyToReadingA("\xe3\x82\xa8")); |
| // "オ", "オ" |
| EXPECT_EQ("\xef\xbd\xb5", StringUtil::KeyToReadingA("\xe3\x82\xaa")); |
| // "カ", "カ" |
| EXPECT_EQ("\xef\xbd\xb6", StringUtil::KeyToReadingA("\xe3\x82\xab")); |
| // "キ", "キ" |
| EXPECT_EQ("\xef\xbd\xb7", StringUtil::KeyToReadingA("\xe3\x82\xad")); |
| // "ク", "ク" |
| EXPECT_EQ("\xef\xbd\xb8", StringUtil::KeyToReadingA("\xe3\x82\xaf")); |
| // "ケ", "ケ" |
| EXPECT_EQ("\xef\xbd\xb9", StringUtil::KeyToReadingA("\xe3\x82\xb1")); |
| // "コ", "コ" |
| EXPECT_EQ("\xef\xbd\xba", StringUtil::KeyToReadingA("\xe3\x82\xb3")); |
| // "ガ", "ガ" |
| EXPECT_EQ("\xef\xbd\xb6\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x82\xac")); |
| // "ギ", "ギ" |
| EXPECT_EQ("\xef\xbd\xb7\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x82\xae")); |
| // "グ", "グ" |
| EXPECT_EQ("\xef\xbd\xb8\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x82\xb0")); |
| // "ゲ", "ゲ" |
| EXPECT_EQ("\xef\xbd\xb9\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x82\xb2")); |
| // "ゴ", "ゴ" |
| EXPECT_EQ("\xef\xbd\xba\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x82\xb4")); |
| // "サ", "サ" |
| EXPECT_EQ("\xef\xbd\xbb", StringUtil::KeyToReadingA("\xe3\x82\xb5")); |
| // "シ", "シ" |
| EXPECT_EQ("\xef\xbd\xbc", StringUtil::KeyToReadingA("\xe3\x82\xb7")); |
| // "ス", "ス" |
| EXPECT_EQ("\xef\xbd\xbd", StringUtil::KeyToReadingA("\xe3\x82\xb9")); |
| // "セ", "セ" |
| EXPECT_EQ("\xef\xbd\xbe", StringUtil::KeyToReadingA("\xe3\x82\xbb")); |
| // "ソ", "ソ" |
| EXPECT_EQ("\xef\xbd\xbf", StringUtil::KeyToReadingA("\xe3\x82\xbd")); |
| // "ザ", "ザ" |
| EXPECT_EQ("\xef\xbd\xbb\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x82\xb6")); |
| // "ジ", "ジ" |
| EXPECT_EQ("\xef\xbd\xbc\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x82\xb8")); |
| // "ズ", "ズ" |
| EXPECT_EQ("\xef\xbd\xbd\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x82\xba")); |
| // "ゼ", "ゼ" |
| EXPECT_EQ("\xef\xbd\xbe\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x82\xbc")); |
| // "ゾ", "ゾ" |
| EXPECT_EQ("\xef\xbd\xbf\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x82\xbe")); |
| // "タ", "タ" |
| EXPECT_EQ("\xef\xbe\x80", StringUtil::KeyToReadingA("\xe3\x82\xbf")); |
| // "チ", "チ" |
| EXPECT_EQ("\xef\xbe\x81", StringUtil::KeyToReadingA("\xe3\x83\x81")); |
| // "ツ", "ツ" |
| EXPECT_EQ("\xef\xbe\x82", StringUtil::KeyToReadingA("\xe3\x83\x84")); |
| // "テ", "テ" |
| EXPECT_EQ("\xef\xbe\x83", StringUtil::KeyToReadingA("\xe3\x83\x86")); |
| // "ト", "ト" |
| EXPECT_EQ("\xef\xbe\x84", StringUtil::KeyToReadingA("\xe3\x83\x88")); |
| // "ダ", "ダ" |
| EXPECT_EQ("\xef\xbe\x80\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x83\x80")); |
| // "ヂ", "ヂ" |
| EXPECT_EQ("\xef\xbe\x81\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x83\x82")); |
| // "ヅ", "ヅ" |
| EXPECT_EQ("\xef\xbe\x82\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x83\x85")); |
| // "デ", "デ" |
| EXPECT_EQ("\xef\xbe\x83\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x83\x87")); |
| // "ド", "ド" |
| EXPECT_EQ("\xef\xbe\x84\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x83\x89")); |
| // "ナ", "ナ" |
| EXPECT_EQ("\xef\xbe\x85", StringUtil::KeyToReadingA("\xe3\x83\x8a")); |
| // "ニ", "ニ" |
| EXPECT_EQ("\xef\xbe\x86", StringUtil::KeyToReadingA("\xe3\x83\x8b")); |
| // "ヌ", "ヌ" |
| EXPECT_EQ("\xef\xbe\x87", StringUtil::KeyToReadingA("\xe3\x83\x8c")); |
| // "ネ", "ネ" |
| EXPECT_EQ("\xef\xbe\x88", StringUtil::KeyToReadingA("\xe3\x83\x8d")); |
| // "ノ", "ノ" |
| EXPECT_EQ("\xef\xbe\x89", StringUtil::KeyToReadingA("\xe3\x83\x8e")); |
| // "ハ", "ハ" |
| EXPECT_EQ("\xef\xbe\x8a", StringUtil::KeyToReadingA("\xe3\x83\x8f")); |
| // "ヒ", "ヒ" |
| EXPECT_EQ("\xef\xbe\x8b", StringUtil::KeyToReadingA("\xe3\x83\x92")); |
| // "フ", "フ" |
| EXPECT_EQ("\xef\xbe\x8c", StringUtil::KeyToReadingA("\xe3\x83\x95")); |
| // "ヘ", "ヘ" |
| EXPECT_EQ("\xef\xbe\x8d", StringUtil::KeyToReadingA("\xe3\x83\x98")); |
| // "ホ", "ホ" |
| EXPECT_EQ("\xef\xbe\x8e", StringUtil::KeyToReadingA("\xe3\x83\x9b")); |
| // "バ", "バ" |
| EXPECT_EQ("\xef\xbe\x8a\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x83\x90")); |
| // "ビ", "ビ" |
| EXPECT_EQ("\xef\xbe\x8b\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x83\x93")); |
| // "ブ", "ブ" |
| EXPECT_EQ("\xef\xbe\x8c\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x83\x96")); |
| // "ベ", "ベ" |
| EXPECT_EQ("\xef\xbe\x8d\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x83\x99")); |
| // "ボ", "ボ" |
| EXPECT_EQ("\xef\xbe\x8e\xef\xbe\x9e", |
| StringUtil::KeyToReadingA("\xe3\x83\x9c")); |
| // "パ", "パ" |
| EXPECT_EQ("\xef\xbe\x8a\xef\xbe\x9f", |
| StringUtil::KeyToReadingA("\xe3\x83\x91")); |
| // "ピ", "ピ" |
| EXPECT_EQ("\xef\xbe\x8b\xef\xbe\x9f", |
| StringUtil::KeyToReadingA("\xe3\x83\x94")); |
| // "プ", "プ" |
| EXPECT_EQ("\xef\xbe\x8c\xef\xbe\x9f", |
| StringUtil::KeyToReadingA("\xe3\x83\x97")); |
| // "ペ", "ペ" |
| EXPECT_EQ("\xef\xbe\x8d\xef\xbe\x9f", |
| StringUtil::KeyToReadingA("\xe3\x83\x9a")); |
| // "ポ", "ポ" |
| EXPECT_EQ("\xef\xbe\x8e\xef\xbe\x9f", |
| StringUtil::KeyToReadingA("\xe3\x83\x9d")); |
| // "マ", "マ" |
| EXPECT_EQ("\xef\xbe\x8f", StringUtil::KeyToReadingA("\xe3\x83\x9e")); |
| // "ミ", "ミ" |
| EXPECT_EQ("\xef\xbe\x90", StringUtil::KeyToReadingA("\xe3\x83\x9f")); |
| // "ム", "ム" |
| EXPECT_EQ("\xef\xbe\x91", StringUtil::KeyToReadingA("\xe3\x83\xa0")); |
| // "メ", "メ" |
| EXPECT_EQ("\xef\xbe\x92", StringUtil::KeyToReadingA("\xe3\x83\xa1")); |
| // "モ", "モ" |
| EXPECT_EQ("\xef\xbe\x93", StringUtil::KeyToReadingA("\xe3\x83\xa2")); |
| // "ヤ", "ヤ" |
| EXPECT_EQ("\xef\xbe\x94", StringUtil::KeyToReadingA("\xe3\x83\xa4")); |
| // "ユ", "ユ" |
| EXPECT_EQ("\xef\xbe\x95", StringUtil::KeyToReadingA("\xe3\x83\xa6")); |
| // "ヨ", "ヨ" |
| EXPECT_EQ("\xef\xbe\x96", StringUtil::KeyToReadingA("\xe3\x83\xa8")); |
| // "ワ", "ワ" |
| EXPECT_EQ("\xef\xbe\x9c", StringUtil::KeyToReadingA("\xe3\x83\xaf")); |
| // "ヲ", "ヲ" |
| EXPECT_EQ("\xef\xbd\xa6", StringUtil::KeyToReadingA("\xe3\x83\xb2")); |
| // "ン", "ン" |
| EXPECT_EQ("\xef\xbe\x9d", StringUtil::KeyToReadingA("\xe3\x83\xb3")); |
| } |
| |
| TEST(StringUtilTest, AlphaNumeric) { |
| // "!" |
| EXPECT_EQ("!", StringUtil::KeyToReadingA("\xef\xbc\x81")); |
| // "¥" |
| EXPECT_EQ("\"", StringUtil::KeyToReadingA("\xe2\x80\x9d")); |
| // "#" |
| EXPECT_EQ("#", StringUtil::KeyToReadingA("\xef\xbc\x83")); |
| // "$" |
| EXPECT_EQ("$", StringUtil::KeyToReadingA("\xef\xbc\x84")); |
| // "%" |
| EXPECT_EQ("%", StringUtil::KeyToReadingA("\xef\xbc\x85")); |
| // "&" |
| EXPECT_EQ("&", StringUtil::KeyToReadingA("\xef\xbc\x86")); |
| // "’" |
| EXPECT_EQ("'", StringUtil::KeyToReadingA("\xe2\x80\x99")); |
| // "(" |
| EXPECT_EQ("(", StringUtil::KeyToReadingA("\xef\xbc\x88")); |
| // ")" |
| EXPECT_EQ(")", StringUtil::KeyToReadingA("\xef\xbc\x89")); |
| // "=" |
| EXPECT_EQ("=", StringUtil::KeyToReadingA("\xef\xbc\x9d")); |
| // "-" |
| EXPECT_EQ("-", StringUtil::KeyToReadingA("\xef\xbc\x8d")); |
| // "~" |
| EXPECT_EQ("~", StringUtil::KeyToReadingA("\xef\xbd\x9e")); |
| // "^" |
| EXPECT_EQ("^", StringUtil::KeyToReadingA("\xef\xbc\xbe")); |
| // "|" |
| EXPECT_EQ("|", StringUtil::KeyToReadingA("\xef\xbd\x9c")); |
| // "¥" |
| EXPECT_EQ("\\", StringUtil::KeyToReadingA("\xef\xbf\xa5")); |
| // "‘" |
| EXPECT_EQ("`", StringUtil::KeyToReadingA("\xe2\x80\x98")); |
| // "゙", "゛" |
| EXPECT_EQ("\xef\xbe\x9e", StringUtil::KeyToReadingA("\xe3\x82\x9b")); |
| // "@" |
| EXPECT_EQ("@", StringUtil::KeyToReadingA("\xef\xbc\xa0")); |
| // "{" |
| EXPECT_EQ("{", StringUtil::KeyToReadingA("\xef\xbd\x9b")); |
| // "「", "「" |
| EXPECT_EQ("\xef\xbd\xa2", StringUtil::KeyToReadingA("\xe3\x80\x8c")); |
| // "+" |
| EXPECT_EQ("+", StringUtil::KeyToReadingA("\xef\xbc\x8b")); |
| // ";" |
| EXPECT_EQ(";", StringUtil::KeyToReadingA("\xef\xbc\x9b")); |
| // "*" |
| EXPECT_EQ("*", StringUtil::KeyToReadingA("\xef\xbc\x8a")); |
| // ":" |
| EXPECT_EQ(":", StringUtil::KeyToReadingA("\xef\xbc\x9a")); |
| // "}" |
| EXPECT_EQ("}", StringUtil::KeyToReadingA("\xef\xbd\x9d")); |
| // "」", "」" |
| EXPECT_EQ("\xef\xbd\xa3", StringUtil::KeyToReadingA("\xe3\x80\x8d")); |
| // "<" |
| EXPECT_EQ("<", StringUtil::KeyToReadingA("\xef\xbc\x9c")); |
| // "、", "、" |
| EXPECT_EQ("\xef\xbd\xa4", StringUtil::KeyToReadingA("\xe3\x80\x81")); |
| // ">" |
| EXPECT_EQ(">", StringUtil::KeyToReadingA("\xef\xbc\x9e")); |
| // "。", "。" |
| EXPECT_EQ("\xef\xbd\xa1", StringUtil::KeyToReadingA("\xe3\x80\x82")); |
| // "?" |
| EXPECT_EQ("?", StringUtil::KeyToReadingA("\xef\xbc\x9f")); |
| // "・", "・" |
| EXPECT_EQ("\xef\xbd\xa5", StringUtil::KeyToReadingA("\xe3\x83\xbb")); |
| // "_" |
| EXPECT_EQ("_", StringUtil::KeyToReadingA("\xef\xbc\xbf")); |
| // "1" |
| EXPECT_EQ("1", StringUtil::KeyToReadingA("\xef\xbc\x91")); |
| // "2" |
| EXPECT_EQ("2", StringUtil::KeyToReadingA("\xef\xbc\x92")); |
| // "3" |
| EXPECT_EQ("3", StringUtil::KeyToReadingA("\xef\xbc\x93")); |
| // "4" |
| EXPECT_EQ("4", StringUtil::KeyToReadingA("\xef\xbc\x94")); |
| // "5" |
| EXPECT_EQ("5", StringUtil::KeyToReadingA("\xef\xbc\x95")); |
| // "6" |
| EXPECT_EQ("6", StringUtil::KeyToReadingA("\xef\xbc\x96")); |
| // "7" |
| EXPECT_EQ("7", StringUtil::KeyToReadingA("\xef\xbc\x97")); |
| // "8" |
| EXPECT_EQ("8", StringUtil::KeyToReadingA("\xef\xbc\x98")); |
| // "9" |
| EXPECT_EQ("9", StringUtil::KeyToReadingA("\xef\xbc\x99")); |
| // "0" |
| EXPECT_EQ("0", StringUtil::KeyToReadingA("\xef\xbc\x90")); |
| // "a" |
| EXPECT_EQ("a", StringUtil::KeyToReadingA("\xef\xbd\x81")); |
| // "b" |
| EXPECT_EQ("b", StringUtil::KeyToReadingA("\xef\xbd\x82")); |
| // "c" |
| EXPECT_EQ("c", StringUtil::KeyToReadingA("\xef\xbd\x83")); |
| // "d" |
| EXPECT_EQ("d", StringUtil::KeyToReadingA("\xef\xbd\x84")); |
| // "e" |
| EXPECT_EQ("e", StringUtil::KeyToReadingA("\xef\xbd\x85")); |
| // "f" |
| EXPECT_EQ("f", StringUtil::KeyToReadingA("\xef\xbd\x86")); |
| // "g" |
| EXPECT_EQ("g", StringUtil::KeyToReadingA("\xef\xbd\x87")); |
| // "h" |
| EXPECT_EQ("h", StringUtil::KeyToReadingA("\xef\xbd\x88")); |
| // "i" |
| EXPECT_EQ("i", StringUtil::KeyToReadingA("\xef\xbd\x89")); |
| // "j" |
| EXPECT_EQ("j", StringUtil::KeyToReadingA("\xef\xbd\x8a")); |
| // "k" |
| EXPECT_EQ("k", StringUtil::KeyToReadingA("\xef\xbd\x8b")); |
| // "l" |
| EXPECT_EQ("l", StringUtil::KeyToReadingA("\xef\xbd\x8c")); |
| // "m" |
| EXPECT_EQ("m", StringUtil::KeyToReadingA("\xef\xbd\x8d")); |
| // "n" |
| EXPECT_EQ("n", StringUtil::KeyToReadingA("\xef\xbd\x8e")); |
| // "o" |
| EXPECT_EQ("o", StringUtil::KeyToReadingA("\xef\xbd\x8f")); |
| // "p" |
| EXPECT_EQ("p", StringUtil::KeyToReadingA("\xef\xbd\x90")); |
| // "q" |
| EXPECT_EQ("q", StringUtil::KeyToReadingA("\xef\xbd\x91")); |
| // "r" |
| EXPECT_EQ("r", StringUtil::KeyToReadingA("\xef\xbd\x92")); |
| // "s" |
| EXPECT_EQ("s", StringUtil::KeyToReadingA("\xef\xbd\x93")); |
| // "t" |
| EXPECT_EQ("t", StringUtil::KeyToReadingA("\xef\xbd\x94")); |
| // "u" |
| EXPECT_EQ("u", StringUtil::KeyToReadingA("\xef\xbd\x95")); |
| // "v" |
| EXPECT_EQ("v", StringUtil::KeyToReadingA("\xef\xbd\x96")); |
| // "w" |
| EXPECT_EQ("w", StringUtil::KeyToReadingA("\xef\xbd\x97")); |
| // "x" |
| EXPECT_EQ("x", StringUtil::KeyToReadingA("\xef\xbd\x98")); |
| // "y" |
| EXPECT_EQ("y", StringUtil::KeyToReadingA("\xef\xbd\x99")); |
| // "z" |
| EXPECT_EQ("z", StringUtil::KeyToReadingA("\xef\xbd\x9a")); |
| // "A" |
| EXPECT_EQ("A", StringUtil::KeyToReadingA("\xef\xbc\xa1")); |
| // "B" |
| EXPECT_EQ("B", StringUtil::KeyToReadingA("\xef\xbc\xa2")); |
| // "C" |
| EXPECT_EQ("C", StringUtil::KeyToReadingA("\xef\xbc\xa3")); |
| // "D" |
| EXPECT_EQ("D", StringUtil::KeyToReadingA("\xef\xbc\xa4")); |
| // "E" |
| EXPECT_EQ("E", StringUtil::KeyToReadingA("\xef\xbc\xa5")); |
| // "F" |
| EXPECT_EQ("F", StringUtil::KeyToReadingA("\xef\xbc\xa6")); |
| // "G" |
| EXPECT_EQ("G", StringUtil::KeyToReadingA("\xef\xbc\xa7")); |
| // "H" |
| EXPECT_EQ("H", StringUtil::KeyToReadingA("\xef\xbc\xa8")); |
| // "I" |
| EXPECT_EQ("I", StringUtil::KeyToReadingA("\xef\xbc\xa9")); |
| // "J" |
| EXPECT_EQ("J", StringUtil::KeyToReadingA("\xef\xbc\xaa")); |
| // "K" |
| EXPECT_EQ("K", StringUtil::KeyToReadingA("\xef\xbc\xab")); |
| // "L" |
| EXPECT_EQ("L", StringUtil::KeyToReadingA("\xef\xbc\xac")); |
| // "M" |
| EXPECT_EQ("M", StringUtil::KeyToReadingA("\xef\xbc\xad")); |
| // "N" |
| EXPECT_EQ("N", StringUtil::KeyToReadingA("\xef\xbc\xae")); |
| // "O" |
| EXPECT_EQ("O", StringUtil::KeyToReadingA("\xef\xbc\xaf")); |
| // "P" |
| EXPECT_EQ("P", StringUtil::KeyToReadingA("\xef\xbc\xb0")); |
| // "Q" |
| EXPECT_EQ("Q", StringUtil::KeyToReadingA("\xef\xbc\xb1")); |
| // "R" |
| EXPECT_EQ("R", StringUtil::KeyToReadingA("\xef\xbc\xb2")); |
| // "S" |
| EXPECT_EQ("S", StringUtil::KeyToReadingA("\xef\xbc\xb3")); |
| // "T" |
| EXPECT_EQ("T", StringUtil::KeyToReadingA("\xef\xbc\xb4")); |
| // "U" |
| EXPECT_EQ("U", StringUtil::KeyToReadingA("\xef\xbc\xb5")); |
| // "V" |
| EXPECT_EQ("V", StringUtil::KeyToReadingA("\xef\xbc\xb6")); |
| // "W" |
| EXPECT_EQ("W", StringUtil::KeyToReadingA("\xef\xbc\xb7")); |
| // "X" |
| EXPECT_EQ("X", StringUtil::KeyToReadingA("\xef\xbc\xb8")); |
| // "Y" |
| EXPECT_EQ("Y", StringUtil::KeyToReadingA("\xef\xbc\xb9")); |
| // "Z" |
| EXPECT_EQ("Z", StringUtil::KeyToReadingA("\xef\xbc\xba")); |
| } |
| |
| TEST(StringUtilTest, LCMapStringATest) { |
| DWORD lcid = MAKELCID(MAKELANGID(LANG_JAPANESE, SUBLANG_DEFAULT), |
| SORT_JAPANESE_XJIS); |
| |
| char buf[512]; |
| // backquote |
| size_t len = LCMapStringA(lcid, LCMAP_HALFWIDTH, "\x81\x65", -1, buf, |
| sizeof(buf)); |
| EXPECT_EQ(2, len); |
| // LCMapStringA converts "\x81\x65" (backquote) to ' for some reason. |
| // EXPECT_EQ('`', buf[0]); |
| EXPECT_EQ('\'', buf[0]); |
| |
| // quote |
| len = LCMapStringA(lcid, LCMAP_HALFWIDTH, "\x81\x66", -1, buf, |
| sizeof(buf)); |
| EXPECT_EQ(2, len); |
| EXPECT_EQ('\'', buf[0]); |
| } |
| |
| TEST(StringUtilTest, ComposePreeditText) { |
| commands::Preedit preedit; |
| preedit.add_segment()->set_value("a"); |
| preedit.add_segment()->set_value("b"); |
| preedit.add_segment()->set_value("c"); |
| EXPECT_EQ(L"abc", StringUtil::ComposePreeditText(preedit)); |
| } |
| |
| } // namespace win32 |
| } // namespace mozc |