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 internal bool directed_select_called
;
22 public ControlPoker ()
26 public ControlPoker (string text
)
31 public void _Select (bool directed
, bool forward
)
33 Select (directed
, forward
);
36 protected override void Select (bool directed
, bool forward
)
38 directed_select_called
= true;
39 base.Select (directed
, forward
);
44 private ControlPoker
[] flat_controls
;
46 public class ContainerPoker
: ContainerControl
{
48 public ContainerPoker (string s
)
53 public void _Select (bool directed
, bool forward
)
55 Select (directed
, forward
);
58 public override string ToString ()
60 return String
.Concat (GetType (), " ", Text
);
64 public class GroupBoxPoker
: GroupBox
{
66 public GroupBoxPoker (string s
)
71 public void _Select (bool directed
, bool forward
)
73 Select (directed
, forward
);
76 public override string ToString ()
78 return String
.Concat (GetType (), " ", Text
);
83 protected virtual void SetUp ()
87 flat_controls
= new ControlPoker
[] {
88 new ControlPoker (), new ControlPoker (), new ControlPoker ()
91 for (int i
= 0; i
< flat_controls
.Length
; i
++)
92 flat_controls
[i
].Text
= i
.ToString ();
96 public void ControlSelectNextFlatTest ()
98 Form form
= new Form ();
100 form
.Controls
.AddRange (flat_controls
);
103 Assert
.IsTrue (flat_controls
[0].Focused
, "sanity-1");
104 Assert
.AreEqual (flat_controls
[0], form
.ActiveControl
, "sanity-2");
106 form
.SelectNextControl (flat_controls
[0], true, false, false, false);
107 Assert
.IsFalse (flat_controls
[0].Focused
, "A1");
108 Assert
.IsTrue (flat_controls
[1].Focused
, "A2");
109 Assert
.IsFalse (flat_controls
[2].Focused
, "A3");
110 Assert
.AreEqual (flat_controls
[1], form
.ActiveControl
, "A4");
112 form
.SelectNextControl (flat_controls
[1], true, false, false, false);
113 Assert
.IsFalse (flat_controls
[0].Focused
, "A5");
114 Assert
.IsFalse (flat_controls
[1].Focused
, "A6");
115 Assert
.IsTrue (flat_controls
[2].Focused
, "A7");
116 Assert
.AreEqual (flat_controls
[2], form
.ActiveControl
, "A8");
118 // Can't select anymore because we aren't wrapping
119 form
.SelectNextControl (flat_controls
[2], true, false, false, false);
120 Assert
.IsFalse (flat_controls
[0].Focused
, "A9");
121 Assert
.IsFalse (flat_controls
[1].Focused
, "A10");
122 Assert
.IsTrue (flat_controls
[2].Focused
, "A11");
123 Assert
.AreEqual (flat_controls
[2], form
.ActiveControl
, "A12");
125 form
.SelectNextControl (flat_controls
[2], true, false, false, true);
126 Assert
.IsTrue (flat_controls
[0].Focused
, "A13");
127 Assert
.IsFalse (flat_controls
[1].Focused
, "A14");
128 Assert
.IsFalse (flat_controls
[2].Focused
, "A15");
129 Assert
.AreEqual (flat_controls
[0], form
.ActiveControl
, "A16");
133 public void SelectNextControlNullTest ()
135 Form form
= new Form ();
138 form
.Controls
.AddRange (flat_controls
);
140 form
.SelectNextControl (null, true, false, false, false);
141 Assert
.IsTrue (flat_controls
[0].Focused
, "A1");
142 Assert
.IsFalse (flat_controls
[1].Focused
, "A2");
143 Assert
.IsFalse (flat_controls
[2].Focused
, "A3");
144 Assert
.AreEqual (flat_controls
[0], form
.ActiveControl
, "A4");
146 form
.SelectNextControl (null, true, false, false, false);
147 Assert
.IsTrue (flat_controls
[0].Focused
, "A5");
148 Assert
.IsFalse (flat_controls
[1].Focused
, "A6");
149 Assert
.IsFalse (flat_controls
[2].Focused
, "A7");
150 Assert
.AreEqual (flat_controls
[0], form
.ActiveControl
, "A8");
154 public void SelectControlTest ()
156 Form form
= new Form ();
159 form
.Controls
.AddRange (flat_controls
);
161 flat_controls
[0]._Select (false, false);
162 Assert
.AreEqual (flat_controls
[0], form
.ActiveControl
, "A1");
164 flat_controls
[0]._Select (true, false);
165 Assert
.AreEqual (flat_controls
[0], form
.ActiveControl
, "A2");
167 flat_controls
[0]._Select (true, true);
168 Assert
.AreEqual (flat_controls
[0], form
.ActiveControl
, "A3");
172 public void EnsureDirectedSelectUsed ()
174 Form form
= new Form ();
177 form
.Controls
.AddRange (flat_controls
);
179 form
.SelectNextControl (null, true, false, false, false);
180 Assert
.IsTrue (flat_controls
[0].directed_select_called
, "A1");
184 public void ContainerSelectDirectedForward ()
186 Form form
= new Form ();
187 ContainerPoker cp
= new ContainerPoker ("container-a");
190 form
.Controls
.Add (cp
);
192 cp
.Controls
.AddRange (flat_controls
);
194 cp
._Select (true, true);
195 Assert
.IsTrue (flat_controls
[0].Focused
, "A1");
196 Assert
.IsFalse (flat_controls
[1].Focused
, "A2");
197 Assert
.IsFalse (flat_controls
[2].Focused
, "A3");
198 Assert
.AreEqual (flat_controls
[0], cp
.ActiveControl
, "A4");
199 Assert
.AreEqual (cp
, form
.ActiveControl
, "A5");
201 // Should select the first one again
202 cp
._Select (true, true);
203 Assert
.IsTrue (flat_controls
[0].Focused
, "A6");
204 Assert
.IsFalse (flat_controls
[1].Focused
, "A7");
205 Assert
.IsFalse (flat_controls
[2].Focused
, "A8");
206 Assert
.AreEqual (flat_controls
[0], cp
.ActiveControl
, "A9");
207 Assert
.AreEqual (cp
, form
.ActiveControl
, "A10");
211 public void ContainerSelectDirectedBackward ()
213 Form form
= new Form ();
214 ContainerPoker cp
= new ContainerPoker ("container-a");
217 form
.Controls
.Add (cp
);
219 cp
.Controls
.AddRange (flat_controls
);
221 cp
._Select (true, false);
222 Assert
.IsFalse (flat_controls
[0].Focused
, "A1");
223 Assert
.IsFalse (flat_controls
[1].Focused
, "A2");
224 Assert
.IsTrue (flat_controls
[2].Focused
, "A3");
225 Assert
.AreEqual (flat_controls
[2], cp
.ActiveControl
, "A4");
226 Assert
.AreEqual (cp
, form
.ActiveControl
, "A5");
228 // Should select the first one again
229 cp
._Select (true, false);
230 Assert
.IsFalse (flat_controls
[0].Focused
, "A6");
231 Assert
.IsFalse (flat_controls
[1].Focused
, "A7");
232 Assert
.IsTrue (flat_controls
[2].Focused
, "A8");
233 Assert
.AreEqual (flat_controls
[2], cp
.ActiveControl
, "A9");
234 Assert
.AreEqual (cp
, form
.ActiveControl
, "A10");
238 public void ContainerSelectUndirectedForward ()
240 Form form
= new Form ();
241 ContainerPoker cp
= new ContainerPoker ("container-a");
244 form
.Controls
.Add (cp
);
246 cp
.Controls
.AddRange (flat_controls
);
248 cp
._Select (false, true);
249 Assert
.IsFalse (flat_controls
[0].Focused
, "A1");
250 Assert
.IsFalse (flat_controls
[1].Focused
, "A2");
251 Assert
.IsFalse (flat_controls
[2].Focused
, "A3");
252 Assert
.AreEqual (null, cp
.ActiveControl
, "A4");
253 Assert
.AreEqual (cp
, form
.ActiveControl
, "A5");
257 public void GetNextControlFromForm ()
259 Form form
= new Form ();
260 ContainerPoker con_a
= new ContainerPoker ("container-a");
261 ContainerPoker con_b
= new ContainerPoker ("container-b");
262 ContainerPoker con_c
= new ContainerPoker ("container-c");
263 ControlPoker
[] ctrls_a
= new ControlPoker
[] {
264 new ControlPoker (), new ControlPoker (), new ControlPoker ()
266 ControlPoker
[] ctrls_b
= new ControlPoker
[] {
267 new ControlPoker (), new ControlPoker (), new ControlPoker ()
269 ControlPoker
[] ctrls_c
= new ControlPoker
[] {
270 new ControlPoker (), new ControlPoker (), new ControlPoker ()
273 con_a
.Controls
.AddRange (ctrls_a
);
274 con_b
.Controls
.AddRange (ctrls_b
);
275 con_c
.Controls
.AddRange (ctrls_c
);
277 form
.Controls
.Add (con_a
);
278 form
.Controls
.Add (con_b
);
279 form
.Controls
.Add (con_c
);
283 // top level movement,
284 Assert
.AreEqual (form
.GetNextControl (form
, true), con_a
, "form-1");
285 Assert
.AreEqual (form
.GetNextControl (form
, false), con_c
, "form-2");
287 Assert
.AreEqual (form
.GetNextControl (con_a
, true), con_b
, "container-1");
288 Assert
.AreEqual (form
.GetNextControl (con_a
, false), null, "container-2");
289 Assert
.AreEqual (form
.GetNextControl (con_b
, true), con_c
, "container-3");
290 Assert
.AreEqual (form
.GetNextControl (con_b
, false), con_a
, "container-4");
291 Assert
.AreEqual (form
.GetNextControl (con_c
, true), null, "container-5");
292 Assert
.AreEqual (form
.GetNextControl (con_c
, false), con_b
, "container-6");
294 Assert
.AreEqual (form
.GetNextControl (ctrls_a
[0], true), ctrls_a
[1], "ctrls-a-1");
295 Assert
.AreEqual (form
.GetNextControl (ctrls_a
[0], false), con_a
, "ctrls-a-2");
296 Assert
.AreEqual (form
.GetNextControl (ctrls_a
[1], true), ctrls_a
[2], "ctrls-a-3");
297 Assert
.AreEqual (form
.GetNextControl (ctrls_a
[1], false), ctrls_a
[0], "ctrls-a-4");
298 Assert
.AreEqual (form
.GetNextControl (ctrls_a
[2], true), con_b
, "ctrls-a-5");
299 Assert
.AreEqual (form
.GetNextControl (ctrls_a
[2], false), ctrls_a
[1], "ctrls-a-6");
301 Assert
.AreEqual (form
.GetNextControl (ctrls_b
[0], true), ctrls_b
[1], "ctrls-b-1");
302 Assert
.AreEqual (form
.GetNextControl (ctrls_b
[0], false), con_b
, "ctrls-b-2");
303 Assert
.AreEqual (form
.GetNextControl (ctrls_b
[1], true), ctrls_b
[2], "ctrls-b-3");
304 Assert
.AreEqual (form
.GetNextControl (ctrls_b
[1], false), ctrls_b
[0], "ctrls-b-4");
305 Assert
.AreEqual (form
.GetNextControl (ctrls_b
[2], true), con_c
, "ctrls-b-5");
306 Assert
.AreEqual (form
.GetNextControl (ctrls_b
[2], false), ctrls_b
[1], "ctrls-b-6");
308 Assert
.AreEqual (form
.GetNextControl (ctrls_c
[0], true), ctrls_c
[1], "ctrls-c-1");
309 Assert
.AreEqual (form
.GetNextControl (ctrls_c
[0], false), con_c
, "ctrls-c-2");
310 Assert
.AreEqual (form
.GetNextControl (ctrls_c
[1], true), ctrls_c
[2], "ctrls-c-3");
311 Assert
.AreEqual (form
.GetNextControl (ctrls_c
[1], false), ctrls_c
[0], "ctrls-c-4");
312 Assert
.AreEqual (form
.GetNextControl (ctrls_c
[2], true), null, "ctrls-c-5");
313 Assert
.AreEqual (form
.GetNextControl (ctrls_c
[2], false), ctrls_c
[1], "ctrls-c-6");
317 public void GetNextControlFromContainerA ()
319 Form form
= new Form ();
320 ContainerPoker con_a
= new ContainerPoker ("container-a");
321 ContainerPoker con_b
= new ContainerPoker ("container-b");
322 ContainerPoker con_c
= new ContainerPoker ("container-c");
323 ControlPoker
[] ctrls_a
= new ControlPoker
[] {
324 new ControlPoker ("ctrls-a-0"), new ControlPoker ("ctrls-a-1"), new ControlPoker ("ctrls-a-2")
326 ControlPoker
[] ctrls_b
= new ControlPoker
[] {
327 new ControlPoker ("ctrls-b-0"), new ControlPoker ("ctrls-b-1"), new ControlPoker ("ctrls-b-2")
329 ControlPoker
[] ctrls_c
= new ControlPoker
[] {
330 new ControlPoker ("ctrls-c-0"), new ControlPoker ("ctrls-c-1"), new ControlPoker ("ctrls-c-2")
333 con_a
.Controls
.AddRange (ctrls_a
);
334 con_b
.Controls
.AddRange (ctrls_b
);
335 con_c
.Controls
.AddRange (ctrls_c
);
337 form
.Controls
.Add (con_a
);
338 form
.Controls
.Add (con_b
);
339 form
.Controls
.Add (con_c
);
343 // top level movement,
344 Assert
.AreEqual (con_a
.GetNextControl (form
, true), ctrls_a
[0], "form-1");
345 Assert
.AreEqual (con_a
.GetNextControl (form
, false), ctrls_a
[2], "form-2");
347 Assert
.AreEqual (con_a
.GetNextControl (con_a
, true), ctrls_a
[0], "container-1");
348 Assert
.AreEqual (con_a
.GetNextControl (con_a
, false), ctrls_a
[2], "container-2");
349 Assert
.AreEqual (con_a
.GetNextControl (con_b
, true), ctrls_a
[0], "container-3");
350 Assert
.AreEqual (con_a
.GetNextControl (con_b
, false), ctrls_a
[2], "container-4");
351 Assert
.AreEqual (con_a
.GetNextControl (con_c
, true), ctrls_a
[0], "container-5");
352 Assert
.AreEqual (con_a
.GetNextControl (con_c
, false), ctrls_a
[2], "container-6");
354 Assert
.AreEqual (con_a
.GetNextControl (ctrls_a
[0], true), ctrls_a
[1], "ctrls-a-1");
355 Assert
.AreEqual (con_a
.GetNextControl (ctrls_a
[0], false), null, "ctrls-a-2");
356 Assert
.AreEqual (con_a
.GetNextControl (ctrls_a
[1], true), ctrls_a
[2], "ctrls-a-3");
357 Assert
.AreEqual (con_a
.GetNextControl (ctrls_a
[1], false), ctrls_a
[0], "ctrls-a-4");
358 Assert
.AreEqual (con_a
.GetNextControl (ctrls_a
[2], true), null, "ctrls-a-5");
359 Assert
.AreEqual (con_a
.GetNextControl (ctrls_a
[2], false), ctrls_a
[1], "ctrls-a-6");
361 Assert
.AreEqual (con_a
.GetNextControl (ctrls_b
[0], true), ctrls_a
[0], "ctrls-b-1");
362 Assert
.AreEqual (con_a
.GetNextControl (ctrls_b
[0], false), ctrls_a
[2], "ctrls-b-2");
363 Assert
.AreEqual (con_a
.GetNextControl (ctrls_b
[1], true), ctrls_a
[0], "ctrls-b-3");
364 Assert
.AreEqual (con_a
.GetNextControl (ctrls_b
[1], false), ctrls_a
[2], "ctrls-b-4");
365 Assert
.AreEqual (con_a
.GetNextControl (ctrls_b
[2], true), ctrls_a
[0], "ctrls-b-5");
366 Assert
.AreEqual (con_a
.GetNextControl (ctrls_b
[2], false), ctrls_a
[2], "ctrls-b-6");
368 Assert
.AreEqual (con_a
.GetNextControl (ctrls_c
[0], true), ctrls_a
[0], "ctrls-c-1");
369 Assert
.AreEqual (con_a
.GetNextControl (ctrls_c
[0], false), ctrls_a
[2], "ctrls-c-2");
370 Assert
.AreEqual (con_a
.GetNextControl (ctrls_c
[1], true), ctrls_a
[0], "ctrls-c-3");
371 Assert
.AreEqual (con_a
.GetNextControl (ctrls_c
[1], false), ctrls_a
[2], "ctrls-c-4");
372 Assert
.AreEqual (con_a
.GetNextControl (ctrls_c
[2], true), ctrls_a
[0], "ctrls-c-5");
373 Assert
.AreEqual (con_a
.GetNextControl (ctrls_c
[2], false), ctrls_a
[2], "ctrls-c-6");
377 public void GetNextControlFromContainerB ()
379 Form form
= new Form ();
380 ContainerPoker con_a
= new ContainerPoker ("container-a");
381 ContainerPoker con_b
= new ContainerPoker ("container-b");
382 ContainerPoker con_c
= new ContainerPoker ("container-c");
383 ControlPoker
[] ctrls_a
= new ControlPoker
[] {
384 new ControlPoker ("ctrls-a-0"), new ControlPoker ("ctrls-a-1"), new ControlPoker ("ctrls-a-2")
386 ControlPoker
[] ctrls_b
= new ControlPoker
[] {
387 new ControlPoker ("ctrls-b-0"), new ControlPoker ("ctrls-b-1"), new ControlPoker ("ctrls-b-2")
389 ControlPoker
[] ctrls_c
= new ControlPoker
[] {
390 new ControlPoker ("ctrls-c-0"), new ControlPoker ("ctrls-c-1"), new ControlPoker ("ctrls-c-2")
393 con_a
.Controls
.AddRange (ctrls_a
);
394 con_b
.Controls
.AddRange (ctrls_b
);
395 con_c
.Controls
.AddRange (ctrls_c
);
397 form
.Controls
.Add (con_a
);
398 form
.Controls
.Add (con_b
);
399 form
.Controls
.Add (con_c
);
403 // top level movement
404 Assert
.AreEqual (con_b
.GetNextControl (form
, true), ctrls_b
[0], "form-1");
405 Assert
.AreEqual (con_b
.GetNextControl (form
, false), ctrls_b
[2], "form-2");
407 Assert
.AreEqual (con_b
.GetNextControl (con_a
, true), ctrls_b
[0], "container-1");
408 Assert
.AreEqual (con_b
.GetNextControl (con_a
, false), ctrls_b
[2], "container-2");
409 Assert
.AreEqual (con_b
.GetNextControl (con_b
, true), ctrls_b
[0], "container-3");
410 Assert
.AreEqual (con_b
.GetNextControl (con_b
, false), ctrls_b
[2], "container-4");
411 Assert
.AreEqual (con_b
.GetNextControl (con_c
, true), ctrls_b
[0], "container-5");
412 Assert
.AreEqual (con_b
.GetNextControl (con_c
, false), ctrls_b
[2], "container-6");
414 Assert
.AreEqual (con_b
.GetNextControl (ctrls_a
[0], true), ctrls_b
[0], "ctrls-a-1");
415 Assert
.AreEqual (con_b
.GetNextControl (ctrls_a
[0], false), ctrls_b
[2], "ctrls-a-2");
416 Assert
.AreEqual (con_b
.GetNextControl (ctrls_a
[1], true), ctrls_b
[0], "ctrls-a-3");
417 Assert
.AreEqual (con_b
.GetNextControl (ctrls_a
[1], false), ctrls_b
[2], "ctrls-a-4");
418 Assert
.AreEqual (con_b
.GetNextControl (ctrls_a
[2], true), ctrls_b
[0], "ctrls-a-5");
419 Assert
.AreEqual (con_b
.GetNextControl (ctrls_a
[2], false), ctrls_b
[2], "ctrls-a-6");
421 Assert
.AreEqual (con_b
.GetNextControl (ctrls_b
[0], true), ctrls_b
[1], "ctrls-b-1");
422 Assert
.AreEqual (con_b
.GetNextControl (ctrls_b
[0], false), null, "ctrls-b-2");
423 Assert
.AreEqual (con_b
.GetNextControl (ctrls_b
[1], true), ctrls_b
[2], "ctrls-b-3");
424 Assert
.AreEqual (con_b
.GetNextControl (ctrls_b
[1], false), ctrls_b
[0], "ctrls-b-4");
425 Assert
.AreEqual (con_b
.GetNextControl (ctrls_b
[2], true), null, "ctrls-b-5");
426 Assert
.AreEqual (con_b
.GetNextControl (ctrls_b
[2], false), ctrls_b
[1], "ctrls-b-6");
428 Assert
.AreEqual (con_b
.GetNextControl (ctrls_c
[0], true), ctrls_b
[0], "ctrls-c-1");
429 Assert
.AreEqual (con_b
.GetNextControl (ctrls_c
[0], false), ctrls_b
[2], "ctrls-c-2");
430 Assert
.AreEqual (con_b
.GetNextControl (ctrls_c
[1], true), ctrls_b
[0], "ctrls-c-3");
431 Assert
.AreEqual (con_b
.GetNextControl (ctrls_c
[1], false), ctrls_b
[2], "ctrls-c-4");
432 Assert
.AreEqual (con_b
.GetNextControl (ctrls_c
[2], true), ctrls_b
[0], "ctrls-c-5");
433 Assert
.AreEqual (con_b
.GetNextControl (ctrls_c
[2], false), ctrls_b
[2], "ctrls-c-6");
437 public void GetNextControlFromContainerC ()
439 Form form
= new Form ();
440 ContainerPoker con_a
= new ContainerPoker ("container-a");
441 ContainerPoker con_b
= new ContainerPoker ("container-b");
442 ContainerPoker con_c
= new ContainerPoker ("container-c");
443 ControlPoker
[] ctrls_a
= new ControlPoker
[] {
444 new ControlPoker ("ctrls-a-0"), new ControlPoker ("ctrls-a-1"), new ControlPoker ("ctrls-a-2")
446 ControlPoker
[] ctrls_b
= new ControlPoker
[] {
447 new ControlPoker ("ctrls-b-0"), new ControlPoker ("ctrls-b-1"), new ControlPoker ("ctrls-b-2")
449 ControlPoker
[] ctrls_c
= new ControlPoker
[] {
450 new ControlPoker ("ctrls-c-0"), new ControlPoker ("ctrls-c-1"), new ControlPoker ("ctrls-c-2")
453 con_a
.Controls
.AddRange (ctrls_a
);
454 con_b
.Controls
.AddRange (ctrls_b
);
455 con_c
.Controls
.AddRange (ctrls_c
);
457 form
.Controls
.Add (con_a
);
458 form
.Controls
.Add (con_b
);
459 form
.Controls
.Add (con_c
);
463 // top level movement,
464 Assert
.AreEqual (con_c
.GetNextControl (form
, true), ctrls_c
[0], "form-1");
465 Assert
.AreEqual (con_c
.GetNextControl (form
, false), ctrls_c
[2], "form-2");
467 Assert
.AreEqual (con_c
.GetNextControl (con_a
, true), ctrls_c
[0], "container-1");
468 Assert
.AreEqual (con_c
.GetNextControl (con_a
, false), ctrls_c
[2], "container-2");
469 Assert
.AreEqual (con_c
.GetNextControl (con_b
, true), ctrls_c
[0], "container-3");
470 Assert
.AreEqual (con_c
.GetNextControl (con_b
, false), ctrls_c
[2], "container-4");
471 Assert
.AreEqual (con_c
.GetNextControl (con_c
, true), ctrls_c
[0], "container-5");
472 Assert
.AreEqual (con_c
.GetNextControl (con_c
, false), ctrls_c
[2], "container-6");
474 Assert
.AreEqual (con_c
.GetNextControl (ctrls_a
[0], true), ctrls_c
[0], "ctrls-a-1");
475 Assert
.AreEqual (con_c
.GetNextControl (ctrls_a
[0], false), ctrls_c
[2], "ctrls-a-2");
476 Assert
.AreEqual (con_c
.GetNextControl (ctrls_a
[1], true), ctrls_c
[0], "ctrls-a-3");
477 Assert
.AreEqual (con_c
.GetNextControl (ctrls_a
[1], false), ctrls_c
[2], "ctrls-a-4");
478 Assert
.AreEqual (con_c
.GetNextControl (ctrls_a
[2], true), ctrls_c
[0], "ctrls-a-5");
479 Assert
.AreEqual (con_c
.GetNextControl (ctrls_a
[2], false), ctrls_c
[2], "ctrls-a-6");
481 Assert
.AreEqual (con_c
.GetNextControl (ctrls_b
[0], true), ctrls_c
[0], "ctrls-b-1");
482 Assert
.AreEqual (con_c
.GetNextControl (ctrls_b
[0], false), ctrls_c
[2], "ctrls-b-2");
483 Assert
.AreEqual (con_c
.GetNextControl (ctrls_b
[1], true), ctrls_c
[0], "ctrls-b-3");
484 Assert
.AreEqual (con_c
.GetNextControl (ctrls_b
[1], false), ctrls_c
[2], "ctrls-b-4");
485 Assert
.AreEqual (con_c
.GetNextControl (ctrls_b
[2], true), ctrls_c
[0], "ctrls-b-5");
486 Assert
.AreEqual (con_c
.GetNextControl (ctrls_b
[2], false), ctrls_c
[2], "ctrls-b-6");
488 Assert
.AreEqual (con_c
.GetNextControl (ctrls_c
[0], true), ctrls_c
[1], "ctrls-c-1");
489 Assert
.AreEqual (con_c
.GetNextControl (ctrls_c
[0], false), null, "ctrls-c-2");
490 Assert
.AreEqual (con_c
.GetNextControl (ctrls_c
[1], true), ctrls_c
[2], "ctrls-c-3");
491 Assert
.AreEqual (con_c
.GetNextControl (ctrls_c
[1], false), ctrls_c
[0], "ctrls-c-4");
492 Assert
.AreEqual (con_c
.GetNextControl (ctrls_c
[2], true), null, "ctrls-c-5");
493 Assert
.AreEqual (con_c
.GetNextControl (ctrls_c
[2], false), ctrls_c
[1], "ctrls-c-6");
497 public void GetNextControl2FromForm ()
499 Form form
= new Form ();
500 ContainerPoker con_a
= new ContainerPoker ("container-a");
501 ContainerPoker con_b
= new ContainerPoker ("container-b");
502 ContainerPoker con_c
= new ContainerPoker ("container-c");
503 ControlPoker
[] ctrls_a
= new ControlPoker
[] {
504 new ControlPoker ("ctrls-a-0"), new ControlPoker ("ctrls-a-1"), new ControlPoker ("ctrls-a-2")
506 ControlPoker ctrl_b
= new ControlPoker ("ctrl-b");
508 con_a
.Controls
.AddRange (ctrls_a
);
510 form
.Controls
.Add (con_a
);
511 form
.Controls
.Add (ctrl_b
);
515 // top level movement,
516 Assert
.AreEqual (form
.GetNextControl (form
, true), con_a
, "form-1");
517 Assert
.AreEqual (form
.GetNextControl (form
, false), ctrl_b
, "form-2");
519 Assert
.AreEqual (form
.GetNextControl (con_a
, true), ctrl_b
, "con-a-1");
520 Assert
.AreEqual (form
.GetNextControl (con_a
, false), null, "con-a-2");
522 Assert
.AreEqual (form
.GetNextControl (ctrl_b
, true), null, "ctrl-b-1");
523 Assert
.AreEqual (form
.GetNextControl (ctrl_b
, false), con_a
, "ctrl-b-2");
525 Assert
.AreEqual (form
.GetNextControl (ctrls_a
[0], true), ctrls_a
[1], "ctrl-a-1");
526 Assert
.AreEqual (form
.GetNextControl (ctrls_a
[0], false), con_a
, "ctrl-a-2");
527 Assert
.AreEqual (form
.GetNextControl (ctrls_a
[1], true), ctrls_a
[2], "ctrl-a-1");
528 Assert
.AreEqual (form
.GetNextControl (ctrls_a
[1], false), ctrls_a
[0], "ctrl-a-2");
529 Assert
.AreEqual (form
.GetNextControl (ctrls_a
[2], true), ctrl_b
, "ctrl-a-1");
530 Assert
.AreEqual (form
.GetNextControl (ctrls_a
[2], false), ctrls_a
[1], "ctrl-a-2");
535 public void GetNextControlFlat ()
537 Form form
= new Form ();
539 form
.Controls
.AddRange (flat_controls
);
542 Assert
.AreEqual (form
.GetNextControl (null, true), flat_controls
[0], "form-1");
543 Assert
.AreEqual (form
.GetNextControl (null, false), flat_controls
[2], "form-2");
544 Assert
.AreEqual (form
.GetNextControl (flat_controls
[0], true), flat_controls
[1], "form-3");
545 Assert
.AreEqual (form
.GetNextControl (flat_controls
[0], false), null, "form-4");
546 Assert
.AreEqual (form
.GetNextControl (flat_controls
[1], true), flat_controls
[2], "form-5");
547 Assert
.AreEqual (form
.GetNextControl (flat_controls
[1], false), flat_controls
[0], "form-6");
548 Assert
.AreEqual (form
.GetNextControl (flat_controls
[2], true), null, "form-7");
549 Assert
.AreEqual (form
.GetNextControl (flat_controls
[2], false), flat_controls
[1],"form-8");
552 Assert
.AreEqual (flat_controls
[0].GetNextControl (null, true), null, "ctrls-0-1");
553 Assert
.AreEqual (flat_controls
[0].GetNextControl (null, false), null, "ctrls-0-2");
554 Assert
.AreEqual (flat_controls
[0].GetNextControl (flat_controls
[0], true), null, "ctrls-0-3");
555 Assert
.AreEqual (flat_controls
[0].GetNextControl (flat_controls
[0], false), null, "ctrls-0-4");
556 Assert
.AreEqual (flat_controls
[0].GetNextControl (flat_controls
[1], true), null, "ctrls-0-5");
557 Assert
.AreEqual (flat_controls
[0].GetNextControl (flat_controls
[1], false), null, "ctrls-0-6");
558 Assert
.AreEqual (flat_controls
[0].GetNextControl (flat_controls
[2], true), null, "ctrls-0-7");
559 Assert
.AreEqual (flat_controls
[0].GetNextControl (flat_controls
[2], false), null,"ctrls-0-8");
563 public void GetNextGroupBoxControlFlat ()
565 Form form
= new Form ();
566 GroupBoxPoker gbp
= new GroupBoxPoker ("group-box");
568 gbp
.Controls
.AddRange (flat_controls
);
569 form
.Controls
.Add (gbp
);
572 Assert
.AreEqual (form
.GetNextControl (null, true), gbp
, "form-1");
573 Assert
.AreEqual (form
.GetNextControl (null, false), flat_controls
[2], "form-2");
575 Assert
.AreEqual (form
.GetNextControl (gbp
, true), flat_controls
[0], "gb-1");
576 Assert
.AreEqual (form
.GetNextControl (gbp
, false), null, "gb-2");
578 Assert
.AreEqual (gbp
.GetNextControl (null, true), flat_controls
[0], "gb-3");
579 Assert
.AreEqual (gbp
.GetNextControl (null, false), flat_controls
[2], "gb-4");
580 Assert
.AreEqual (gbp
.GetNextControl (gbp
, true), flat_controls
[0], "gb-5");
581 Assert
.AreEqual (gbp
.GetNextControl (gbp
, false), flat_controls
[2], "gb-6");
585 public void GetNextControlTabIndex ()
587 Form form
= new Form ();
588 ControlPoker
[] ctrls
= new ControlPoker
[5];
590 for (int i
= 0; i
< 5; i
++) {
591 ctrls
[i
] = new ControlPoker ();
592 ctrls
[i
].TabIndex
= i
;
593 ctrls
[i
].Text
= "ctrl " + i
;
596 form
.Controls
.AddRange (ctrls
);
599 Assert
.AreEqual (form
.GetNextControl (null, true), ctrls
[0], "A1");
600 Assert
.AreEqual (form
.GetNextControl (null, false), ctrls
[4], "A2");
602 Assert
.AreEqual (form
.GetNextControl (ctrls
[0], true), ctrls
[1], "A3");
603 Assert
.AreEqual (form
.GetNextControl (ctrls
[0], false), null, "A4");
605 Assert
.AreEqual (form
.GetNextControl (ctrls
[1], true), ctrls
[2], "A5");
606 Assert
.AreEqual (form
.GetNextControl (ctrls
[1], false), ctrls
[0], "A6");
608 Assert
.AreEqual (form
.GetNextControl (ctrls
[2], true), ctrls
[3], "A7");
609 Assert
.AreEqual (form
.GetNextControl (ctrls
[2], false), ctrls
[1], "A8");
611 Assert
.AreEqual (form
.GetNextControl (ctrls
[3], true), ctrls
[4], "A9");
612 Assert
.AreEqual (form
.GetNextControl (ctrls
[3], false), ctrls
[2], "A10");
614 Assert
.AreEqual (form
.GetNextControl (ctrls
[4], true), null, "A11");
615 Assert
.AreEqual (form
.GetNextControl (ctrls
[4], false), ctrls
[3], "A12");
620 public void GetNextControlDuplicateTabIndex ()
622 Form form
= new Form ();
623 ControlPoker
[] ctrls
= new ControlPoker
[5];
625 for (int i
= 0; i
< 5; i
++) {
626 ctrls
[i
] = new ControlPoker ();
627 ctrls
[i
].TabIndex
= i
;
628 ctrls
[i
].Text
= "ctrl " + i
;
631 ctrls
[3].TabIndex
= 2;
633 form
.Controls
.AddRange (ctrls
);
636 Assert
.AreEqual (form
.GetNextControl (null, true), ctrls
[0], "A1");
637 Assert
.AreEqual (form
.GetNextControl (null, false), ctrls
[4], "A2");
639 Assert
.AreEqual (form
.GetNextControl (ctrls
[0], true), ctrls
[1], "A3");
640 Assert
.AreEqual (form
.GetNextControl (ctrls
[0], false), null, "A4");
642 Assert
.AreEqual (form
.GetNextControl (ctrls
[1], true), ctrls
[2], "A5");
643 Assert
.AreEqual (form
.GetNextControl (ctrls
[1], false), ctrls
[0], "A6");
645 Assert
.AreEqual (form
.GetNextControl (ctrls
[2], true), ctrls
[3], "A7");
646 Assert
.AreEqual (form
.GetNextControl (ctrls
[2], false), ctrls
[1], "A8");
648 Assert
.AreEqual (form
.GetNextControl (ctrls
[3], true), ctrls
[4], "A9");
649 Assert
.AreEqual (form
.GetNextControl (ctrls
[3], false), ctrls
[2], "A10");
651 Assert
.AreEqual (form
.GetNextControl (ctrls
[4], true), null, "A11");
652 Assert
.AreEqual (form
.GetNextControl (ctrls
[4], false), ctrls
[3], "A12");
657 public void GetNextControlComposite ()
659 Form form
= new Form ();
660 ControlPoker a
= new ControlPoker ("a");
661 ControlPoker b
= new ControlPoker ("b");
662 ControlPoker c
= new ControlPoker ("c");
664 form
.Controls
.Add (a
);
665 form
.Controls
.Add (b
);
670 Assert
.AreEqual (form
.GetNextControl (a
, true), b
, "form-1");
671 Assert
.AreEqual (form
.GetNextControl (a
, false), null, "form-2");
675 public void FocusSetsActive ()
677 Form form
= new Form ();
679 form
.Controls
.AddRange (flat_controls
);
682 Assert
.AreEqual (form
.ActiveControl
, flat_controls
[0], "A1");
684 flat_controls
[1].Focus ();
686 Assert
.AreEqual (form
.ActiveControl
, flat_controls
[1], "A2");