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

Side by Side Diff: views/controls/textfield/textfield_views_model_unittest.cc

Issue 5857002: no native implementation of Textfield. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix comment Created 10 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « views/controls/textfield/textfield_views_model.cc ('k') | views/event.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2010 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 "base/utf_string_conversions.h"
6 #include "testing/gtest/include/gtest/gtest.h"
7 #include "views/controls/textfield/textfield_views_model.h"
8
9 namespace views {
10
11 #define EXPECT_STR_EQ(ascii, utf16) \
12 EXPECT_EQ(ASCIIToWide(ascii), UTF16ToWide(utf16))
13
14 TEST(TextfieldViewsModelTest, EditString) {
15 TextfieldViewsModel model;
16 // append two strings
17 model.Append(ASCIIToUTF16("HILL"));
18 EXPECT_STR_EQ("HILL", model.text());
19 model.Append(ASCIIToUTF16("WORLD"));
20 EXPECT_STR_EQ("HILLWORLD", model.text());
21
22 // Insert "E" to make hello
23 model.MoveCursorRight(false);
24 model.Insert('E');
25 EXPECT_STR_EQ("HEILLWORLD", model.text());
26 // Replace "I" with "L"
27 model.Replace('L');
28 EXPECT_STR_EQ("HELLLWORLD", model.text());
29 model.Replace('L');
30 model.Replace('O');
31 EXPECT_STR_EQ("HELLOWORLD", model.text());
32
33 // Delete 6th char "W", then delete 5th char O"
34 EXPECT_EQ(5U, model.cursor_pos());
35 EXPECT_TRUE(model.Delete());
36 EXPECT_STR_EQ("HELLOORLD", model.text());
37 EXPECT_TRUE(model.Backspace());
38 EXPECT_EQ(4U, model.cursor_pos());
39 EXPECT_STR_EQ("HELLORLD", model.text());
40
41 // Move the cursor to start. backspace should fail.
42 model.MoveCursorToStart(false);
43 EXPECT_FALSE(model.Backspace());
44 EXPECT_STR_EQ("HELLORLD", model.text());
45 // Move the cursor to the end. delete should fail.
46 model.MoveCursorToEnd(false);
47 EXPECT_FALSE(model.Delete());
48 EXPECT_STR_EQ("HELLORLD", model.text());
49 // but backspace should work.
50 EXPECT_TRUE(model.Backspace());
51 EXPECT_STR_EQ("HELLORL", model.text());
52 }
53
54 TEST(TextfieldViewsModelTest, EmptyString) {
55 TextfieldViewsModel model;
56 EXPECT_EQ(string16(), model.text());
57 EXPECT_EQ(string16(), model.GetSelectedText());
58 EXPECT_EQ(string16(), model.GetVisibleText());
59
60 model.MoveCursorLeft(true);
61 EXPECT_EQ(0U, model.cursor_pos());
62 model.MoveCursorRight(true);
63 EXPECT_EQ(0U, model.cursor_pos());
64
65 EXPECT_EQ(string16(), model.GetSelectedText());
66
67 EXPECT_FALSE(model.Delete());
68 EXPECT_FALSE(model.Backspace());
69 }
70
71 TEST(TextfieldViewsModelTest, Selection) {
72 TextfieldViewsModel model;
73 model.Append(ASCIIToUTF16("HELLO"));
74 model.MoveCursorRight(false);
75 model.MoveCursorRight(true);
76 EXPECT_STR_EQ("E", model.GetSelectedText());
77 model.MoveCursorRight(true);
78 EXPECT_STR_EQ("EL", model.GetSelectedText());
79
80 model.MoveCursorToStart(true);
81 EXPECT_STR_EQ("H", model.GetSelectedText());
82 model.MoveCursorToEnd(true);
83 EXPECT_STR_EQ("ELLO", model.GetSelectedText());
84 model.ClearSelection();
85 EXPECT_EQ(string16(), model.GetSelectedText());
86 model.SelectAll();
87 EXPECT_STR_EQ("HELLO", model.GetSelectedText());
88
89 // Select and move cursor
90 model.MoveCursorTo(1U, false);
91 model.MoveCursorTo(3U, true);
92 EXPECT_STR_EQ("EL", model.GetSelectedText());
93 model.MoveCursorLeft(false);
94 EXPECT_EQ(1U, model.cursor_pos());
95 model.MoveCursorTo(1U, false);
96 model.MoveCursorTo(3U, true);
97 model.MoveCursorRight(false);
98 EXPECT_EQ(3U, model.cursor_pos());
99
100 // Select all and move cursor
101 model.SelectAll();
102 model.MoveCursorLeft(false);
103 EXPECT_EQ(0U, model.cursor_pos());
104 model.SelectAll();
105 model.MoveCursorRight(false);
106 EXPECT_EQ(5U, model.cursor_pos());
107 }
108
109 TEST(TextfieldViewsModelTest, SelectionAndEdit) {
110 TextfieldViewsModel model;
111 model.Append(ASCIIToUTF16("HELLO"));
112 model.MoveCursorRight(false);
113 model.MoveCursorRight(true);
114 model.MoveCursorRight(true); // select "EL"
115 EXPECT_TRUE(model.Backspace());
116 EXPECT_STR_EQ("HLO", model.text());
117
118 model.Append(ASCIIToUTF16("ILL"));
119 model.MoveCursorRight(true);
120 model.MoveCursorRight(true); // select "LO"
121 EXPECT_TRUE(model.Delete());
122 EXPECT_STR_EQ("HILL", model.text());
123 EXPECT_EQ(1U, model.cursor_pos());
124 model.MoveCursorRight(true); // select "I"
125 model.Insert('E');
126 EXPECT_STR_EQ("HELL", model.text());
127 model.MoveCursorToStart(false);
128 model.MoveCursorRight(true); // select "H"
129 model.Replace('B');
130 EXPECT_STR_EQ("BELL", model.text());
131 model.MoveCursorToEnd(false);
132 model.MoveCursorLeft(true);
133 model.MoveCursorLeft(true); // select ">LL"
134 model.Replace('E');
135 EXPECT_STR_EQ("BEE", model.text());
136 }
137
138 TEST(TextfieldViewsModelTest, Password) {
139 TextfieldViewsModel model;
140 model.set_is_password(true);
141 model.Append(ASCIIToUTF16("HELLO"));
142 EXPECT_STR_EQ("*****", model.GetVisibleText());
143 EXPECT_STR_EQ("HELLO", model.text());
144 EXPECT_TRUE(model.Delete());
145
146 EXPECT_STR_EQ("****", model.GetVisibleText());
147 EXPECT_STR_EQ("ELLO", model.text());
148 EXPECT_EQ(0U, model.cursor_pos());
149
150 model.SelectAll();
151 EXPECT_STR_EQ("ELLO", model.GetSelectedText());
152 EXPECT_EQ(0U, model.cursor_pos());
153
154 model.Insert('X');
155 EXPECT_STR_EQ("*", model.GetVisibleText());
156 EXPECT_STR_EQ("X", model.text());
157 }
158
159 TEST(TextfieldViewsModelTest, Word) {
160 TextfieldViewsModel model;
161 model.Append(
162 ASCIIToUTF16("The answer to Life, the Universe, and Everything"));
163 model.MoveCursorToNextWord(false);
164 EXPECT_EQ(3U, model.cursor_pos());
165 model.MoveCursorToNextWord(false);
166 EXPECT_EQ(10U, model.cursor_pos());
167 model.MoveCursorToNextWord(false);
168 model.MoveCursorToNextWord(false);
169 EXPECT_EQ(18U, model.cursor_pos());
170
171 // Should passes the non word char ','
172 model.MoveCursorToNextWord(true);
173 EXPECT_EQ(23U, model.cursor_pos());
174 EXPECT_STR_EQ(", the", model.GetSelectedText());
175
176 // Move to the end.
177 model.MoveCursorToNextWord(true);
178 model.MoveCursorToNextWord(true);
179 model.MoveCursorToNextWord(true);
180 EXPECT_STR_EQ(", the Universe, and Everything", model.GetSelectedText());
181 // Should be safe to go next word at the end.
182 model.MoveCursorToNextWord(true);
183 EXPECT_STR_EQ(", the Universe, and Everything", model.GetSelectedText());
184 model.Insert('2');
185 EXPECT_EQ(19U, model.cursor_pos());
186
187 // Now backwards.
188 model.MoveCursorLeft(false); // leave 2.
189 model.MoveCursorToPreviousWord(true);
190 EXPECT_EQ(14U, model.cursor_pos());
191 EXPECT_STR_EQ("Life", model.GetSelectedText());
192 model.MoveCursorToPreviousWord(true);
193 EXPECT_STR_EQ("to Life", model.GetSelectedText());
194 model.MoveCursorToPreviousWord(true);
195 model.MoveCursorToPreviousWord(true);
196 model.MoveCursorToPreviousWord(true); // Select to the begining.
197 EXPECT_STR_EQ("The answer to Life", model.GetSelectedText());
198 // Should be safe to go pervious word at the begining.
199 model.MoveCursorToPreviousWord(true);
200 EXPECT_STR_EQ("The answer to Life", model.GetSelectedText());
201 model.Replace('4');
202 EXPECT_EQ(string16(), model.GetSelectedText());
203 EXPECT_STR_EQ("42", model.GetVisibleText());
204 }
205
206 TEST(TextfieldViewsModelTest, TextFragment) {
207 TextfieldViewsModel model;
208 TextfieldViewsModel::TextFragments fragments;
209 // Empty string
210 model.GetFragments(&fragments);
211 EXPECT_EQ(1U, fragments.size());
212 fragments.clear();
213 EXPECT_EQ(0U, fragments[0].begin);
214 EXPECT_EQ(0U, fragments[0].end);
215 EXPECT_FALSE(fragments[0].selected);
216
217 // Some string
218 model.Append(ASCIIToUTF16("Hello world"));
219 model.GetFragments(&fragments);
220 EXPECT_EQ(1U, fragments.size());
221 EXPECT_EQ(0U, fragments[0].begin);
222 EXPECT_EQ(11U, fragments[0].end);
223 EXPECT_FALSE(fragments[0].selected);
224
225 // Select 1st word
226 model.MoveCursorToNextWord(true);
227 model.GetFragments(&fragments);
228 EXPECT_EQ(2U, fragments.size());
229 EXPECT_EQ(0U, fragments[0].begin);
230 EXPECT_EQ(5U, fragments[0].end);
231 EXPECT_TRUE(fragments[0].selected);
232 EXPECT_EQ(5U, fragments[1].begin);
233 EXPECT_EQ(11U, fragments[1].end);
234 EXPECT_FALSE(fragments[1].selected);
235
236 // Select empty string
237 model.ClearSelection();
238 model.MoveCursorRight(true);
239 model.GetFragments(&fragments);
240 EXPECT_EQ(3U, fragments.size());
241 EXPECT_EQ(0U, fragments[0].begin);
242 EXPECT_EQ(5U, fragments[0].end);
243 EXPECT_FALSE(fragments[0].selected);
244 EXPECT_EQ(5U, fragments[1].begin);
245 EXPECT_EQ(6U, fragments[1].end);
246 EXPECT_TRUE(fragments[1].selected);
247
248 EXPECT_EQ(6U, fragments[2].begin);
249 EXPECT_EQ(11U, fragments[2].end);
250 EXPECT_FALSE(fragments[2].selected);
251
252 // Select to the end.
253 model.MoveCursorToEnd(true);
254 model.GetFragments(&fragments);
255 EXPECT_EQ(2U, fragments.size());
256 EXPECT_EQ(0U, fragments[0].begin);
257 EXPECT_EQ(5U, fragments[0].end);
258 EXPECT_FALSE(fragments[0].selected);
259 EXPECT_EQ(5U, fragments[1].begin);
260 EXPECT_EQ(11U, fragments[1].end);
261 EXPECT_TRUE(fragments[1].selected);
262 }
263
264 TEST(TextfieldViewsModelTest, SetText) {
265 TextfieldViewsModel model;
266 model.Append(ASCIIToUTF16("HELLO"));
267 model.MoveCursorToEnd(false);
268 model.SetText(ASCIIToUTF16("GOODBYE"));
269 EXPECT_STR_EQ("GOODBYE", model.text());
270 EXPECT_EQ(5U, model.cursor_pos());
271 model.SelectAll();
272 EXPECT_STR_EQ("GOODBYE", model.GetSelectedText());
273 // Selection move the current pos to the begining.
274 EXPECT_EQ(0U, model.cursor_pos());
275 model.MoveCursorToEnd(false);
276 EXPECT_EQ(7U, model.cursor_pos());
277
278 model.SetText(ASCIIToUTF16("BYE"));
279 EXPECT_EQ(3U, model.cursor_pos());
280 EXPECT_EQ(string16(), model.GetSelectedText());
281 model.SetText(ASCIIToUTF16(""));
282 EXPECT_EQ(0U, model.cursor_pos());
283 }
284
285 } // namespace views
OLDNEW
« no previous file with comments | « views/controls/textfield/textfield_views_model.cc ('k') | views/event.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698