Index: ui/views/controls/textfield/native_textfield_views_unittest.cc |
diff --git a/ui/views/controls/textfield/native_textfield_views_unittest.cc b/ui/views/controls/textfield/native_textfield_views_unittest.cc |
index b694ff42ccfdac41047f21af00c570c0f53b2458..8ba3df519dc39294971e7464e9f8adeb6ed010f1 100644 |
--- a/ui/views/controls/textfield/native_textfield_views_unittest.cc |
+++ b/ui/views/controls/textfield/native_textfield_views_unittest.cc |
@@ -361,6 +361,84 @@ TEST_F(NativeTextfieldViewsTest, ModelChangesTest) { |
EXPECT_TRUE(last_contents_.empty()); |
} |
+TEST_F(NativeTextfieldViewsTest, ModelChangesTestLowerCase) { |
+ // Check if |model_|'s text is properly lowercased for STYLE_LOWERCASE. |
+ InitTextfield(Textfield::STYLE_LOWERCASE); |
+ EXPECT_EQ(0U, textfield_->GetCursorPosition()); |
msw
2012/04/13 18:13:25
Why do these test check the cursor position at all
kochi
2012/04/16 04:54:18
That's for addressing sky's review comment
"Also,
|
+ |
+ last_contents_.clear(); |
+ textfield_->SetText(ASCIIToUTF16("THIS IS")); |
+ EXPECT_EQ(0U, textfield_->GetCursorPosition()); |
+ |
+ EXPECT_STR_EQ("this is", model_->GetText()); |
+ EXPECT_STR_EQ("THIS IS", textfield_->text()); |
+ EXPECT_TRUE(last_contents_.empty()); |
+ |
+ textfield_->AppendText(ASCIIToUTF16(" A TEST")); |
+ EXPECT_EQ(0U, textfield_->GetCursorPosition()); |
+ EXPECT_STR_EQ("this is a test", model_->GetText()); |
+ EXPECT_STR_EQ("THIS IS A TEST", textfield_->text()); |
+ |
+ EXPECT_TRUE(last_contents_.empty()); |
+} |
+ |
+TEST_F(NativeTextfieldViewsTest, ModelChangesTestLowerCaseI18n) { |
+ // Check if lower case conversion works for non-ASCII characters. |
+ InitTextfield(Textfield::STYLE_LOWERCASE); |
+ EXPECT_EQ(0U, textfield_->GetCursorPosition()); |
+ |
+ last_contents_.clear(); |
+ // Zenkaku Japanese "ABCabc" |
+ textfield_->SetText(WideToUTF16(L"\xFF21\xFF22\xFF23\xFF41\xFF42\xFF43")); |
+ EXPECT_EQ(0U, textfield_->GetCursorPosition()); |
+ // Zenkaku Japanese "abcabc" |
+ EXPECT_EQ(WideToUTF16(L"\xFF41\xFF42\xFF43\xFF41\xFF42\xFF43"), |
+ model_->GetText()); |
+ // Zenkaku Japanese "ABCabc" |
+ EXPECT_EQ(WideToUTF16(L"\xFF21\xFF22\xFF23\xFF41\xFF42\xFF43"), |
+ textfield_->text()); |
+ EXPECT_TRUE(last_contents_.empty()); |
+ |
+ // Zenkaku Japanese "XYZxyz" |
+ textfield_->AppendText(WideToUTF16(L"\xFF38\xFF39\xFF3A\xFF58\xFF59\xFF5A")); |
+ EXPECT_EQ(0U, textfield_->GetCursorPosition()); |
+ // Zenkaku Japanese "abcabcxyzxyz" |
+ EXPECT_EQ(WideToUTF16(L"\xFF41\xFF42\xFF43\xFF41\xFF42\xFF43" |
+ L"\xFF58\xFF59\xFF5A\xFF58\xFF59\xFF5A"), |
+ model_->GetText()); |
+ // Zenkaku Japanese "ABCabcXYZxyz" |
+ EXPECT_EQ(WideToUTF16(L"\xFF21\xFF22\xFF23\xFF41\xFF42\xFF43" |
+ L"\xFF38\xFF39\xFF3A\xFF58\xFF59\xFF5A"), |
+ textfield_->text()); |
+ EXPECT_TRUE(last_contents_.empty()); |
+} |
+ |
+TEST_F(NativeTextfieldViewsTest, ModelChangesTestLowerCaseWithLocale) { |
+ // Check if lower case conversion honors locale properly. |
+ std::string locale = l10n_util::GetApplicationLocale(""); |
+ base::i18n::SetICUDefaultLocale("tr"); |
+ |
+ InitTextfield(Textfield::STYLE_LOWERCASE); |
+ EXPECT_EQ(0U, textfield_->GetCursorPosition()); |
+ |
+ last_contents_.clear(); |
+ // Turkish 'I' should be converted to dotless 'i' (U+0131). |
+ textfield_->SetText(WideToUTF16(L"I")); |
+ EXPECT_EQ(0U, textfield_->GetCursorPosition()); |
+ EXPECT_EQ(WideToUTF16(L"\x0131"), model_->GetText()); |
+ EXPECT_EQ(WideToUTF16(L"I"), textfield_->text()); |
+ EXPECT_TRUE(last_contents_.empty()); |
+ |
+ base::i18n::SetICUDefaultLocale(locale); |
+ |
+ // On default (en) locale, 'I' should be converted to 'i'. |
+ textfield_->SetText(WideToUTF16(L"I")); |
+ EXPECT_EQ(0U, textfield_->GetCursorPosition()); |
+ EXPECT_EQ(WideToUTF16(L"i"), model_->GetText()); |
+ EXPECT_EQ(WideToUTF16(L"I"), textfield_->text()); |
+ EXPECT_TRUE(last_contents_.empty()); |
+} |
+ |
TEST_F(NativeTextfieldViewsTest, KeyTest) { |
InitTextfield(Textfield::STYLE_DEFAULT); |
SendKeyEvent(ui::VKEY_C, true, false); |