2 // TabControlTest.cs: Test cases for TabControl.
5 // Ritvik Mayank (mritvik@novell.com)
7 // (C) 2005 Novell, Inc. (http://www.novell.com)
12 using System.Windows.Forms;
14 using NUnit.Framework;
16 namespace MonoTests.System.Windows.Forms
19 public class TabControlTest : TestHelper
21 private int _selected_index_changed = 0;
23 private class TabControlPoker : TabControl {
25 public bool CheckIsInputKey (Keys key)
27 return IsInputKey (key);
30 protected override void WndProc (ref Message m)
37 protected override void SetUp () {
38 _selected_index_changed = 0;
43 public void TabControlPropertyTest ()
45 Form myForm = new Form ();
46 myForm.ShowInTaskbar = false;
47 TabControl myTabControl = new TabControl ();
48 myTabControl.Visible = true;
49 myTabControl.Name = "Mono TabControl";
52 Assert.AreEqual (TabAlignment.Top, myTabControl.Alignment, "A1");
53 Assert.AreEqual (TabAppearance.Normal, myTabControl.Appearance, "#A2");
56 Assert.AreEqual (TabDrawMode.Normal, myTabControl.DrawMode, "#D5");
59 Assert.AreEqual (false, myTabControl.HotTrack, "#H1");
62 Assert.AreEqual (null, myTabControl.ImageList, "#I1");
65 Assert.AreEqual (false, myTabControl.Multiline, "#M1");
68 Assert.AreEqual (6, myTabControl.Padding.X, "#P1");
69 Assert.AreEqual (3, myTabControl.Padding.Y, "#P1");
72 Assert.AreEqual (0, myTabControl.RowCount, "#R1");
75 Assert.AreEqual (-1, myTabControl.SelectedIndex, "#S1");
76 Assert.AreEqual (null, myTabControl.SelectedTab, "#S2");
77 Assert.AreEqual (false, myTabControl.ShowToolTips, "#S3");
78 Assert.AreEqual (TabSizeMode.Normal, myTabControl.SizeMode, "#S4");
81 Assert.AreEqual (0, myTabControl.TabCount, "#T1");
82 Assert.AreEqual (0, myTabControl.TabPages.Count, "#T2");
88 [Category ("NotWorking")]
89 public void GetTabRectTest ()
91 TabControl myTabControl = new TabControl ();
92 TabPage myTabPage = new TabPage();
93 myTabControl.Controls.Add(myTabPage);
94 myTabPage.TabIndex = 0;
95 Rectangle myTabRect = myTabControl.GetTabRect (0);
96 Assert.AreEqual (2, myTabRect.X, "#GetT1");
97 Assert.AreEqual (2, myTabRect.Y, "#GetT2");
98 Assert.AreEqual (42, myTabRect.Width, "#GetT3");
99 // It is environment dependent
100 //Assert.AreEqual (18, myTabRect.Height, "#GetT4");
104 public void ToStringTest ()
106 TabControl myTabControl = new TabControl ();
107 Assert.AreEqual ("System.Windows.Forms.TabControl, TabPages.Count: 0", myTabControl.ToString(), "#1");
111 public void ClearTabPagesTest ()
114 TabControl tab = new TabControl ();
115 tab.TabPages.Clear ();
116 Assert.AreEqual (-1, tab.SelectedIndex, "#A1");
117 Assert.AreEqual (0, tab.TabPages.Count, "#A2");
120 tab.Controls.Add (new TabPage ());
121 Assert.AreEqual (0, tab.SelectedIndex, "#B1");
122 Assert.AreEqual (1, tab.TabPages.Count, "#B2");
123 tab.TabPages.Clear();
124 Assert.AreEqual (-1, tab.SelectedIndex, "#B3");
125 Assert.AreEqual (0, tab.TabPages.Count, "#B4");
127 // multiple tab pages
128 tab.Controls.Add (new TabPage ());
129 tab.Controls.Add (new TabPage ());
130 tab.Controls.Add (new TabPage ());
131 Assert.AreEqual (0, tab.SelectedIndex, "#C1");
132 Assert.AreEqual (3, tab.TabPages.Count, "#C2");
133 tab.SelectedIndex = 1;
134 tab.TabPages.Clear ();
135 Assert.AreEqual (-1, tab.SelectedIndex, "#C3");
136 Assert.AreEqual (0, tab.TabPages.Count, "#C4");
140 [Category ("NotWorking")]
141 public void Controls_Remove_HandleCreated ()
143 TabControl tab = new TabControl ();
144 tab.SelectedIndexChanged += new EventHandler (SelectedIndexChanged);
146 Form form = new Form ();
147 form.ShowInTaskbar = false;
148 form.Controls.Add (tab);
151 tab.Controls.Add (new TabPage ());
152 tab.Controls.Add (new TabPage ());
153 tab.Controls.Add (new TabPage ());
154 tab.Controls.Add (new TabPage ());
155 tab.Controls.Add (new TabPage ());
156 tab.Controls.Add (new TabPage ());
158 Assert.AreEqual (0, tab.SelectedIndex, "#A1");
159 Assert.AreEqual (6, tab.TabPages.Count, "#A2");
160 Assert.AreEqual (0, _selected_index_changed, "#A3");
162 // remove selected tab
163 tab.SelectedIndex = 2;
164 Assert.AreEqual (2, tab.SelectedIndex, "#B1");
165 Assert.AreEqual (1, _selected_index_changed, "#B2");
166 tab.Controls.RemoveAt (2);
168 Assert.AreEqual (0, tab.SelectedIndex, "#B3");
170 Assert.AreEqual (1, tab.SelectedIndex, "#B3");
172 Assert.AreEqual (5, tab.TabPages.Count, "#B4");
173 Assert.AreEqual (2, _selected_index_changed, "#B5");
175 // remove not-selected tab
177 Assert.AreEqual (0, tab.SelectedIndex, "#C1");
179 Assert.AreEqual (1, tab.SelectedIndex, "#C1");
181 Assert.AreEqual (2, _selected_index_changed, "#C2");
182 tab.Controls.RemoveAt (3);
184 Assert.AreEqual (0, tab.SelectedIndex, "#C3");
186 Assert.AreEqual (2, tab.SelectedIndex, "#C3");
188 Assert.AreEqual (4, tab.TabPages.Count, "#C4");
190 Assert.AreEqual (2, _selected_index_changed, "#C5");
192 Assert.AreEqual (3, _selected_index_changed, "#C5");
196 tab.Controls.RemoveAt (3);
198 Assert.AreEqual (0, tab.SelectedIndex, "#D1");
200 Assert.AreEqual (2, tab.SelectedIndex, "#D1");
202 Assert.AreEqual (3, tab.TabPages.Count, "#D2");
204 Assert.AreEqual (2, _selected_index_changed, "#D3");
206 Assert.AreEqual (3, _selected_index_changed, "#D3");
210 tab.Controls.RemoveAt (0);
211 Assert.AreEqual (0, tab.SelectedIndex, "#E1");
212 Assert.AreEqual (2, tab.TabPages.Count, "#E2");
214 Assert.AreEqual (3, _selected_index_changed, "#E3");
216 Assert.AreEqual (4, _selected_index_changed, "#E3");
219 // remove remaining tabs
220 tab.Controls.RemoveAt (1);
221 tab.Controls.RemoveAt (0);
222 Assert.AreEqual (-1, tab.SelectedIndex, "#F1");
223 Assert.AreEqual (0, tab.TabPages.Count, "#F2");
225 Assert.AreEqual (4, _selected_index_changed, "#F3");
227 Assert.AreEqual (5, _selected_index_changed, "#F3");
232 [Category ("NotWorking")]
233 public void Controls_Remove_HandleNotCreated ()
235 TabControl tab = new TabControl ();
236 tab.SelectedIndexChanged += new EventHandler (SelectedIndexChanged);
237 tab.Controls.Add (new TabPage ());
238 tab.Controls.Add (new TabPage ());
239 tab.Controls.Add (new TabPage ());
240 tab.Controls.Add (new TabPage ());
241 tab.Controls.Add (new TabPage ());
242 tab.Controls.Add (new TabPage ());
244 Assert.AreEqual (-1, tab.SelectedIndex, "#A1");
245 Assert.AreEqual (6, tab.TabPages.Count, "#A2");
246 Assert.AreEqual (0, _selected_index_changed, "#A3");
248 // remove selected tab
249 tab.SelectedIndex = 2;
250 Assert.AreEqual (2, tab.SelectedIndex, "#B1");
252 Assert.AreEqual (0, _selected_index_changed, "#B2");
254 Assert.AreEqual (1, _selected_index_changed, "#B2");
256 tab.Controls.RemoveAt (2);
258 Assert.AreEqual (0, tab.SelectedIndex, "#B3");
260 Assert.AreEqual (1, tab.SelectedIndex, "#B3");
262 Assert.AreEqual (5, tab.TabPages.Count, "#B4");
264 Assert.AreEqual (0, _selected_index_changed, "#B5");
266 Assert.AreEqual (2, _selected_index_changed, "#B5");
269 // remove not-selected tab
270 tab.Controls.RemoveAt (3);
272 Assert.AreEqual (0, tab.SelectedIndex, "#C3");
274 Assert.AreEqual (2, tab.SelectedIndex, "#C3");
276 Assert.AreEqual (4, tab.TabPages.Count, "#C4");
278 Assert.AreEqual (0, _selected_index_changed, "#C5");
280 Assert.AreEqual (3, _selected_index_changed, "#C5");
284 tab.Controls.RemoveAt (3);
286 Assert.AreEqual (0, tab.SelectedIndex, "#D1");
288 Assert.AreEqual (2, tab.SelectedIndex, "#D1");
290 Assert.AreEqual (3, tab.TabPages.Count, "#D2");
292 Assert.AreEqual (0, _selected_index_changed, "#D3");
294 Assert.AreEqual (3, _selected_index_changed, "#D3");
298 tab.Controls.RemoveAt (0);
299 Assert.AreEqual (0, tab.SelectedIndex, "#E1");
300 Assert.AreEqual (2, tab.TabPages.Count, "#E2");
302 Assert.AreEqual (0, _selected_index_changed, "#E3");
304 Assert.AreEqual (4, _selected_index_changed, "#E3");
307 // remove remaining tabs
308 tab.Controls.RemoveAt (1);
309 tab.Controls.RemoveAt (0);
310 Assert.AreEqual (0, tab.SelectedIndex, "#F1");
311 Assert.AreEqual (0, tab.TabPages.Count, "#F2");
313 Assert.AreEqual (0, _selected_index_changed, "#F3");
315 Assert.AreEqual (4, _selected_index_changed, "#F3");
318 Form form = new Form ();
319 form.ShowInTaskbar = false;
320 form.Controls.Add (tab);
322 Assert.AreEqual (-1, tab.SelectedIndex, "#G1");
323 Assert.AreEqual (0, tab.TabPages.Count, "#G2");
325 Assert.AreEqual (0, _selected_index_changed, "#G3");
327 Assert.AreEqual (4, _selected_index_changed, "#G3");
332 public void SelectedIndex ()
334 TabControl tab = new TabControl ();
335 tab.SelectedIndexChanged += new EventHandler (SelectedIndexChanged);
336 tab.Controls.Add (new TabPage ());
337 tab.Controls.Add (new TabPage ());
339 tab.SelectedIndex = 0;
341 Assert.AreEqual (0, _selected_index_changed, "#A1");
343 Assert.AreEqual (1, _selected_index_changed, "#A1");
345 Assert.AreEqual (0, tab.SelectedIndex, "#A2");
347 tab.SelectedIndex = -1;
349 Assert.AreEqual (0, _selected_index_changed, "#B1");
351 Assert.AreEqual (2, _selected_index_changed, "#B1");
353 Assert.AreEqual (-1, tab.SelectedIndex, "#B2");
355 tab.SelectedIndex = 1;
357 Assert.AreEqual (0, _selected_index_changed, "#C1");
359 Assert.AreEqual (3, _selected_index_changed, "#C1");
361 Assert.AreEqual (1, tab.SelectedIndex, "#C2");
363 tab.SelectedIndex = 1;
365 Assert.AreEqual (0, _selected_index_changed, "#D1");
367 Assert.AreEqual (3, _selected_index_changed, "#D1");
369 Assert.AreEqual (1, tab.SelectedIndex, "#D2");
372 tab.SelectedIndex = 6;
374 Assert.AreEqual (0, _selected_index_changed, "#E1");
376 Assert.AreEqual (4, _selected_index_changed, "#E1");
378 Assert.AreEqual (6, tab.SelectedIndex, "#E2");
380 tab.SelectedIndex = 6;
382 Assert.AreEqual (0, _selected_index_changed, "#E31");
384 Assert.AreEqual (4, _selected_index_changed, "#E3");
386 Assert.AreEqual (6, tab.SelectedIndex, "#E4");
388 Form form = new Form ();
389 form.ShowInTaskbar = false;
390 form.Controls.Add (tab);
394 Assert.AreEqual (0, tab.SelectedIndex, "#E5");
396 tab.SelectedIndex = 0;
398 Assert.AreEqual (0, _selected_index_changed, "#F1");
400 Assert.AreEqual (4, _selected_index_changed, "#F1");
402 Assert.AreEqual (0, tab.SelectedIndex, "#F2");
404 tab.SelectedIndex = -1;
406 Assert.AreEqual (1, _selected_index_changed, "#G1");
408 Assert.AreEqual (5, _selected_index_changed, "#G1");
410 Assert.AreEqual (-1, tab.SelectedIndex, "#G2");
412 tab.SelectedIndex = 1;
414 Assert.AreEqual (2, _selected_index_changed, "#H1");
416 Assert.AreEqual (6, _selected_index_changed, "#H1");
418 Assert.AreEqual (1, tab.SelectedIndex, "#H2");
420 tab.SelectedIndex = 1;
422 Assert.AreEqual (2, _selected_index_changed, "#I1");
424 Assert.AreEqual (6, _selected_index_changed, "#I1");
426 Assert.AreEqual (1, tab.SelectedIndex, "#I2");
432 public void SelectedIndex_Ignore ()
434 TabControl c = new TabControl ();
435 c.SelectedIndexChanged += new EventHandler (SelectedIndexChanged);
438 Assert.AreEqual (0, _selected_index_changed, "#1");
440 Assert.AreEqual (1, _selected_index_changed, "#1");
443 c.TabPages.Add (new TabPage ());
444 c.TabPages.Add (new TabPage ());
445 Assert.AreEqual (0, c.SelectedIndex, "#2");
446 Form f = new Form ();
447 f.ShowInTaskbar = false;
451 Assert.AreEqual (0, _selected_index_changed, "#3");
453 Assert.AreEqual (1, _selected_index_changed, "#3");
455 c.SelectedIndex = 2; // beyond the pages - ignored
457 Assert.AreEqual (1, _selected_index_changed, "#4");
459 Assert.AreEqual (2, _selected_index_changed, "#4");
461 Assert.AreEqual (0, c.SelectedIndex, "#4");
466 public void SelectedIndex_Negative ()
468 Form form = new Form ();
469 form.ShowInTaskbar = false;
470 TabControl tab = new TabControl ();
471 tab.SelectedIndexChanged += new EventHandler (SelectedIndexChanged);
472 form.Controls.Add (tab);
474 Assert.AreEqual (-1, tab.SelectedIndex, "#A1");
475 tab.SelectedIndex = -1;
476 Assert.AreEqual (-1, tab.SelectedIndex, "#A2");
477 Assert.AreEqual (0, _selected_index_changed, "#A3");
480 tab.SelectedIndex = -2;
483 } catch (ArgumentOutOfRangeException ex) {
484 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#B2");
485 Assert.IsNotNull (ex.Message, "#B3");
486 Assert.IsTrue (ex.Message.IndexOf ("'-2'") != -1, "#B4");
487 Assert.IsTrue (ex.Message.IndexOf ("'SelectedIndex'") != -1, "#B5");
488 Assert.IsTrue (ex.Message.IndexOf ("-1") != -1, "#B6");
489 Assert.IsNotNull (ex.ParamName, "#B7");
490 Assert.AreEqual ("SelectedIndex", ex.ParamName, "#B8");
493 } catch (ArgumentException ex) {
494 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
495 Assert.IsNotNull (ex.Message, "#B3");
496 Assert.IsTrue (ex.Message.IndexOf ("'-2'") != -1, "#B4");
497 Assert.IsTrue (ex.Message.IndexOf ("'value'") != -1, "#B5");
498 Assert.IsTrue (ex.Message.IndexOf ("-1") != -1, "#B6");
499 Assert.IsNull (ex.ParamName, "#B7");
503 Assert.AreEqual (0, _selected_index_changed, "#C1");
504 Assert.AreEqual (-1, tab.SelectedIndex, "#C2");
506 Assert.AreEqual (0, _selected_index_changed, "#C3");
507 Assert.AreEqual (-1, tab.SelectedIndex, "#C4");
510 tab.SelectedIndex = -5;
513 } catch (ArgumentOutOfRangeException ex) {
514 Assert.AreEqual (typeof (ArgumentOutOfRangeException), ex.GetType (), "#D2");
515 Assert.IsNotNull (ex.Message, "#D3");
516 Assert.IsTrue (ex.Message.IndexOf ("'-5'") != -1, "#D4");
517 Assert.IsTrue (ex.Message.IndexOf ("'SelectedIndex'") != -1, "#D5");
518 Assert.IsTrue (ex.Message.IndexOf ("-1") != -1, "#D6");
519 Assert.IsNotNull (ex.ParamName, "#D7");
520 Assert.AreEqual ("SelectedIndex", ex.ParamName, "#D8");
523 } catch (ArgumentException ex) {
524 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#D2");
525 Assert.IsNotNull (ex.Message, "#D3");
526 Assert.IsTrue (ex.Message.IndexOf ("'-5'") != -1, "#D4");
527 Assert.IsTrue (ex.Message.IndexOf ("'value'") != -1, "#D5");
528 Assert.IsTrue (ex.Message.IndexOf ("-1") != -1, "#D6");
529 Assert.IsNull (ex.ParamName, "#D7");
533 Assert.AreEqual (-1, tab.SelectedIndex, "#E1");
534 tab.SelectedIndex = -1;
535 Assert.AreEqual (-1, tab.SelectedIndex, "#E2");
536 Assert.AreEqual (0, _selected_index_changed, "#E3");
542 [Category ("NotWorking")]
543 public void InputKeyTest ()
545 TabControlPoker p = new TabControlPoker ();
547 foreach (Keys key in Enum.GetValues (typeof (Keys))) {
555 Assert.IsFalse (p.CheckIsInputKey (key), "FALSE- " + key);
558 Assert.IsTrue (p.CheckIsInputKey (Keys.PageUp), "TRUE-pageup");
559 Assert.IsTrue (p.CheckIsInputKey (Keys.PageDown), "TRUE-pagedown");
560 Assert.IsTrue (p.CheckIsInputKey (Keys.End), "TRUE-end");
561 Assert.IsTrue (p.CheckIsInputKey (Keys.Home), "TRUE-home");
563 // Create the handle, things are a little different with
564 // the handle created
565 IntPtr dummy = p.Handle;
567 TestHelper.RemoveWarning (dummy);
569 foreach (Keys key in Enum.GetValues (typeof (Keys))) {
581 Assert.IsFalse (p.CheckIsInputKey (key), "PH-FALSE- " + key);
584 Assert.IsTrue (p.CheckIsInputKey (Keys.Left), "PH-TRUE-left");
585 Assert.IsTrue (p.CheckIsInputKey (Keys.Right), "PH-TRUE-right");
586 Assert.IsTrue (p.CheckIsInputKey (Keys.Up), "PH-TRUE-up");
587 Assert.IsTrue (p.CheckIsInputKey (Keys.Down), "PH-TRUE-down");
588 Assert.IsTrue (p.CheckIsInputKey (Keys.PageUp), "PH-TRUE-pageup");
589 Assert.IsTrue (p.CheckIsInputKey (Keys.PageDown), "PH-TRUE-pagedown");
590 Assert.IsTrue (p.CheckIsInputKey (Keys.End), "PH-TRUE-end");
591 Assert.IsTrue (p.CheckIsInputKey (Keys.Home), "PH-TRUE-home");
595 public void NoTabPages ()
597 Form form = new Form ();
598 TabControl tab = new TabControl ();
599 tab.SelectedIndex = 0;
600 Assert.AreEqual (0, tab.SelectedIndex, "#A1");
602 form.Controls.Add (tab);
604 Assert.AreEqual (0, tab.SelectedIndex, "#A2");
606 form.ShowInTaskbar = false;
609 Assert.AreEqual (-1, tab.SelectedIndex, "#A3");
614 [Test] // bug #81802. should not throw an exception
615 public void NoTabPages2 ()
617 Form form = new Form ();
618 form.Font = new Font ("Tahoma", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((byte) (0)));
619 TabControl tab = new TabControl ();
620 form.Controls.Add (tab);
625 private void SelectedIndexChanged (object sender, EventArgs e)
627 _selected_index_changed++;
632 public void MethodSelectTab ()
634 TabControl tc = new TabControl ();
635 tc.TabPages.Add ("One", "One");
636 tc.TabPages.Add ("Two", "Two");
637 tc.TabPages.Add ("Three", "Three");
640 Assert.AreEqual (1, tc.SelectedIndex, "A1");
642 tc.SelectTab (tc.TabPages[2]);
643 Assert.AreEqual (2, tc.SelectedIndex, "A2");
645 tc.SelectTab ("One");
646 Assert.AreEqual (0, tc.SelectedIndex, "A3");
650 Assert.AreEqual (2, tc.SelectedIndex, "A4");
653 Assert.AreEqual (0, tc.SelectedIndex, "A5");
655 tc.DeselectTab (tc.TabPages[0]);
656 Assert.AreEqual (1, tc.SelectedIndex, "A6");
658 tc.DeselectTab (tc.TabPages[0]);
659 Assert.AreEqual (1, tc.SelectedIndex, "A7");
661 tc.DeselectTab (tc.TabPages[1]);
662 Assert.AreEqual (2, tc.SelectedIndex, "A7");
664 tc.DeselectTab ("Two");
665 Assert.AreEqual (2, tc.SelectedIndex, "A8");
667 tc.DeselectTab ("Three");
668 Assert.AreEqual (0, tc.SelectedIndex, "A8");
672 [ExpectedException (typeof (ArgumentOutOfRangeException))]
673 public void MethodSelectTabAOORE ()
675 TabControl tc = new TabControl ();
676 tc.TabPages.Add (new TabPage ("One"));
677 tc.TabPages.Add (new TabPage ("Two"));
683 [ExpectedException (typeof (ArgumentOutOfRangeException))]
684 public void MethodSelectTabAOORE2 ()
686 TabControl tc = new TabControl ();
687 tc.TabPages.Add (new TabPage ("One"));
688 tc.TabPages.Add (new TabPage ("Two"));
694 public void EventSelected ()
696 Form f = new Form ();
697 TabControl tc = new TabControl ();
698 TabControlEventArgs tcea1 = new TabControlEventArgs (null, 0, TabControlAction.Deselected);
699 TabControlEventArgs tcea2 = new TabControlEventArgs (null, 0, TabControlAction.Selected);
700 TabControlCancelEventArgs tccea1 = new TabControlCancelEventArgs (null, 0, false, TabControlAction.Deselecting);
701 TabControlCancelEventArgs tccea2 = new TabControlCancelEventArgs (null, 0, false, TabControlAction.Selecting);
704 string events = string.Empty;
705 tc.SelectedIndexChanged += new EventHandler (delegate (Object obj, EventArgs e) { events += ("SelectedIndexChanged;"); });
706 tc.Deselecting += new TabControlCancelEventHandler (delegate (Object obj, TabControlCancelEventArgs e) { events += ("Deselecting;"); tccea1 = e; });
707 tc.Deselected += new TabControlEventHandler (delegate (Object obj, TabControlEventArgs e) { events += ("Deselected;"); tcea1 = e; });
708 tc.Selecting += new TabControlCancelEventHandler (delegate (Object obj, TabControlCancelEventArgs e) { events += ("Selecting;"); tccea2 = e; });
709 tc.Selected += new TabControlEventHandler (delegate (Object obj, TabControlEventArgs e) { events += ("Selected;"); tcea2 = e; });
711 TabPage tp1 = new TabPage ("One");
712 TabPage tp2 = new TabPage ("Two");
714 tc.TabPages.Add (tp1);
715 tc.TabPages.Add (tp2);
719 Assert.AreEqual ("Deselecting;Deselected;Selecting;Selected;SelectedIndexChanged;", events, "A1");
720 Assert.AreEqual (TabControlAction.Deselecting, tccea1.Action, "A2");
721 Assert.AreEqual (TabControlAction.Deselected, tcea1.Action, "A2");
722 Assert.AreEqual (TabControlAction.Selecting, tccea2.Action, "A2");
723 Assert.AreEqual (TabControlAction.Selected, tcea2.Action, "A2");
724 Assert.AreSame (tp2, tcea2.TabPage, "A3");
725 Assert.AreEqual (1, tcea2.TabPageIndex, "A4");
730 [Category ("NotWorking")]
731 public void EnterLeaveEvents ()
733 Form f = new Form ();
734 TabControl tc = new TabControl ();
735 TabPage p1 = new TabPage ();
736 string events = string.Empty;
737 tc.Enter += new EventHandler (delegate (Object obj, EventArgs e) { events += ("tc_OnEnter;"); });
738 tc.Leave += new EventHandler (delegate (Object obj, EventArgs e) { events += ("tc_OnLeave;"); });
739 p1.Enter += new EventHandler (delegate (Object obj, EventArgs e) { events += ("p1_OnEnter;");});
740 p1.Leave += new EventHandler (delegate (Object obj, EventArgs e) { events += ("p1_OnLeave;"); });
741 tc.TabPages.Add (p1);
743 Button b1 = new Button ();
752 Assert.AreEqual ("tc_OnEnter;p1_OnEnter;", events, "A1");
754 Assert.AreEqual ("tc_OnEnter;p1_OnEnter;p1_OnLeave;tc_OnLeave;", events, "A2");
757 [Test] // bug #499887
758 [Category ("NotWorking")]
759 public void FireFocusWhenSettingSelectionIndex ()
761 Form f = new Form ();
762 TabControl tc = new TabControl ();
763 TabPage p1 = new TabPage ();
764 TabPage p2 = new TabPage ();
765 string events = string.Empty;
767 tc.TabPages.Add (p1);
768 tc.TabPages.Add (p2);
769 tc.SelectedIndex = 0;
770 Button b1 = new Button ();
771 Button b2 = new Button ();
779 b2.GotFocus += new EventHandler (delegate (Object obj, EventArgs e) {
780 tc.SelectedIndex = 1;
783 tc.GotFocus += new EventHandler (delegate (Object obj, EventArgs e) { events += ("tc_OnGotFocus;"); });
784 p2.Enter += new EventHandler (delegate (Object obj, EventArgs e) { events += ("p2_OnEnter;");});
785 p2.Leave += new EventHandler (delegate (Object obj, EventArgs e) { events += ("p2_OnLeave;"); });
788 Assert.AreEqual ("tc_OnGotFocus;p2_OnEnter;", events, "A1");
789 Assert.IsTrue (tc.Focused, "A2");
797 public class TabPageCollectionTest : TestHelper
800 public void Indexer ()
802 TabControl tab = new TabControl ();
803 TabControl.TabPageCollection tabPages = new TabControl.TabPageCollection (tab);
804 TabPage tabPageA = new TabPage ();
805 TabPage tabPageB = new TabPage ();
806 TabPage tabPageC = new TabPage ();
807 TabPage tabPageD = new TabPage ();
808 tabPages.Add (tabPageA);
809 Assert.AreSame (tabPageA, tabPages [0], "#1");
810 tabPages [0] = tabPageB;
811 Assert.AreSame (tabPageB, tabPages [0], "#2");
812 tabPages.Add (tabPageC);
813 Assert.AreSame (tabPageB, tabPages [0], "#3");
814 Assert.AreSame (tabPageC, tabPages [1], "#4");
815 tabPages.Remove (tabPageB);
816 Assert.AreSame (tabPageC, tabPages [0], "#5");
817 tabPages [0] = tabPageD;
818 Assert.AreSame (tabPageD, tabPages [0], "#6");
820 Form form = new Form ();
821 form.ShowInTaskbar = false;
822 form.Controls.Add (tab);