2 // Copyright (c) 2005 Novell, Inc.
5 // Ritvik Mayank (mritvik@novell.com)
10 using System.Reflection;
11 using System.Windows.Forms;
13 using NUnit.Framework;
15 namespace MonoTests.System.Windows.Forms
18 public class TextBoxTest
27 textBox = new TextBox();
28 textBox.Invalidated += new InvalidateEventHandler (TextBox_Invalidated);
29 textBox.Paint += new PaintEventHandler (TextBox_Paint);
34 [Category ("NotWorking")]
35 public void TextBoxBasePropertyTest ()
37 Assert.AreEqual (false, textBox.AcceptsTab, "#1a");
38 textBox.Multiline = true;
39 textBox.AcceptsTab = true;
40 // SendKeys.SendWait ("^%");
41 Assert.AreEqual (true, textBox.AcceptsTab, "#1b");
42 Assert.AreEqual (true, textBox.AutoSize, "#2");
43 Assert.AreEqual (null, textBox.BackgroundImage, "#4a");
45 textBox.BackgroundImage = Image.FromFile (gif);
46 // comparing image objects fails on MS .Net so using Size property
47 Assert.AreEqual (Image.FromFile(gif, true).Size, textBox.BackgroundImage.Size, "#4b");
49 Assert.AreEqual (BorderStyle.Fixed3D, textBox.BorderStyle, "#5");
50 Assert.AreEqual (false, textBox.CanUndo, "#6a");
52 Clipboard.SetDataObject ("TEST");
54 Assert.AreEqual (true, textBox.CanUndo, "#6b");
57 Assert.AreEqual (false, textBox.CanUndo, "#6c");
59 Assert.AreEqual (true, textBox.HideSelection, "#8");
60 Assert.AreEqual (1, textBox.Lines.Length, "#9");
61 Assert.AreEqual (32767, textBox.MaxLength, "#10");
62 Assert.AreEqual (true, textBox.Modified, "#11");
63 Assert.AreEqual (true, textBox.Multiline, "#12a");
64 textBox.WordWrap = false;
65 Assert.AreEqual (true, textBox.Multiline, "#12b");
66 textBox.AcceptsReturn = true;
67 Assert.AreEqual (true, textBox.Multiline, "#12c");
68 Assert.AreEqual (20, textBox.PreferredHeight, "#13");
69 Assert.AreEqual (false, textBox.ReadOnly, "#14");
70 Assert.AreEqual ("", textBox.SelectedText, "#15");
71 textBox.Text = "sample TextBox";
72 Assert.AreEqual (0, textBox.SelectionLength, "#16b");
73 Assert.AreEqual (0, textBox.SelectionStart, "#17");
74 textBox.WordWrap = false;
75 textBox.AcceptsReturn = true;
76 Assert.AreEqual ("sample TextBox", textBox.Text, "#18");
77 Assert.AreEqual (14, textBox.TextLength, "#19");
78 Assert.AreEqual (false, textBox.WordWrap, "#20");
82 public void TextBoxPropertyTest ()
84 Assert.AreEqual (false, textBox.AcceptsReturn, "#21");
85 Assert.AreEqual (CharacterCasing.Normal, textBox.CharacterCasing, "#22");
86 Assert.AreEqual ('\0', textBox.PasswordChar, "#23");
87 textBox.PasswordChar = '*';
88 Assert.AreEqual ('*', textBox.PasswordChar, "#23b");
89 Assert.AreEqual (ScrollBars.None, textBox.ScrollBars, "#24");
90 Assert.AreEqual (-1, textBox.SelectionLength, "#25");
91 Assert.AreEqual (HorizontalAlignment.Left , textBox.TextAlign, "#26");
93 Assert.AreEqual (true, textBox.AutoCompleteCustomSource != null, "#27");
94 Assert.AreEqual (AutoCompleteMode.None, textBox.AutoCompleteMode, "#28");
95 Assert.AreEqual (AutoCompleteSource.None, textBox.AutoCompleteSource, "#29");
97 textBox.AutoCompleteCustomSource = null;
98 Assert.AreEqual (true, textBox.AutoCompleteCustomSource != null, "#30");
104 public void UseSystemPasswordCharDefault()
106 Assert.IsFalse(textBox.UseSystemPasswordChar);
110 public void UseSystemPasswordCharOverridesPasswordChar()
112 textBox.PasswordChar = '!';
113 textBox.UseSystemPasswordChar = true;
114 Assert.AreEqual('*', textBox.PasswordChar);
119 public void AppendTextTest ()
121 Form f = new Form ();
122 f.ShowInTaskbar = false;
124 textBox.Visible = true;
125 textBox.Text = "TextBox1";
126 TextBox textBox2 = new TextBox ();
127 textBox2.Visible = true;
128 f.Controls.Add (textBox);
129 f.Controls.Add (textBox2);
130 textBox2.AppendText (textBox.Text);
131 Assert.AreEqual ("TextBox1", textBox2.Text, "#27");
136 public void AppendTextTest2 ()
138 TextBox textBox2 = new TextBox ();
139 textBox2.AppendText ("hi");
140 textBox2.AppendText ("ho");
141 Assert.AreEqual ("hiho", textBox2.Text, "#1");
142 Assert.IsNotNull (textBox2.Lines, "#2");
143 Assert.AreEqual (1, textBox2.Lines.Length, "#3");
144 Assert.AreEqual ("hiho", textBox2.Lines [0], "#4");
148 public void AppendText_Multiline_CRLF ()
150 TextBox textBox = new TextBox ();
152 textBox.AppendText ("hi\r\n\r\n");
153 textBox.AppendText ("ho\r\n");
154 Assert.AreEqual ("hahi\r\n\r\nho\r\n", textBox.Text, "#A1");
155 Assert.IsNotNull (textBox.Lines, "#A2");
156 Assert.AreEqual (4, textBox.Lines.Length, "#A3");
157 Assert.AreEqual ("hahi", textBox.Lines [0], "#A4");
158 Assert.AreEqual (string.Empty, textBox.Lines [1], "#A5");
159 Assert.AreEqual ("ho", textBox.Lines [2], "#A6");
160 Assert.AreEqual (string.Empty, textBox.Lines [3], "#A7");
162 textBox.Multiline = true;
165 textBox.AppendText ("hi\r\n\r\n");
166 textBox.AppendText ("ho\r\n");
167 Assert.AreEqual ("hahi\r\n\r\nho\r\n", textBox.Text, "#B1");
168 Assert.IsNotNull (textBox.Lines, "#B2");
169 Assert.AreEqual (4, textBox.Lines.Length, "#B3");
170 Assert.AreEqual ("hahi", textBox.Lines [0], "#B4");
171 Assert.AreEqual (string.Empty, textBox.Lines [1], "#B5");
172 Assert.AreEqual ("ho", textBox.Lines [2], "#B6");
173 Assert.AreEqual (string.Empty, textBox.Lines [3], "#B7");
177 public void AppendText_Multiline_LF ()
179 TextBox textBox = new TextBox ();
182 textBox.AppendText ("hi\n\n");
183 textBox.AppendText ("ho\n");
184 Assert.AreEqual ("hahi\n\nho\n", textBox.Text, "#A1");
185 Assert.IsNotNull (textBox.Lines, "#A2");
186 Assert.AreEqual (4, textBox.Lines.Length, "#A3");
187 Assert.AreEqual ("hahi", textBox.Lines [0], "#A4");
188 Assert.AreEqual (string.Empty, textBox.Lines [1], "#A5");
189 Assert.AreEqual ("ho", textBox.Lines [2], "#A6");
190 Assert.AreEqual (string.Empty, textBox.Lines [3], "#A7");
192 textBox.Multiline = true;
195 textBox.AppendText ("hi\n\n");
196 textBox.AppendText ("ho\n");
197 Assert.AreEqual ("hahi\n\nho\n", textBox.Text, "#B1");
198 Assert.IsNotNull (textBox.Lines, "#B2");
199 Assert.AreEqual (4, textBox.Lines.Length, "#B3");
200 Assert.AreEqual ("hahi", textBox.Lines [0], "#B4");
201 Assert.AreEqual (string.Empty, textBox.Lines [1], "#B5");
202 Assert.AreEqual ("ho", textBox.Lines [2], "#B6");
203 Assert.AreEqual (string.Empty, textBox.Lines [3], "#B7");
207 public void BackColorTest ()
209 Assert.AreEqual (SystemColors.Window, textBox.BackColor, "#A1");
210 textBox.BackColor = Color.Red;
211 Assert.AreEqual (Color.Red, textBox.BackColor, "#A2");
212 textBox.BackColor = Color.White;
213 Assert.AreEqual (Color.White, textBox.BackColor, "#A3");
214 Assert.AreEqual (0, _invalidated, "#A4");
215 Assert.AreEqual (0, _paint, "#A5");
217 Form form = new Form ();
218 form.ShowInTaskbar = false;
219 form.Controls.Add (textBox);
222 Assert.AreEqual (Color.White, textBox.BackColor, "#B1");
223 Assert.AreEqual (0, _invalidated, "#B2");
224 Assert.AreEqual (0, _paint, "#B3");
225 textBox.BackColor = Color.Red;
226 Assert.AreEqual (Color.Red, textBox.BackColor, "#B4");
227 Assert.AreEqual (1, _invalidated, "#B5");
228 Assert.AreEqual (0, _paint, "#B6");
229 textBox.BackColor = Color.Red;
230 Assert.AreEqual (Color.Red, textBox.BackColor, "#B7");
231 Assert.AreEqual (1, _invalidated, "#B8");
232 Assert.AreEqual (0, _paint, "#B9");
233 textBox.BackColor = Color.Blue;
234 Assert.AreEqual (Color.Blue, textBox.BackColor, "#B10");
235 Assert.AreEqual (2, _invalidated, "#B11");
236 Assert.AreEqual (0, _paint, "#B12");
240 public void ClearTest ()
242 textBox.Text = "TextBox1";
243 Assert.AreEqual ("TextBox1", textBox.Text, "#28a" );
245 Assert.AreEqual ("", textBox.Text, "#28b");
249 public void ClearUndoTest ()
251 textBox.Text = "TextBox1";
252 textBox.SelectionLength = 4;
254 Assert.AreEqual ("Text", textBox.SelectedText, "#29a");
256 Assert.AreEqual (true, textBox.CanUndo, "#29b");
257 textBox.ClearUndo ();
258 Assert.AreEqual (false, textBox.CanUndo, "#29c");
262 public void ContextMenu ()
264 TextBox textBox = new TextBox ();
265 Assert.IsNull (textBox.ContextMenu);
269 public void CopyTest ()
271 textBox.Text = "ABCDE";
272 textBox.SelectionLength = 4;
274 Assert.AreEqual ("ABCD", textBox.SelectedText, "#30");
278 public void CutTest ()
280 textBox.Text = "ABCDE";
281 textBox.SelectionLength = 4;
283 Assert.AreEqual ("E", textBox.Text, "#31");
287 public void PasteTest ()
289 textBox.Text = "ABCDE";
290 textBox.SelectionLength = 4;
292 textBox.SelectionStart = textBox.SelectionStart + textBox.SelectionLength;
294 Assert.AreEqual ("ABCDABCD", textBox.Text, "#32");
298 [Ignore ("Depends on specific DPI")]
299 public void PreferredHeight ()
301 textBox.Font = new Font ("Arial", 14);
302 Assert.AreEqual (29, textBox.PreferredHeight, "#A1");
303 textBox.Font = new Font ("Arial", 16);
304 Assert.AreEqual (32, textBox.PreferredHeight, "#A2");
305 textBox.Font = new Font ("Arial", 17);
306 Assert.AreEqual (34, textBox.PreferredHeight, "#A3");
308 textBox.BorderStyle = BorderStyle.None;
310 Assert.AreEqual (27, textBox.PreferredHeight, "#B1");
311 textBox.Font = new Font ("Arial", 14);
312 Assert.AreEqual (22, textBox.PreferredHeight, "#B2");
313 textBox.Font = new Font ("Arial", 16);
314 Assert.AreEqual (25, textBox.PreferredHeight, "#B3");
318 public void SelectTest ()
320 textBox.Text = "This is a sample test.";
321 textBox.Select (0, 4);
322 Assert.AreEqual ("This", textBox.SelectedText, "#33");
326 public void SelectAllTest ()
328 textBox.Text = "This is a sample test.";
329 textBox.SelectAll ();
330 Assert.AreEqual ("This is a sample test.", textBox.SelectedText, "#34");
334 public void FocusSelectsAllTest ()
336 textBox.Text = "This is a sample test.";
337 textBox.CreateControl ();
339 Assert.AreEqual ("This is a sample test.", textBox.SelectedText, "#34");
343 [Category ("NotWorking")]
344 public void ForeColorTest ()
346 Assert.AreEqual (SystemColors.WindowText, textBox.ForeColor, "#A1");
347 textBox.ForeColor = Color.Red;
348 Assert.AreEqual (Color.Red, textBox.ForeColor, "#A2");
349 textBox.ForeColor = Color.White;
350 Assert.AreEqual (Color.White, textBox.ForeColor, "#A3");
351 Assert.AreEqual (0, _invalidated, "#A4");
352 Assert.AreEqual (0, _paint, "#A5");
354 Form form = new Form ();
355 form.ShowInTaskbar = false;
356 form.Controls.Add (textBox);
359 Assert.AreEqual (Color.White, textBox.ForeColor, "#B1");
360 Assert.AreEqual (0, _invalidated, "#B2");
361 Assert.AreEqual (0, _paint, "#B3");
362 textBox.ForeColor = Color.Red;
363 Assert.AreEqual (Color.Red, textBox.ForeColor, "#B4");
364 Assert.AreEqual (1, _invalidated, "#B5");
365 Assert.AreEqual (0, _paint, "#B6");
366 textBox.ForeColor = Color.Red;
367 Assert.AreEqual (Color.Red, textBox.ForeColor, "#B7");
368 Assert.AreEqual (1, _invalidated, "#B8");
369 Assert.AreEqual (0, _paint, "#B9");
370 textBox.ForeColor = Color.Blue;
371 Assert.AreEqual (Color.Blue, textBox.ForeColor, "#B10");
372 Assert.AreEqual (2, _invalidated, "#B11");
373 Assert.AreEqual (0, _paint, "#B12");
377 public void ToStringTest ()
379 Assert.AreEqual ("System.Windows.Forms.TextBox, Text: ", textBox.ToString(), "#35");
383 public void UndoTest1 ()
385 textBox.Text = "ABCDE";
386 textBox.SelectionLength = 4;
388 textBox.SelectionStart = textBox.SelectionStart + textBox.SelectionLength;
390 Console.WriteLine ("pre paste text: {0}", textBox.Text);
392 Assert.AreEqual ("ABCDE", textBox.Text, "#36");
396 public void WrappedText ()
398 string text = "blabla blablabalbalbalbalbalbal blabla blablabl bal " +
399 "bal bla bal balajkdhfk dskfk ersd dsfjksdhf sdkfjshd f";
401 textBox.Multiline = true;
402 textBox.Size = new Size (30, 168);
405 Form form = new Form ();
406 form.Controls.Add (textBox);
407 form.ShowInTaskbar = false;
410 Assert.AreEqual (text, textBox.Text);
414 public void MultilineText ()
416 string text = "line1\n\nline2\nline3\r\nline4";
418 textBox.Size = new Size (300, 168);
421 Form form = new Form ();
422 form.Controls.Add (textBox);
423 form.ShowInTaskbar = false;
426 Assert.AreEqual (text, textBox.Text, "#1");
428 text = "line1\n\nline2\nline3\r\nline4\rline5\r\n\nline6\n\n\nline7";
432 form.Visible = false;
435 Assert.AreEqual (text, textBox.Text, "#2");
440 public void ModifiedTest ()
442 Assert.AreEqual (true, textBox.Modified, "modified-1");
444 textBox.Modified = false;
445 Assert.AreEqual (false, textBox.Modified, "modified-2");
447 textBox.Modified = true;
448 Assert.AreEqual (true, textBox.Modified, "modified-2");
450 textBox.Text = "TEXT";
451 Assert.AreEqual (false, textBox.Modified, "modified-3");
454 void TextBox_Invalidated (object sender, InvalidateEventArgs e)
459 void TextBox_Paint (object sender, PaintEventArgs e)