Some simple focus unit tests.
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / FocusTest.cs
1 //
2 // Copyright (c) 2006 Novell, Inc.
3 //
4 // Authors:
5 //      Jackson Harper  (jackson@ximian.com)
6 //
7
8 using System;
9 using System.Windows.Forms;
10
11 using NUnit.Framework;
12
13 namespace MonoTests.System.Windows.Forms {
14
15         [TestFixture]
16         public class FocusTest {
17
18                 public class ControlPoker : Button {
19
20                         public void _Select (bool directed, bool forward)
21                         {
22                                 Select (directed, forward);
23                         }
24                 }
25
26                 private ControlPoker [] flat_controls;
27
28                 [SetUp]
29                 protected virtual void SetUp ()
30                 {
31                         flat_controls = null;
32
33                         flat_controls = new ControlPoker [] {
34                                 new ControlPoker (), new ControlPoker (), new ControlPoker ()
35                         };
36                 }
37
38                 [Test]
39                 public void ControlSelectNextFlatTest ()
40                 {
41                         Form form = new Form ();
42
43                         form.Controls.AddRange (flat_controls);
44                         form.Show ();
45
46                         Assert.IsTrue (flat_controls [0].Focused, "sanity-1");
47                         Assert.AreEqual (flat_controls [0], form.ActiveControl, "sanity-2");
48
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");
54
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");
60
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");
67
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");
73                 }
74
75                 [Test]
76                 public void SelectNextControlNullTest ()
77                 {
78                         Form form = new Form ();
79
80                         form.Show ();
81                         form.Controls.AddRange (flat_controls);
82
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");
88
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");
94                 }
95
96                 [Test]
97                 public void SelectControlTest ()
98                 {
99                         Form form = new Form ();
100
101                         form.Show ();
102                         form.Controls.AddRange (flat_controls);
103
104                         flat_controls [0]._Select (false, false);
105                         Assert.AreEqual (flat_controls [0], form.ActiveControl, "A1");
106
107                         flat_controls [0]._Select (true, false);
108                         Assert.AreEqual (flat_controls [0], form.ActiveControl, "A2");
109
110                         flat_controls [0]._Select (true, true);
111                         Assert.AreEqual (flat_controls [0], form.ActiveControl, "A3");
112                 }
113
114                 [Test]
115                 public void GetNextControl ()
116                 {
117                         
118                 }
119
120         }
121
122 }
123