Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(89)

Unified Diff: ui/views/controls/textfield/native_textfield_views_unittest.cc

Issue 9358049: Implement STYLE_LOWERCASE style for Aura NativeTextfield. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add MaybeLowerCase(), test descriptions and cursor position assertion. Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..8b2f8b16491691a2b513ce30e9e963e670ab5805 100644
--- a/ui/views/controls/textfield/native_textfield_views_unittest.cc
+++ b/ui/views/controls/textfield/native_textfield_views_unittest.cc
@@ -361,6 +361,85 @@ TEST_F(NativeTextfieldViewsTest, ModelChangesTest) {
EXPECT_TRUE(last_contents_.empty());
}
+TEST_F(NativeTextfieldViewsTest, ModelChangesTestLowerCase) {
+ // Check if |model_|'s text is properly lowercased when STYLE_LOWERCASE is
msw 2012/04/12 16:15:29 optional one-line comment nit: // Check if |model_
kochi 2012/04/13 09:44:09 Done.
+ // specified.
+ InitTextfield(Textfield::STYLE_LOWERCASE);
+ EXPECT_EQ(0U, textfield_->GetCursorPosition());
+
+ 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);

Powered by Google App Engine
This is Rietveld 408576698