5 // Alexander Olk (alex.olk@googlemail.com)
\r
6 // Gert Driesen (drieseng@users.sourceforge.net)
\r
10 using System.Collections;
\r
11 using System.Drawing;
\r
12 using System.Globalization;
\r
13 using System.Windows.Forms;
\r
15 using NUnit.Framework;
\r
17 namespace MonoTests.System.Windows.Forms
\r
20 public class UpDownTest
\r
23 public void SetUp ()
\r
28 private void Reset ()
\r
30 selected_item_changed = 0;
\r
36 public void UpDownActiveControlTest ()
\r
38 NumericUpDown n1 = new NumericUpDown ();
\r
39 Assert.IsNull (n1.ActiveControl, "1");
\r
43 public void UpDownBasePropTest ()
\r
45 NumericUpDown n1 = new NumericUpDown ();
\r
47 Assert.AreEqual (BorderStyle.Fixed3D, n1.BorderStyle, "#1");
\r
48 Assert.AreEqual (true, n1.InterceptArrowKeys, "#2");
\r
49 Assert.AreEqual (LeftRightAlignment.Right, n1.UpDownAlign, "#3");
\r
53 public void ToStringTest ()
\r
55 NumericUpDown n1 = new NumericUpDown ();
\r
57 Assert.AreEqual ("System.Windows.Forms.NumericUpDown, Minimum = 0, Maximum = 100", n1.ToString (), "1");
\r
60 n1.Maximum = 100.33m;
\r
61 Assert.AreEqual (string.Format (CultureInfo.CurrentCulture,
\r
62 "System.Windows.Forms.NumericUpDown, Minimum = {0}, Maximum = {1}",
\r
63 0.33, 100.33), n1.ToString (), "2");
\r
67 public void NumericUpDownStandardPropTest ()
\r
69 NumericUpDown n1 = new NumericUpDown ();
\r
71 Assert.AreEqual (100, n1.Maximum, "#4");
\r
72 Assert.AreEqual (0, n1.Minimum, "#5");
\r
73 Assert.AreEqual (0, n1.Value, "#6");
\r
74 Assert.AreEqual (0, n1.DecimalPlaces, "#7");
\r
75 Assert.IsFalse (n1.Hexadecimal, "#8");
\r
76 Assert.IsFalse (n1.ThousandsSeparator, "#9");
\r
77 Assert.AreEqual (1, n1.Increment, "#10");
\r
81 public void NumericUpDownEnhancedPropTest ()
\r
83 NumericUpDown n1 = new NumericUpDown ();
\r
86 Assert.AreEqual (200, n1.Maximum, "#11");
\r
87 Assert.AreEqual (200, n1.Value, "#12");
\r
91 Assert.AreEqual (50, n1.Minimum, "#13");
\r
97 Assert.AreEqual (50, n1.Value, "#14");
\r
103 Assert.AreEqual (89, n1.Value, "#15");
\r
106 Assert.AreEqual (90, n1.Value, "#16");
\r
110 [Category ("NotWorking")]
\r
111 public void NumericUpDownEditValidateTest ()
\r
113 NumericNew nn = new NumericNew ();
\r
114 Assert.IsTrue (nn.update_edit_text_called, "#17");
\r
116 Assert.IsFalse (nn.user_edit, "#18");
\r
119 nn.user_edit = true;
\r
121 Assert.IsTrue (nn.validate_edit_text_called, "#19");
\r
122 Assert.IsTrue (nn.update_edit_text_called, "#20");
\r
125 nn.user_edit = false;
\r
127 Assert.IsTrue (nn.validate_edit_text_called, "#21");
\r
128 Assert.IsTrue (nn.update_edit_text_called, "#22");
\r
131 Assert.AreEqual (10, nn.Value, "#23");
\r
135 [Category ("NotWorking")]
\r
136 public void NumericUpDown_BeginInit ()
\r
138 NumericNew nud = new NumericNew ();
\r
139 nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
\r
140 nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
\r
141 Assert.AreEqual (2, nud.CallStack.Count, "#A1");
\r
142 Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
\r
143 Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
\r
144 Assert.AreEqual (0, nud.Value, "#A4");
\r
145 Assert.AreEqual (2, nud.CallStack.Count, "#A5");
\r
146 Assert.AreEqual (0, value_changed, "#A6");
\r
147 Assert.AreEqual (0, text_changed, "#A7");
\r
150 Assert.AreEqual (2, nud.CallStack.Count, "#B1");
\r
152 Assert.AreEqual (3, nud.CallStack.Count, "#B2");
\r
153 Assert.AreEqual ("UpdateEditText", nud.CallStack [2], "#B3");
\r
154 Assert.AreEqual ("0", nud.Text, "#B4");
\r
155 Assert.AreEqual (10, nud.Value, "#B5");
\r
156 Assert.AreEqual (3, nud.CallStack.Count, "#B6");
\r
157 Assert.AreEqual (1, value_changed, "#B7");
\r
158 Assert.AreEqual (0, text_changed, "#B8");
\r
160 Assert.AreEqual (4, nud.CallStack.Count, "#B9");
\r
161 Assert.AreEqual ("UpdateEditText", nud.CallStack [3], "#B10");
\r
162 Assert.AreEqual (1, text_changed, "#B11");
\r
163 Assert.AreEqual ("10", nud.Text, "#B12");
\r
164 Assert.AreEqual (10, nud.Value, "#B13");
\r
165 Assert.AreEqual (4, nud.CallStack.Count, "#B14");
\r
166 Assert.AreEqual (1, value_changed, "#B15");
\r
167 Assert.AreEqual (1, text_changed, "#B16");
\r
169 // multiple calls to BeginInit are undone by a single EndInit call
\r
172 Assert.AreEqual (4, nud.CallStack.Count, "#C1");
\r
174 Assert.AreEqual (5, nud.CallStack.Count, "#C2");
\r
175 Assert.AreEqual ("UpdateEditText", nud.CallStack [4], "#C3");
\r
176 Assert.AreEqual ("10", nud.Text, "#C4");
\r
177 Assert.AreEqual (20, nud.Value, "#C5");
\r
178 Assert.AreEqual (5, nud.CallStack.Count, "#C6");
\r
179 Assert.AreEqual (2, value_changed, "#C7");
\r
180 Assert.AreEqual (1, text_changed, "#C8");
\r
182 Assert.AreEqual (6, nud.CallStack.Count, "#C9");
\r
183 Assert.AreEqual ("UpdateEditText", nud.CallStack [5], "#C10");
\r
184 Assert.AreEqual (2, text_changed, "#C11");
\r
185 Assert.AreEqual ("20", nud.Text, "#C12");
\r
186 Assert.AreEqual (20, nud.Value, "#C13");
\r
187 Assert.AreEqual (6, nud.CallStack.Count, "#C14");
\r
188 Assert.AreEqual (2, value_changed, "#C15");
\r
189 Assert.AreEqual (2, text_changed, "#C16");
\r
193 [Category ("NotWorking")]
\r
194 public void NumericUpDown_ChangingText ()
\r
196 NumericNew nud = new NumericNew ();
\r
197 nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
\r
198 nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
\r
199 Assert.IsFalse (nud.changing_text, "#A1");
\r
200 Assert.IsFalse (nud.user_edit, "#A2");
\r
201 Assert.AreEqual (0, text_changed, "#A3");
\r
204 Assert.IsFalse (nud.changing_text, "#B1");
\r
205 Assert.IsFalse (nud.user_edit, "#B2");
\r
206 Assert.AreEqual (5, nud.CallStack.Count, "#B3");
\r
207 Assert.AreEqual (1, text_changed, "#B4");
\r
209 nud.changing_text = true;
\r
211 Assert.IsFalse (nud.changing_text, "#C1");
\r
212 Assert.IsFalse (nud.user_edit, "#C2");
\r
213 Assert.AreEqual (5, nud.CallStack.Count, "#C3");
\r
214 Assert.AreEqual (2, text_changed, "#C4");
\r
218 [Category ("NotWorking")]
\r
219 public void NumericUpDown_EndInit ()
\r
221 NumericNew nud = new NumericNew ();
\r
222 nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
\r
223 nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
\r
224 Assert.AreEqual (2, nud.CallStack.Count, "#A1");
\r
225 Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
\r
226 Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
\r
227 Assert.AreEqual (0, nud.Value, "#A4");
\r
228 Assert.AreEqual (2, nud.CallStack.Count, "#A5");
\r
229 Assert.AreEqual (0, value_changed, "#A6");
\r
230 Assert.AreEqual (0, text_changed, "#A7");
\r
232 // EndInit without corresponding BeginInit
\r
234 Assert.AreEqual (3, nud.CallStack.Count, "#B1");
\r
235 Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#B2");
\r
236 Assert.AreEqual (0, nud.Value, "#B3");
\r
237 Assert.AreEqual (3, nud.CallStack.Count, "#B4");
\r
238 Assert.AreEqual (0, value_changed, "#B5");
\r
239 Assert.AreEqual (0, text_changed, "#B6");
\r
243 [Category ("NotWorking")]
\r
244 public void NumericUpDown_UpButton ()
\r
246 NumericNew nud = new NumericNew ();
\r
247 nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
\r
248 nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
\r
250 Assert.AreEqual (3, nud.CallStack.Count, "#A1");
\r
251 Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
\r
252 Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
\r
253 Assert.AreEqual ("UpdateEditText", nud.CallStack [2], "#A4");
\r
254 Assert.AreEqual (1, value_changed, "#A5");
\r
255 Assert.AreEqual (1, nud.Value, "#A6");
\r
256 Assert.AreEqual (3, nud.CallStack.Count, "#A7");
\r
257 Assert.AreEqual (1, value_changed, "#A8");
\r
258 Assert.AreEqual (1, text_changed, "#A9");
\r
262 Assert.AreEqual (7, nud.CallStack.Count, "#B1");
\r
263 Assert.AreEqual ("ValidateEditText", nud.CallStack [3], "#B2");
\r
264 Assert.AreEqual ("UpdateEditText", nud.CallStack [4], "#B3");
\r
265 Assert.AreEqual ("UpdateEditText", nud.CallStack [5], "#B4");
\r
266 Assert.AreEqual ("UpdateEditText", nud.CallStack [6], "#B5");
\r
267 Assert.AreEqual (3, value_changed, "#B6");
\r
268 Assert.AreEqual (6, nud.Value, "#B7");
\r
269 Assert.AreEqual ("6", nud.Text, "#B8");
\r
270 Assert.AreEqual (7, nud.CallStack.Count, "#B9");
\r
271 Assert.AreEqual (3, value_changed, "#B10");
\r
272 Assert.AreEqual (3, text_changed, "#B11");
\r
275 nud.user_edit = true;
\r
277 Assert.AreEqual (11, nud.CallStack.Count, "#C1");
\r
278 Assert.AreEqual ("ValidateEditText", nud.CallStack [7], "#C2");
\r
279 Assert.AreEqual ("UpdateEditText", nud.CallStack [8], "#C3");
\r
280 Assert.AreEqual ("UpdateEditText", nud.CallStack [9], "#C4");
\r
281 Assert.AreEqual ("UpdateEditText", nud.CallStack [10], "#C5");
\r
282 Assert.AreEqual (5, value_changed, "#C6");
\r
283 Assert.AreEqual (8, nud.Value, "#C7");
\r
284 Assert.AreEqual (11, nud.CallStack.Count, "#C8");
\r
285 Assert.AreEqual (5, value_changed, "#C9");
\r
286 Assert.AreEqual (5, text_changed, "#C10");
\r
287 nud.user_edit = false;
\r
288 Assert.AreEqual ("8", nud.Text, "#C11");
\r
289 Assert.AreEqual (11, nud.CallStack.Count, "#C12");
\r
290 Assert.AreEqual (5, value_changed, "#C13");
\r
291 Assert.AreEqual (5, text_changed, "#C14");
\r
293 nud.user_edit = false;
\r
295 nud.user_edit = true;
\r
297 Assert.AreEqual (14, nud.CallStack.Count, "#D1");
\r
298 Assert.AreEqual ("ValidateEditText", nud.CallStack [11], "#D2");
\r
299 Assert.AreEqual ("UpdateEditText", nud.CallStack [12], "#D3");
\r
300 Assert.AreEqual ("UpdateEditText", nud.CallStack [13], "#D4");
\r
301 Assert.AreEqual (6, value_changed, "#D5");
\r
302 Assert.AreEqual (100, nud.Value, "#D6");
\r
303 Assert.AreEqual (14, nud.CallStack.Count, "#D7");
\r
304 Assert.AreEqual (6, value_changed, "#D8");
\r
305 Assert.AreEqual (7, text_changed, "#D9");
\r
306 nud.user_edit = false;
\r
307 Assert.AreEqual ("100", nud.Text, "#D10");
\r
308 Assert.AreEqual (14, nud.CallStack.Count, "#D11");
\r
309 Assert.AreEqual (6, value_changed, "#D12");
\r
310 Assert.AreEqual (7, text_changed, "#D13");
\r
314 [Category ("NotWorking")]
\r
315 public void NumericUpDown_Value ()
\r
317 // obtain Value when UserEdit is false
\r
318 NumericNew nud = new NumericNew ();
\r
319 nud.TextChanged += new EventHandler (NumericUpDown_TextChanged);
\r
320 nud.ValueChanged += new EventHandler (NumericUpDown_ValueChanged);
\r
321 Assert.AreEqual (2, nud.CallStack.Count, "#A1");
\r
322 Assert.AreEqual ("ValidateEditText", nud.CallStack [0], "#A2");
\r
323 Assert.AreEqual ("UpdateEditText", nud.CallStack [1], "#A3");
\r
324 Assert.AreEqual (0, nud.Value, "#A4");
\r
325 Assert.AreEqual (2, nud.CallStack.Count, "#A5");
\r
326 Assert.AreEqual (0, value_changed, "#A6");
\r
327 Assert.AreEqual (0, text_changed, "#A7");
\r
329 // obtain Value when UserEdit is true
\r
330 nud.user_edit = true;
\r
331 Assert.AreEqual (2, nud.CallStack.Count, "#B1");
\r
332 Assert.AreEqual (0, nud.Value, "#B2");
\r
333 Assert.AreEqual (4, nud.CallStack.Count, "#B3");
\r
334 Assert.AreEqual ("ValidateEditText", nud.CallStack [2], "#B4");
\r
335 Assert.AreEqual ("UpdateEditText", nud.CallStack [3], "#B5");
\r
336 Assert.AreEqual (0, value_changed, "#B6");
\r
337 Assert.AreEqual (0, text_changed, "#B7");
\r
339 // modify Value when UserEdit is false
\r
340 nud.user_edit = false;
\r
342 Assert.AreEqual (5, nud.CallStack.Count, "#C1");
\r
343 Assert.AreEqual ("UpdateEditText", nud.CallStack [4], "#C2");
\r
344 Assert.AreEqual (1, value_changed, "#C3");
\r
345 Assert.AreEqual (1, text_changed, "#C4");
\r
346 Assert.AreEqual (10, nud.Value, "#C5");
\r
347 Assert.AreEqual (5, nud.CallStack.Count, "#C6");
\r
348 Assert.AreEqual (1, value_changed, "#C7");
\r
349 Assert.AreEqual (1, text_changed, "#C8");
\r
351 // setting same Value
\r
353 Assert.AreEqual (5, nud.CallStack.Count, "#D1");
\r
354 Assert.AreEqual (1, value_changed, "#D2");
\r
355 Assert.AreEqual (10, nud.Value, "#D3");
\r
356 Assert.AreEqual (5, nud.CallStack.Count, "#D4");
\r
357 Assert.AreEqual (1, value_changed, "#D5");
\r
358 Assert.AreEqual (1, text_changed, "#D6");
\r
360 // modify Value when UserEdit is true
\r
361 nud.user_edit = true;
\r
363 Assert.AreEqual (7, nud.CallStack.Count, "#E1");
\r
364 Assert.AreEqual ("UpdateEditText", nud.CallStack [5], "#E2");
\r
365 Assert.AreEqual ("UpdateEditText", nud.CallStack [6], "#E3");
\r
366 Assert.AreEqual (3, value_changed, "#E4");
\r
367 Assert.AreEqual (1, text_changed, "#E5");
\r
368 nud.user_edit = false; // reset UserEdit to avoid Value being parsed from Text
\r
369 Assert.AreEqual (10, nud.Value, "#E6");
\r
370 Assert.AreEqual (7, nud.CallStack.Count, "#E7");
\r
371 Assert.AreEqual (3, value_changed, "#E8");
\r
372 Assert.AreEqual (1, text_changed, "#E9");
\r
376 [Category ("NotWorking")]
\r
377 public void NumericUpDown_Value_Invalid ()
\r
379 NumericNew nud = new NumericNew ();
\r
383 Assert.Fail ("#A1");
\r
385 } catch (ArgumentOutOfRangeException ex) {
\r
386 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
\r
387 Assert.IsNotNull (ex.Message, "#A3");
\r
388 Assert.IsNotNull (ex.ParamName, "#A4");
\r
389 Assert.AreEqual ("Value", ex.ParamName, "#A5");
\r
390 Assert.IsNull (ex.InnerException, "#A6");
\r
393 } catch (ArgumentException ex) {
\r
394 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
\r
395 Assert.IsNotNull (ex.Message, "#A3");
\r
396 Assert.IsNull (ex.ParamName, "#A4");
\r
397 Assert.IsNull (ex.InnerException, "#A5");
\r
403 Assert.Fail ("#B1");
\r
405 } catch (ArgumentOutOfRangeException ex) {
\r
406 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
\r
407 Assert.IsNotNull (ex.Message, "#B3");
\r
408 Assert.IsNotNull (ex.ParamName, "#B4");
\r
409 Assert.AreEqual ("Value", ex.ParamName, "#B5");
\r
410 Assert.IsNull (ex.InnerException, "#B6");
\r
413 } catch (ArgumentException ex) {
\r
414 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
\r
415 Assert.IsNotNull (ex.Message, "#B3");
\r
416 Assert.IsNull (ex.ParamName, "#B4");
\r
417 Assert.IsNull (ex.InnerException, "#B5");
\r
423 Assert.Fail ("#C1");
\r
425 } catch (ArgumentOutOfRangeException ex) {
\r
426 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#C2");
\r
427 Assert.IsNotNull (ex.Message, "#C3");
\r
428 Assert.IsNotNull (ex.ParamName, "#C4");
\r
429 Assert.AreEqual ("Value", ex.ParamName, "#C5");
\r
430 Assert.IsNull (ex.InnerException, "#C6");
\r
433 } catch (ArgumentException ex) {
\r
434 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#C2");
\r
435 Assert.IsNotNull (ex.Message, "#C3");
\r
436 Assert.IsNull (ex.ParamName, "#C4");
\r
437 Assert.IsNull (ex.InnerException, "#C5");
\r
444 Assert.AreEqual (1000, nud.Value, "#D1");
\r
446 Assert.AreEqual (1000, nud.Value, "#D2");
\r
448 Assert.AreEqual (-1000, nud.Value, "#D3");
\r
452 Assert.Fail ("#E1");
\r
454 } catch (ArgumentOutOfRangeException ex) {
\r
455 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#E2");
\r
456 Assert.IsNotNull (ex.Message, "#E3");
\r
457 Assert.IsNotNull (ex.ParamName, "#E4");
\r
458 Assert.AreEqual ("Value", ex.ParamName, "#E5");
\r
459 Assert.IsNull (ex.InnerException, "#E6");
\r
462 } catch (ArgumentException ex) {
\r
463 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#E2");
\r
464 Assert.IsNotNull (ex.Message, "#E3");
\r
465 Assert.IsNull (ex.ParamName, "#E4");
\r
466 Assert.IsNull (ex.InnerException, "#E5");
\r
471 void NumericUpDown_TextChanged (object sender, EventArgs e)
\r
476 void NumericUpDown_ValueChanged (object sender, EventArgs e)
\r
481 public class NumericNew : NumericUpDown
\r
483 public bool update_edit_text_called = false;
\r
484 public bool validate_edit_text_called = false;
\r
485 private ArrayList _callStack = new ArrayList ();
\r
487 public ArrayList CallStack {
\r
488 get { return _callStack; }
\r
491 public bool user_edit {
\r
500 public bool changing_text {
\r
502 return ChangingText;
\r
505 ChangingText = value;
\r
509 public void Reset ()
\r
511 update_edit_text_called = false;
\r
512 validate_edit_text_called = false;
\r
513 _callStack.Clear ();
\r
516 protected override void UpdateEditText ()
\r
518 _callStack.Add ("UpdateEditText");
\r
519 update_edit_text_called = true;
\r
520 base.UpdateEditText ();
\r
523 protected override void ValidateEditText ()
\r
525 _callStack.Add ("ValidateEditText");
\r
526 validate_edit_text_called = true;
\r
527 base.ValidateEditText ();
\r
532 public void DomainUpDownStandardPropTest ()
\r
534 DomainUpDown d1 = new DomainUpDown ();
\r
536 Assert.AreEqual (0, d1.Items.Count, "#24");
\r
537 Assert.AreEqual (false, d1.Sorted, "#25");
\r
538 Assert.AreEqual (false, d1.Wrap, "#26");
\r
539 Assert.AreEqual ("System.Windows.Forms.DomainUpDown, Items.Count: 0, SelectedIndex: -1", d1.ToString (), "#26a");
\r
541 d1.Items.Add ("item1");
\r
542 d1.Items.Add ("item2");
\r
543 d1.Items.Add ("item3");
\r
544 d1.Items.Add ("item4");
\r
546 Assert.AreEqual (4, d1.Items.Count, "#27");
\r
547 Assert.AreEqual (-1, d1.SelectedIndex, "#28");
\r
548 Assert.AreEqual (null, d1.SelectedItem, "#29");
\r
552 [Category ("NotWorking")]
\r
553 public void DomainUpDownEnhancedPropTest ()
\r
555 DomainUpDown d1 = new DomainUpDown ();
\r
557 d1.Items.Add ("item1");
\r
558 d1.Items.Add ("item2");
\r
559 d1.Items.Add ("item3");
\r
560 d1.Items.Add ("item4");
\r
562 d1.SelectedIndex = 3;
\r
563 Assert.AreEqual (3, d1.SelectedIndex, "#30");
\r
565 d1.Items.Remove ("item1");
\r
567 Assert.AreEqual (3, d1.Items.Count, "#31");
\r
568 Assert.AreEqual (2, d1.SelectedIndex, "#32");
\r
570 d1.Items.Remove ("item4");
\r
571 Assert.AreEqual (2, d1.Items.Count, "#33");
\r
572 Assert.AreEqual (-1, d1.SelectedIndex, "#34");
\r
573 Assert.AreEqual (null, d1.SelectedItem, "#35");
\r
575 // strange, ArgumentOutOfRangeException on windows
\r
576 // d1.SelectedIndex = 1;
\r
577 //Assert.AreEqual (1, d1.SelectedIndex, "#36");
\r
580 Assert.AreEqual (0, d1.Items.Count, "#37");
\r
581 Assert.AreEqual (-1, d1.SelectedIndex, "#38");
\r
582 Assert.AreEqual (null, d1.SelectedItem, "#39");
\r
584 d1.Items.Add ("zitem1");
\r
585 d1.Items.Add ("oitem2");
\r
586 d1.Items.Add ("mitem3");
\r
587 d1.Items.Add ("aitem4");
\r
589 d1.SelectedIndex = 0;
\r
590 Assert.AreEqual ("zitem1", d1.SelectedItem.ToString (), "#40");
\r
593 Assert.AreEqual ("aitem4", d1.SelectedItem.ToString (), "#41");
\r
594 Assert.AreEqual ("aitem4", d1.Items[0].ToString (), "#42");
\r
597 d1.Items.Add ("item1");
\r
598 d1.Items.Add ("item2");
\r
599 d1.Items.Add ("item3");
\r
600 d1.Items.Add ("item4");
\r
601 d1.SelectedIndex = 0;
\r
604 Assert.AreEqual ("item1", d1.SelectedItem.ToString (), "#43");
\r
607 Assert.AreEqual ("item2", d1.SelectedItem.ToString (), "#44");
\r
609 d1.SelectedIndex = 0;
\r
612 Assert.AreEqual ("item4", d1.SelectedItem.ToString (), "#45");
\r
615 Assert.AreEqual ("item1", d1.SelectedItem.ToString (), "#46");
\r
618 Assert.AreEqual (null, d1.SelectedItem, "#47");
\r
622 [Category ("NotWorking")]
\r
623 public void DomainUpDown_SelectedIndex ()
\r
625 MockDomainUpDown dud = new MockDomainUpDown ();
\r
626 dud.SelectedItemChanged += new EventHandler (DomainUpDown_SelectedItemChanged);
\r
627 dud.TextChanged += new EventHandler (DomainUpDown_TextChanged);
\r
628 Assert.AreEqual (1, dud.CallStack.Count, "#A1");
\r
629 Assert.AreEqual ("set_Text: (0)", dud.CallStack [0], "#A2");
\r
630 Assert.AreEqual (0, selected_item_changed, "#A3");
\r
631 Assert.AreEqual (0, text_changed, "#A4");
\r
632 Assert.AreEqual (-1, dud.SelectedIndex, "#A5");
\r
634 string itemA = "itemA";
\r
635 dud.Items.Add (itemA);
\r
636 Assert.AreEqual (1, dud.CallStack.Count, "#B1");
\r
637 Assert.AreEqual (0, selected_item_changed, "#B2");
\r
638 Assert.AreEqual (0, text_changed, "#B3");
\r
639 Assert.AreEqual (-1, dud.SelectedIndex, "#B4");
\r
641 dud.SelectedIndex = 0;
\r
642 Assert.AreEqual (4, dud.CallStack.Count, "#C1");
\r
643 Assert.AreEqual ("UpdateEditText", dud.CallStack [1], "#C2");
\r
644 Assert.AreEqual ("set_Text:itemA (5)", dud.CallStack [2], "#C3");
\r
645 Assert.AreEqual ("OnChanged", dud.CallStack [3], "#C4");
\r
646 Assert.AreEqual (1, selected_item_changed, "#C5");
\r
647 Assert.AreEqual (1, text_changed, "#C6");
\r
648 Assert.AreEqual (0, dud.SelectedIndex, "#C7");
\r
650 dud.SelectedIndex = 0;
\r
651 Assert.AreEqual (4, dud.CallStack.Count, "#D1");
\r
652 Assert.AreEqual (1, selected_item_changed, "#D2");
\r
653 Assert.AreEqual (1, text_changed, "#D3");
\r
654 Assert.AreEqual (0, dud.SelectedIndex, "#D4");
\r
656 dud.SelectedIndex = -1;
\r
657 Assert.AreEqual (4, dud.CallStack.Count, "#E1");
\r
658 Assert.AreEqual (1, selected_item_changed, "#E2");
\r
659 Assert.AreEqual (1, text_changed, "#E3");
\r
660 Assert.AreEqual (-1, dud.SelectedIndex, "#E4");
\r
662 dud.SelectedIndex = 0;
\r
663 Assert.AreEqual (6, dud.CallStack.Count, "#F1");
\r
664 Assert.AreEqual ("UpdateEditText", dud.CallStack [4], "#F2");
\r
665 Assert.AreEqual ("set_Text:itemA (5)", dud.CallStack [5], "#F3");
\r
666 Assert.AreEqual (1, selected_item_changed, "#F4");
\r
667 Assert.AreEqual (1, text_changed, "#F5");
\r
668 Assert.AreEqual (0, dud.SelectedIndex, "#F6");
\r
670 string itemAbis = "itemA";
\r
671 dud.Items.Add (itemAbis);
\r
672 Assert.AreEqual (6, dud.CallStack.Count, "#G1");
\r
673 Assert.AreEqual (1, selected_item_changed, "#G2");
\r
674 Assert.AreEqual (1, text_changed, "#G3");
\r
675 Assert.AreEqual (0, dud.SelectedIndex, "#G4");
\r
677 dud.SelectedIndex = 1;
\r
678 Assert.AreEqual (8, dud.CallStack.Count, "#H1");
\r
679 Assert.AreEqual ("UpdateEditText", dud.CallStack [6], "#H2");
\r
680 Assert.AreEqual ("set_Text:itemA (5)", dud.CallStack [7], "#H3");
\r
681 Assert.AreEqual (1, selected_item_changed, "#H4");
\r
682 Assert.AreEqual (1, text_changed, "#H5");
\r
683 Assert.AreEqual (1, dud.SelectedIndex, "#H6");
\r
685 string itemB = "itemB";
\r
686 dud.Items.Add (itemB);
\r
687 Assert.AreEqual (8, dud.CallStack.Count, "#I1");
\r
688 Assert.AreEqual (1, selected_item_changed, "#I2");
\r
689 Assert.AreEqual (1, text_changed, "#I3");
\r
690 Assert.AreEqual (1, dud.SelectedIndex, "#I4");
\r
692 dud.SelectedIndex = 2;
\r
693 Assert.AreEqual (11, dud.CallStack.Count, "#J1");
\r
694 Assert.AreEqual ("UpdateEditText", dud.CallStack [8], "#J2");
\r
695 Assert.AreEqual ("set_Text:itemB (5)", dud.CallStack [9], "#J3");
\r
696 Assert.AreEqual ("OnChanged", dud.CallStack [10], "#J4");
\r
697 Assert.AreEqual (2, selected_item_changed, "#J5");
\r
698 Assert.AreEqual (2, text_changed, "#J6");
\r
699 Assert.AreEqual (2, dud.SelectedIndex, "#J7");
\r
703 [Category ("NotWorking")]
\r
704 public void DomainUpDown_Items_Add ()
\r
706 MockItem itemA = new MockItem ("itemA");
\r
707 MockItem itemB = new MockItem ("itemB");
\r
708 MockItem itemC = new MockItem ("itemC");
\r
710 MockDomainUpDown dud = new MockDomainUpDown ();
\r
711 dud.SelectedItemChanged += new EventHandler (DomainUpDown_SelectedItemChanged);
\r
712 dud.TextChanged += new EventHandler (DomainUpDown_TextChanged);
\r
715 dud.Items.Add (itemA);
\r
716 Assert.AreEqual (0, dud.CallStack.Count, "#A1");
\r
717 Assert.AreEqual (0, selected_item_changed, "#A2");
\r
718 Assert.AreEqual (0, text_changed, "#A3");
\r
719 Assert.AreEqual (-1, dud.SelectedIndex, "#A4");
\r
720 Assert.AreEqual (string.Empty, dud.Text, "#A5");
\r
721 Assert.AreEqual (1, dud.Items.Count, "#A6");
\r
722 Assert.AreSame (itemA, dud.Items [0], "#A7");
\r
724 dud.Items.Add (itemC);
\r
725 Assert.AreEqual (0, dud.CallStack.Count, "#B1");
\r
726 Assert.AreEqual (0, selected_item_changed, "#B2");
\r
727 Assert.AreEqual (0, text_changed, "#B3");
\r
728 Assert.AreEqual (-1, dud.SelectedIndex, "#B4");
\r
729 Assert.AreEqual (string.Empty, dud.Text, "#B5");
\r
730 Assert.AreEqual (2, dud.Items.Count, "#B6");
\r
731 Assert.AreSame (itemC, dud.Items [1], "#B7");
\r
733 dud.Items.Add (itemA);
\r
734 Assert.AreEqual (0, dud.CallStack.Count, "#C1");
\r
735 Assert.AreEqual (0, selected_item_changed, "#C2");
\r
736 Assert.AreEqual (0, text_changed, "#C3");
\r
737 Assert.AreEqual (-1, dud.SelectedIndex, "#C4");
\r
738 Assert.AreEqual (string.Empty, dud.Text, "#C5");
\r
739 Assert.AreEqual (3, dud.Items.Count, "#C6");
\r
740 Assert.AreSame (itemA, dud.Items [2], "#C7");
\r
743 Assert.AreEqual (3, dud.Items.Count, "#D1");
\r
744 Assert.AreSame (itemA, dud.Items [0], "#D2");
\r
745 Assert.AreSame (itemA, dud.Items [1], "#D3");
\r
746 Assert.AreSame (itemC, dud.Items [2], "#D4");
\r
748 // adding item causes re-sort
\r
749 dud.Items.Add (itemB);
\r
750 Assert.AreEqual (0, dud.CallStack.Count, "#E1");
\r
751 Assert.AreEqual (0, selected_item_changed, "#E2");
\r
752 Assert.AreEqual (0, text_changed, "#E3");
\r
753 Assert.AreEqual (-1, dud.SelectedIndex, "#E4");
\r
754 Assert.AreEqual (string.Empty, dud.Text, "#E5");
\r
755 Assert.AreEqual (4, dud.Items.Count, "#E6");
\r
756 Assert.AreSame (itemA, dud.Items [0], "#E7");
\r
757 Assert.AreSame (itemA, dud.Items [1], "#E8");
\r
758 Assert.AreSame (itemB, dud.Items [2], "#E9");
\r
759 Assert.AreSame (itemC, dud.Items [3], "#E10");
\r
763 [Category ("NotWorking")]
\r
764 public void DomainUpDown_Items_Indexer ()
\r
766 MockItem itemA = new MockItem ("itemA");
\r
767 MockItem itemAbis = new MockItem ("itemA");
\r
768 MockItem itemB = new MockItem ("itemB");
\r
769 MockItem itemC = new MockItem ("itemC");
\r
770 MockItem itemD = new MockItem ("itemD");
\r
771 MockItem itemE = new MockItem ("itemE");
\r
773 TestHelper.RemoveWarning (itemAbis);
\r
775 MockDomainUpDown dud = new MockDomainUpDown ();
\r
776 dud.SelectedItemChanged += new EventHandler (DomainUpDown_SelectedItemChanged);
\r
777 dud.TextChanged += new EventHandler (DomainUpDown_TextChanged);
\r
778 dud.Items.Add (itemC);
\r
779 dud.Items.Add (itemA);
\r
780 dud.Items.Add (itemB);
\r
781 dud.Items.Add (itemA);
\r
782 dud.SelectedIndex = 1;
\r
786 Assert.AreSame (itemC, dud.Items [0], "#A1");
\r
787 Assert.AreSame (itemA, dud.Items [1], "#A2");
\r
788 Assert.AreSame (itemB, dud.Items [2], "#A3");
\r
789 Assert.AreSame (itemA, dud.Items [3], "#A4");
\r
790 Assert.AreEqual (itemA.Text, dud.Text, "#A5");
\r
792 dud.Items [3] = itemD;
\r
793 Assert.AreEqual (0, dud.CallStack.Count, "#B1");
\r
794 Assert.AreEqual (0, selected_item_changed, "#B2");
\r
795 Assert.AreEqual (0, text_changed, "#B3");
\r
796 Assert.AreEqual (1, dud.SelectedIndex, "#B4");
\r
797 Assert.AreEqual (itemA.Text, dud.Text, "#B5");
\r
799 dud.Items [1] = itemE;
\r
800 Assert.AreEqual (3, dud.CallStack.Count, "#C1");
\r
801 Assert.AreEqual ("UpdateEditText", dud.CallStack [0], "#C2");
\r
802 Assert.AreEqual ("set_Text:itemE (5)", dud.CallStack [1], "#C3");
\r
803 Assert.AreEqual ("OnChanged", dud.CallStack [2], "#C4");
\r
804 Assert.AreEqual (1, selected_item_changed, "#C5");
\r
805 Assert.AreEqual (1, text_changed, "#C6");
\r
806 Assert.AreEqual (1, dud.SelectedIndex, "#C7");
\r
807 Assert.AreEqual (itemE.Text, dud.Text, "#C8");
\r
810 Assert.AreEqual (8, dud.CallStack.Count, "#D1");
\r
811 Assert.AreEqual ("UpdateEditText", dud.CallStack [3], "#D2");
\r
812 Assert.AreEqual ("set_Text:itemC (5)", dud.CallStack [4], "#D3");
\r
813 Assert.AreEqual ("OnChanged", dud.CallStack [5], "#D4");
\r
814 Assert.AreEqual ("UpdateEditText", dud.CallStack [6], "#D5");
\r
815 Assert.AreEqual ("set_Text:itemC (5)", dud.CallStack [7], "#D6");
\r
816 Assert.AreEqual (2, selected_item_changed, "#D7");
\r
817 Assert.AreEqual (2, text_changed, "#D8");
\r
818 Assert.AreEqual (1, dud.SelectedIndex, "#D9");
\r
819 Assert.AreEqual (itemC.Text, dud.Text, "#D10");
\r
820 Assert.AreSame (itemB, dud.Items [0], "#D11");
\r
821 Assert.AreSame (itemC, dud.Items [1], "#D12");
\r
822 Assert.AreSame (itemD, dud.Items [2], "#D13");
\r
823 Assert.AreSame (itemE, dud.Items [3], "#D14");
\r
825 dud.Items [3] = itemA;
\r
826 Assert.AreEqual (13, dud.CallStack.Count, "#E1");
\r
827 Assert.AreEqual ("UpdateEditText", dud.CallStack [8], "#E2");
\r
828 Assert.AreEqual ("set_Text:itemB (5)", dud.CallStack [9], "#E3");
\r
829 Assert.AreEqual ("OnChanged", dud.CallStack [10], "#E4");
\r
830 Assert.AreEqual ("UpdateEditText", dud.CallStack [11], "#E5");
\r
831 Assert.AreEqual ("set_Text:itemB (5)", dud.CallStack [12], "#E6");
\r
832 Assert.AreEqual (3, selected_item_changed, "#E7");
\r
833 Assert.AreEqual (3, text_changed, "#E8");
\r
834 Assert.AreEqual (1, dud.SelectedIndex, "#E9");
\r
835 Assert.AreEqual (itemB.Text, dud.Text, "#E10");
\r
839 [Category ("NotWorking")]
\r
840 public void DomainUpDown_Items_Indexer_Null ()
\r
842 MockDomainUpDown dud = new MockDomainUpDown ();
\r
843 dud.Items.Add ("itemA");
\r
844 dud.Items.Add ("itemB");
\r
845 dud.Items.Add ("itemC");
\r
846 dud.SelectedIndex = 0;
\r
848 // TODO: report as MS bug
\r
849 dud.Items [2] = null;
\r
850 dud.Items [1] = null;
\r
852 dud.Items [0] = null;
\r
854 } catch (NullReferenceException ex) {
\r
855 TestHelper.RemoveWarning (ex);
\r
860 public void DomainUpDown_Items_Insert ()
\r
866 public void DomainUpDown_Items_Remove ()
\r
872 public void DomainUpDown_Items_RemoveAt ()
\r
878 [Category ("NotWorking")]
\r
879 public void DomainUpDown_SelectedIndex_Invalid ()
\r
881 DomainUpDown dud = new DomainUpDown ();
\r
882 dud.Items.Add ("item1");
\r
885 dud.SelectedIndex = -2;
\r
886 Assert.Fail ("#A1");
\r
888 } catch (ArgumentOutOfRangeException ex) {
\r
889 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
\r
890 Assert.IsNotNull (ex.Message, "#A3");
\r
891 Assert.IsNotNull (ex.ParamName, "#A4");
\r
892 Assert.AreEqual ("SelectedIndex", ex.ParamName, "#A5");
\r
893 Assert.IsNull (ex.InnerException, "#A6");
\r
896 } catch (ArgumentException ex) {
\r
897 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
\r
898 Assert.IsNotNull (ex.Message, "#A3");
\r
899 Assert.IsNull (ex.ParamName, "#A4");
\r
900 Assert.IsNull (ex.InnerException, "#A5");
\r
905 dud.SelectedIndex = 1;
\r
906 Assert.Fail ("#B1");
\r
908 } catch (ArgumentOutOfRangeException ex) {
\r
909 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#A2");
\r
910 Assert.IsNotNull (ex.Message, "#A3");
\r
911 Assert.IsNotNull (ex.ParamName, "#A4");
\r
912 Assert.AreEqual ("SelectedIndex", ex.ParamName, "#A5");
\r
913 Assert.IsNull (ex.InnerException, "#A6");
\r
916 } catch (ArgumentException ex) {
\r
917 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
\r
918 Assert.IsNotNull (ex.Message, "#B3");
\r
919 Assert.IsNull (ex.ParamName, "#B4");
\r
920 Assert.IsNull (ex.InnerException, "#B5");
\r
926 public void DomainUpDown_SelectedItem_Null ()
\r
928 DomainUpDown dud = new DomainUpDown ();
\r
929 dud.Items.Add ("item1");
\r
930 dud.SelectedIndex = 0;
\r
931 Assert.AreEqual (0, dud.SelectedIndex, "#A1");
\r
932 Assert.IsNotNull (dud.SelectedItem, "#A2");
\r
934 dud.SelectedItem = null;
\r
935 Assert.AreEqual (-1, dud.SelectedIndex, "#B1");
\r
936 Assert.IsNull (dud.SelectedItem, "#B2");
\r
939 void DomainUpDown_TextChanged (object sender, EventArgs e)
\r
944 void DomainUpDown_SelectedItemChanged (object sender, EventArgs e)
\r
946 selected_item_changed++;
\r
949 public class MockDomainUpDown : DomainUpDown
\r
951 private ArrayList _callStack = new ArrayList ();
\r
953 public ArrayList CallStack {
\r
954 get { return _callStack; }
\r
957 public bool user_edit {
\r
966 public bool changing_text {
\r
968 return ChangingText;
\r
971 ChangingText = value;
\r
975 public void Reset ()
\r
977 _callStack.Clear ();
\r
980 public override string Text {
\r
986 _callStack.Add ("set_Text:null");
\r
988 _callStack.Add ("set_Text:" + value + " (" + value.Length + ")");
\r
993 protected override void OnChanged (object source, EventArgs e)
\r
995 _callStack.Add ("OnChanged");
\r
996 base.OnChanged (source, e);
\r
999 protected override void UpdateEditText ()
\r
1001 _callStack.Add ("UpdateEditText");
\r
1002 base.UpdateEditText ();
\r
1005 protected override void ValidateEditText ()
\r
1007 _callStack.Add ("ValidateEditText");
\r
1008 base.ValidateEditText ();
\r
1012 private int selected_item_changed = 0;
\r
1013 private int text_changed = 0;
\r
1014 private int value_changed = 0;
\r
1016 public class MockItem
\r
1018 public MockItem (string text)
\r
1023 public string Text {
\r
1024 get { return _text; }
\r
1027 public override string ToString ()
\r
1032 private readonly string _text;
\r