2 // Copyright (c) 2006 Novell, Inc.
5 // Jackson Harper (jackson@ximian.com)
9 using System.Windows.Forms;
11 using NUnit.Framework;
13 namespace MonoTests.System.Windows.Forms {
16 public class FocusTest {
18 public class ControlPoker : Button {
20 public void _Select (bool directed, bool forward)
22 Select (directed, forward);
26 private ControlPoker [] flat_controls;
29 protected virtual void SetUp ()
33 flat_controls = new ControlPoker [] {
34 new ControlPoker (), new ControlPoker (), new ControlPoker ()
39 public void ControlSelectNextFlatTest ()
41 Form form = new Form ();
43 form.Controls.AddRange (flat_controls);
46 Assert.IsTrue (flat_controls [0].Focused, "sanity-1");
47 Assert.AreEqual (flat_controls [0], form.ActiveControl, "sanity-2");
49 form.SelectNextControl (flat_controls [0], true, false, false, false);
50 Assert.IsFalse (flat_controls [0].Focused, "A1");
51 Assert.IsTrue (flat_controls [1].Focused, "A2");
52 Assert.IsFalse (flat_controls [2].Focused, "A3");
53 Assert.AreEqual (flat_controls [1], form.ActiveControl, "A4");
55 form.SelectNextControl (flat_controls [1], true, false, false, false);
56 Assert.IsFalse (flat_controls [0].Focused, "A5");
57 Assert.IsFalse (flat_controls [1].Focused, "A6");
58 Assert.IsTrue (flat_controls [2].Focused, "A7");
59 Assert.AreEqual (flat_controls [2], form.ActiveControl, "A8");
61 // Can't select anymore because we aren't wrapping
62 form.SelectNextControl (flat_controls [2], true, false, false, false);
63 Assert.IsFalse (flat_controls [0].Focused, "A9");
64 Assert.IsFalse (flat_controls [1].Focused, "A10");
65 Assert.IsTrue (flat_controls [2].Focused, "A11");
66 Assert.AreEqual (flat_controls [2], form.ActiveControl, "A12");
68 form.SelectNextControl (flat_controls [2], true, false, false, true);
69 Assert.IsTrue (flat_controls [0].Focused, "A13");
70 Assert.IsFalse (flat_controls [1].Focused, "A14");
71 Assert.IsFalse (flat_controls [2].Focused, "A15");
72 Assert.AreEqual (flat_controls [0], form.ActiveControl, "A16");
76 public void SelectNextControlNullTest ()
78 Form form = new Form ();
81 form.Controls.AddRange (flat_controls);
83 form.SelectNextControl (null, true, false, false, false);
84 Assert.IsTrue (flat_controls [0].Focused, "A1");
85 Assert.IsFalse (flat_controls [1].Focused, "A2");
86 Assert.IsFalse (flat_controls [2].Focused, "A3");
87 Assert.AreEqual (flat_controls [0], form.ActiveControl, "A4");
89 form.SelectNextControl (null, true, false, false, false);
90 Assert.IsTrue (flat_controls [0].Focused, "A5");
91 Assert.IsFalse (flat_controls [1].Focused, "A6");
92 Assert.IsFalse (flat_controls [2].Focused, "A7");
93 Assert.AreEqual (flat_controls [0], form.ActiveControl, "A8");
97 public void SelectControlTest ()
99 Form form = new Form ();
102 form.Controls.AddRange (flat_controls);
104 flat_controls [0]._Select (false, false);
105 Assert.AreEqual (flat_controls [0], form.ActiveControl, "A1");
107 flat_controls [0]._Select (true, false);
108 Assert.AreEqual (flat_controls [0], form.ActiveControl, "A2");
110 flat_controls [0]._Select (true, true);
111 Assert.AreEqual (flat_controls [0], form.ActiveControl, "A3");
115 public void GetNextControl ()