2010-07-25 Carlos Alberto Cortez <calberto.cortez@gmail.com>
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / MdiFormHandleTest.cs
1 //\r
2 // FormTest.cs: Test cases for Form.\r
3 //\r
4 // Author:\r
5 //   Ritvik Mayank (mritvik@novell.com)\r
6 //\r
7 // (C) 2005 Novell, Inc. (http://www.novell.com)\r
8 //\r
9 \r
10 using System;\r
11 using System.ComponentModel;\r
12 using System.Drawing;\r
13 using System.Reflection;\r
14 using System.Windows.Forms;\r
15 \r
16 using NUnit.Framework;\r
17 \r
18 using CategoryAttribute = NUnit.Framework.CategoryAttribute;\r
19 \r
20 namespace MonoTests.System.Windows.Forms\r
21 {\r
22         [TestFixture]\r
23         public class MdiFormHandleTest : TestHelper\r
24         {\r
25                 private ProtectedForm main;\r
26                 private ProtectedForm child1;\r
27                 private ProtectedForm child2;\r
28                 \r
29                 [TearDown]\r
30                 protected override void TearDown ()\r
31                 {\r
32                         if (main != null) {\r
33                                 main.Dispose ();\r
34                                 main = null;\r
35                         }\r
36                         \r
37                         if (child1 != null) {\r
38                                 child1.Dispose ();\r
39                                 child1 = null;\r
40                         }\r
41                         \r
42                         if (child2 != null) {\r
43                                 child2.Dispose ();\r
44                                 child2 = null;\r
45                         }
46                         base.TearDown ();\r
47                 }\r
48                 \r
49                 void SetUp ()\r
50                 {\r
51                         TearDown ();\r
52                         main = new ProtectedForm ();\r
53                         main.IsMdiContainer = true;\r
54                         main.ShowInTaskbar = false;\r
55 \r
56                         child1 = new ProtectedForm ();\r
57                         child1.MdiParent = main;\r
58 \r
59                         child2 = new ProtectedForm ();\r
60                         child2.MdiParent = main;\r
61                         \r
62                         main.Show ();\r
63                 }\r
64                 \r
65                 [Test]\r
66                 public void TestPublicProperties ()\r
67                 {\r
68                         // This long, carpal-tunnel syndrome inducing test shows us that\r
69                         // the following properties cause the Handle to be created:\r
70                         // - AccessibilityObject        [get]\r
71                         // - Capture                    [set]\r
72                         // - Handle                     [get]\r
73                         // - Visible                    [set]\r
74 \r
75                         // A\r
76                         SetUp ();\r
77                         object o = child1.AccessibilityObject;\r
78                         Assert.IsTrue (child1.IsHandleCreated, "A0");\r
79                         \r
80                         SetUp ();\r
81                         o = child1.AccessibleDefaultActionDescription;\r
82                         child1.AccessibleDefaultActionDescription = "playdoh";\r
83                         Assert.IsFalse (child1.IsHandleCreated, "A1");\r
84                         \r
85                         SetUp ();\r
86                         o = child1.AccessibleDescription;\r
87                         child1.AccessibleDescription = "more playdoh!";\r
88                         Assert.IsFalse (child1.IsHandleCreated, "A2");\r
89 \r
90                         SetUp ();\r
91                         o = child1.AccessibleName;\r
92                         child1.AccessibleName = "playdoh fun factory";\r
93                         Assert.IsFalse (child1.IsHandleCreated, "A3");\r
94 \r
95                         SetUp ();\r
96                         o = child1.AccessibleRole;\r
97                         child1.AccessibleRole = AccessibleRole.Border;\r
98                         Assert.IsFalse (child1.IsHandleCreated, "A4");\r
99 \r
100                         SetUp ();\r
101                         o = child1.AllowDrop;\r
102                         child1.AllowDrop = true;\r
103                         Assert.IsFalse (child1.IsHandleCreated, "A5");\r
104                         \r
105                         // If we don't reset the control, handle creation will fail\r
106                         // because AllowDrop requires STAThread, which Nunit doesn't do\r
107 \r
108                         SetUp ();\r
109                         o = child1.Anchor;\r
110                         child1.Anchor = AnchorStyles.Right;\r
111                         Assert.IsFalse (child1.IsHandleCreated, "A6");\r
112 #if !__MonoCS__ && NET_2_0\r
113                         SetUp ();\r
114                         o = child1.AutoScrollOffset;\r
115                         child1.AutoScrollOffset = new Point (40, 40);\r
116                         Assert.IsFalse (child1.IsHandleCreated, "A7");\r
117 #endif\r
118 #if NET_2_0\r
119                         SetUp ();\r
120                         o = child1.AutoSize;\r
121                         child1.AutoSize = true;\r
122                         Assert.IsFalse (child1.IsHandleCreated, "A8");\r
123 #endif\r
124 \r
125                         // A - Form     \r
126                         SetUp ();\r
127                         o = child1.AcceptButton;\r
128                         child1.AcceptButton = null;\r
129                         Assert.IsFalse (child1.IsHandleCreated, "FA1");\r
130 \r
131                         SetUp ();\r
132                         o = child1.ActiveControl;\r
133                         child1.ActiveControl = null;\r
134                         Assert.IsFalse (child1.IsHandleCreated, "FA2");\r
135 \r
136                         SetUp ();\r
137                         o = child1.ActiveMdiChild;\r
138                         Assert.IsFalse (child1.IsHandleCreated, "FA3");\r
139 \r
140                         SetUp ();\r
141                         o = child1.AllowTransparency;\r
142                         child1.AllowTransparency = !child1.AllowTransparency;\r
143                         Assert.IsFalse (child1.IsHandleCreated, "FA4");\r
144 \r
145 #if NET_2_0\r
146                         SetUp ();\r
147                         o = child1.AutoScaleDimensions;\r
148                         child1.AutoScaleDimensions = SizeF.Empty;\r
149                         Assert.IsFalse (child1.IsHandleCreated, "FA5");\r
150 \r
151                         SetUp ();\r
152                         o = child1.AutoScaleMode;\r
153                         child1.AutoScaleMode = AutoScaleMode.Dpi;\r
154                         Assert.IsFalse (child1.IsHandleCreated, "FA6");\r
155 #endif\r
156                         SetUp ();\r
157                         o = child1.AutoScroll;\r
158                         child1.AutoScroll = !child1.AutoScroll;\r
159                         Assert.IsFalse (child1.IsHandleCreated, "FA7");\r
160 \r
161                         SetUp ();\r
162                         o = child1.AutoScrollMargin;\r
163                         child1.AutoScrollMargin = new Size (child1.AutoScrollMargin.Width + 1, child1.AutoScrollMargin.Height + 1);\r
164                         Assert.IsFalse (child1.IsHandleCreated, "FA8");\r
165 \r
166                         SetUp ();\r
167                         o = child1.AutoScrollMinSize;\r
168                         child1.AutoScrollMinSize = new Size (child1.AutoScrollMinSize.Width + 1, child1.AutoScrollMinSize.Height + 1);\r
169                         Assert.IsFalse (child1.IsHandleCreated, "FA9");\r
170 \r
171 #if NET_2_0 && !__MonoCS__\r
172                         SetUp ();\r
173                         o = child1.AutoScrollOffset;\r
174                         child1.AutoScrollOffset = new Point (child1.AutoScrollOffset.X + 1, child1.AutoScrollOffset.Y + 1);\r
175                         Assert.IsFalse (child1.IsHandleCreated, "FA10"); \r
176 #endif\r
177 \r
178                         SetUp ();\r
179                         o = child1.AutoScrollPosition;\r
180                         child1.AutoScrollPosition = new Point (child1.AutoScrollPosition.X + 1, child1.AutoScrollPosition.Y + 1);\r
181                         Assert.IsFalse (child1.IsHandleCreated, "FA11");\r
182 #if NET_2_0\r
183 \r
184                         SetUp ();\r
185                         o = child1.AutoSize;\r
186                         child1.AutoSize = !child1.AutoSize;\r
187                         Assert.IsFalse (child1.IsHandleCreated, "FA12");\r
188 #if !__MonoCS__\r
189                         SetUp ();\r
190                         o = child1.AutoSizeMode;\r
191                         child1.AutoSizeMode = AutoSizeMode.GrowAndShrink;\r
192                         Assert.IsFalse (child1.IsHandleCreated, "FA13");\r
193 #endif\r
194                         SetUp ();\r
195                         o = child1.AutoValidate;\r
196                         child1.AutoValidate = AutoValidate.EnableAllowFocusChange;\r
197                         Assert.IsFalse (child1.IsHandleCreated, "FA14");\r
198 \r
199 #endif\r
200                         // B\r
201                         SetUp ();\r
202                         o = child1.BackColor;\r
203                         child1.BackColor = Color.Green;\r
204                         Assert.IsFalse (child1.IsHandleCreated, "A9");\r
205 \r
206                         SetUp ();\r
207                         o = child1.BackgroundImage;\r
208                         child1.BackgroundImage = new Bitmap (1, 1);\r
209                         Assert.IsFalse (child1.IsHandleCreated, "A10");\r
210 #if NET_2_0\r
211                         SetUp ();\r
212                         o = child1.BackgroundImageLayout;\r
213                         child1.BackgroundImageLayout = ImageLayout.Stretch;\r
214                         Assert.IsFalse (child1.IsHandleCreated, "A11");\r
215 #endif\r
216                         SetUp ();\r
217                         o = child1.BindingContext;\r
218                         child1.BindingContext = new BindingContext ();\r
219                         Assert.IsFalse (child1.IsHandleCreated, "A12");\r
220 \r
221                         SetUp ();\r
222                         o = child1.Bottom;\r
223                         Assert.IsFalse (child1.IsHandleCreated, "A13");\r
224 \r
225                         SetUp ();\r
226                         o = child1.Bounds;\r
227                         child1.Bounds = new Rectangle (0, 0, 12, 12);\r
228                         Assert.IsFalse (child1.IsHandleCreated, "A14");\r
229 \r
230 \r
231                         // B - Form\r
232                         SetUp ();\r
233                         o = child1.BindingContext;\r
234                         child1.BindingContext = null;\r
235                         Assert.IsFalse (child1.IsHandleCreated, "FB1");\r
236 \r
237                         // C\r
238                         SetUp ();\r
239                         o = child1.CanFocus;\r
240                         Assert.IsFalse (child1.IsHandleCreated, "A15");\r
241 \r
242                         SetUp ();\r
243                         o = child1.CanSelect;\r
244                         Assert.IsFalse (child1.IsHandleCreated, "A16");\r
245 \r
246                         SetUp ();\r
247                         o = child1.Capture;\r
248                         Assert.IsFalse (child1.IsHandleCreated, "A17a");\r
249 \r
250                         SetUp ();\r
251                         child1.Capture = true;\r
252                         Assert.IsTrue (child1.IsHandleCreated, "A17b");\r
253 \r
254                         SetUp ();\r
255                         o = child1.CausesValidation;\r
256                         child1.CausesValidation = false;\r
257                         Assert.IsFalse (child1.IsHandleCreated, "A18");\r
258 \r
259                         SetUp ();\r
260                         o = child1.ClientRectangle;\r
261                         Assert.IsFalse (child1.IsHandleCreated, "A19");\r
262 \r
263                         SetUp ();\r
264                         o = child1.ClientSize;\r
265                         child1.ClientSize = new Size (30, 30);\r
266                         Assert.IsFalse (child1.IsHandleCreated, "A20");\r
267 \r
268                         SetUp ();\r
269                         o = child1.CompanyName;\r
270                         Assert.IsFalse (child1.IsHandleCreated, "A21");\r
271 \r
272                         SetUp ();\r
273                         o = child1.Container;\r
274                         Assert.IsFalse (child1.IsHandleCreated, "A22");\r
275 \r
276                         SetUp ();\r
277                         o = child1.ContainsFocus;\r
278                         Assert.IsFalse (child1.IsHandleCreated, "A23");\r
279 \r
280                         SetUp ();\r
281                         o = child1.ContextMenu;\r
282                         child1.ContextMenu = new ContextMenu ();\r
283                         Assert.IsFalse (child1.IsHandleCreated, "A24");\r
284 \r
285 #if NET_2_0\r
286                         SetUp ();\r
287                         o = child1.ContextMenuStrip;\r
288                         child1.ContextMenuStrip = new ContextMenuStrip ();\r
289                         Assert.IsFalse (child1.IsHandleCreated, "A25");\r
290 #endif\r
291                         SetUp ();\r
292                         o = child1.Controls;\r
293                         Assert.IsFalse (child1.IsHandleCreated, "A26");\r
294 \r
295                         SetUp ();\r
296                         o = child1.Created;\r
297                         Assert.IsFalse (child1.IsHandleCreated, "A27");\r
298 \r
299                         SetUp ();\r
300                         o = child1.Cursor;\r
301                         child1.Cursor = Cursors.Arrow;\r
302                         Assert.IsFalse (child1.IsHandleCreated, "A28");\r
303 \r
304                         // C - Form\r
305                         SetUp ();\r
306                         o = child1.CancelButton;\r
307                         child1.CancelButton = null;\r
308                         Assert.IsFalse (child1.IsHandleCreated, "FC1");\r
309 \r
310                         SetUp ();\r
311                         o = child1.ClientSize;\r
312                         child1.ClientSize = new Size (child1.ClientSize.Width + 1, child1.ClientSize.Height + 1);\r
313                         Assert.IsFalse (child1.IsHandleCreated, "FC2");\r
314 \r
315                         SetUp ();\r
316                         o = child1.Container;\r
317                         Assert.IsFalse (child1.IsHandleCreated, "FC3");\r
318 \r
319                         SetUp ();\r
320                         o = child1.ControlBox;\r
321                         child1.ControlBox = !child1.ControlBox;\r
322                         Assert.IsFalse (child1.IsHandleCreated, "FC4");\r
323 #if NET_2_0\r
324 \r
325                         SetUp ();\r
326                         o = child1.CurrentAutoScaleDimensions;\r
327                         Assert.IsFalse (child1.IsHandleCreated, "FC5"); \r
328 #endif\r
329 \r
330                         // D\r
331                         SetUp ();\r
332                         o = child1.DataBindings;\r
333                         Assert.IsFalse (child1.IsHandleCreated, "A29");\r
334 \r
335                         SetUp ();\r
336                         o = child1.DisplayRectangle;\r
337                         Assert.IsFalse (child1.IsHandleCreated, "A30");\r
338 \r
339                         SetUp ();\r
340                         o = child1.Disposing;\r
341                         Assert.IsFalse (child1.IsHandleCreated, "A31");\r
342 \r
343                         SetUp ();\r
344                         o = child1.Dock;\r
345                         child1.Dock = DockStyle.Fill;\r
346                         Assert.IsFalse (child1.IsHandleCreated, "A32");\r
347 \r
348                         // D - Form\r
349                         SetUp ();\r
350                         o = child1.DataBindings;\r
351                         Assert.IsFalse (child1.IsHandleCreated, "FD6");\r
352 \r
353                         SetUp ();\r
354                         o = child1.DesktopBounds;\r
355                         child1.DesktopBounds = new Rectangle (3, 5, child1.DesktopBounds.Width + 1, child1.DesktopBounds.Height + 1);\r
356                         Assert.IsFalse (child1.IsHandleCreated, "FD7");\r
357 \r
358                         SetUp ();\r
359                         o = child1.DesktopLocation;\r
360                         child1.DesktopLocation = child1.DesktopLocation + new Size (1, 1);\r
361                         Assert.IsFalse (child1.IsHandleCreated, "FD8");\r
362 \r
363                         SetUp ();\r
364                         o = child1.DialogResult;\r
365                         child1.DialogResult = DialogResult.Abort;\r
366                         Assert.IsFalse (child1.IsHandleCreated, "FD9");\r
367 \r
368                         SetUp ();\r
369                         o = child1.DisplayRectangle;\r
370                         Assert.IsFalse (child1.IsHandleCreated, "FD10");\r
371 \r
372                         SetUp ();\r
373                         o = child1.Disposing;\r
374                         Assert.IsFalse (child1.IsHandleCreated, "FD11");\r
375 \r
376                         SetUp ();\r
377                         o = child1.Dock;\r
378                         child1.Dock = DockStyle.Right;\r
379                         Assert.IsFalse (child1.IsHandleCreated, "FD12");\r
380 \r
381                         // E-H\r
382                         SetUp ();\r
383                         o = child1.Enabled;\r
384                         child1.Enabled = false;\r
385                         Assert.IsFalse (child1.IsHandleCreated, "A33");\r
386 \r
387                         SetUp ();\r
388                         o = child1.Focused;\r
389                         Assert.IsFalse (child1.IsHandleCreated, "A34");\r
390 \r
391                         SetUp ();\r
392                         o = child1.Font;\r
393                         child1.Font = new Font (child1.Font, FontStyle.Bold);\r
394                         Assert.IsFalse (child1.IsHandleCreated, "A35");\r
395 \r
396                         SetUp ();\r
397                         o = child1.ForeColor;\r
398                         child1.ForeColor = Color.Green;\r
399                         Assert.IsFalse (child1.IsHandleCreated, "A36");\r
400 \r
401                         SetUp ();\r
402                         o = child1.Handle;\r
403                         Assert.IsTrue (child1.IsHandleCreated, "A37");\r
404 \r
405                         SetUp ();\r
406                         o = child1.HasChildren;\r
407                         Assert.IsFalse (child1.IsHandleCreated, "A38");\r
408 \r
409                         SetUp ();\r
410                         o = child1.Height;\r
411                         child1.Height = 12;\r
412                         Assert.IsFalse (child1.IsHandleCreated, "A39");\r
413 \r
414                         // E-H - Form\r
415                         SetUp ();\r
416                         o = child1.FormBorderStyle;\r
417                         child1.FormBorderStyle = FormBorderStyle.FixedToolWindow;\r
418                         Assert.IsFalse (child1.IsHandleCreated, "FF1");\r
419 \r
420                         SetUp ();\r
421                         o = child1.HelpButton;\r
422                         child1.HelpButton = !child1.HelpButton;\r
423                         Assert.IsFalse (child1.IsHandleCreated, "FH1");\r
424 \r
425 #if NET_2_0 && !__MonoCS__\r
426                         SetUp ();\r
427                         o = child1.HorizontalScroll;\r
428                         Assert.IsFalse (child1.IsHandleCreated, "FH2"); \r
429 #endif\r
430                         // I - L\r
431                         SetUp ();\r
432                         child1.ImeMode = ImeMode.On;\r
433                         Assert.IsFalse (child1.IsHandleCreated, "A40");\r
434 \r
435                         SetUp ();\r
436                         o = child1.InvokeRequired;\r
437                         Assert.IsFalse (child1.IsHandleCreated, "A41");\r
438 \r
439                         SetUp ();\r
440                         o = child1.IsAccessible;\r
441                         Assert.IsFalse (child1.IsHandleCreated, "A42");\r
442 \r
443                         SetUp ();\r
444                         o = child1.IsDisposed;\r
445                         Assert.IsFalse (child1.IsHandleCreated, "A43");\r
446 #if !__MonoCS__ && NET_2_0\r
447                         SetUp ();\r
448                         o = child1.IsMirrored;\r
449                         Assert.IsFalse (child1.IsHandleCreated, "A44");\r
450 #endif\r
451 #if NET_2_0\r
452                         SetUp ();\r
453                         o = child1.LayoutEngine;\r
454                         Assert.IsFalse (child1.IsHandleCreated, "A45");\r
455 #endif\r
456                         SetUp ();\r
457                         o = child1.Left;\r
458                         child1.Left = 15;\r
459                         Assert.IsFalse (child1.IsHandleCreated, "A46");\r
460 \r
461                         SetUp ();\r
462                         o = child1.Location;\r
463                         child1.Location = new Point (20, 20);\r
464                         Assert.IsFalse (child1.IsHandleCreated, "A47");\r
465 \r
466                         // I - L - Form\r
467 \r
468                         SetUp ();\r
469                         o = child1.Icon;\r
470                         child1.Icon = null;\r
471                         Assert.IsFalse (child1.IsHandleCreated, "FI1");\r
472 \r
473                         SetUp ();\r
474                         o = child1.IsMdiChild;\r
475                         Assert.IsFalse (child1.IsHandleCreated, "FI2");\r
476 \r
477                         SetUp ();\r
478                         o = child1.IsMdiContainer;\r
479                         child1.IsMdiContainer = false;\r
480                         Assert.IsFalse (child1.IsHandleCreated, "FI3");\r
481 \r
482                         SetUp ();\r
483                         o = child1.IsRestrictedWindow;\r
484                         Assert.IsFalse (child1.IsHandleCreated, "FI4");\r
485 \r
486                         SetUp ();\r
487                         o = child1.KeyPreview;\r
488                         child1.KeyPreview = !child1.KeyPreview;\r
489                         Assert.IsFalse (child1.IsHandleCreated, "FK1");\r
490 \r
491                         SetUp ();\r
492                         o = child1.Location;\r
493                         child1.Location = child1.Location + new Size (1, 1);\r
494                         Assert.IsFalse (child1.IsHandleCreated, "FL1");\r
495                         \r
496                         \r
497                         // M - N\r
498 #if NET_2_0\r
499                         SetUp ();\r
500                         o = child1.Margin;\r
501                         child1.Margin = new Padding (6);\r
502                         Assert.IsFalse (child1.IsHandleCreated, "A48");\r
503 \r
504                         SetUp ();\r
505                         o = child1.MaximumSize;\r
506                         child1.MaximumSize = new Size (500, 500);\r
507                         Assert.IsFalse (child1.IsHandleCreated, "A49");\r
508 \r
509                         SetUp ();\r
510                         o = child1.MinimumSize;\r
511                         child1.MinimumSize = new Size (100, 100);\r
512                         Assert.IsFalse (child1.IsHandleCreated, "A50");\r
513 #endif\r
514                         SetUp ();\r
515                         o = child1.Name;\r
516                         child1.Name = "web";\r
517                         Assert.IsFalse (child1.IsHandleCreated, "A51");\r
518 \r
519 #if NET_2_0\r
520                         // M - O - Form\r
521                         SetUp ();\r
522                         o = child1.MainMenuStrip;\r
523                         child1.MainMenuStrip = null;\r
524                         Assert.IsFalse (child1.IsHandleCreated, "FM1"); \r
525 #endif\r
526 \r
527                         SetUp ();\r
528                         o = child1.MaximizeBox;\r
529                         child1.MaximizeBox = !child1.MaximizeBox;\r
530                         Assert.IsFalse (child1.IsHandleCreated, "FM2");\r
531 \r
532                         SetUp ();\r
533                         o = child1.MaximumSize;\r
534                         child1.MaximumSize = child1.MaximumSize + new Size (1, 1);\r
535                         Assert.IsFalse (child1.IsHandleCreated, "FM3");\r
536 \r
537                         SetUp ();\r
538                         o = child1.MdiChildren;\r
539                         Assert.IsFalse (child1.IsHandleCreated, "FM4");\r
540 \r
541                         SetUp ();\r
542                         o = child1.MdiParent;\r
543                         child1.MdiParent = null;\r
544                         Assert.IsFalse (child1.IsHandleCreated, "FM5");\r
545 \r
546                         SetUp ();\r
547                         o = child1.Menu;\r
548                         child1.Menu = null;\r
549                         Assert.IsFalse (child1.IsHandleCreated, "FM6");\r
550 \r
551                         SetUp ();\r
552                         o = child1.MergedMenu;\r
553                         Assert.IsFalse (child1.IsHandleCreated, "FM7");\r
554 \r
555                         SetUp ();\r
556                         o = child1.MinimizeBox;\r
557                         child1.MinimizeBox = !child1.MinimizeBox;\r
558                         Assert.IsFalse (child1.IsHandleCreated, "FM8");\r
559 \r
560                         SetUp ();\r
561                         o = child1.MinimumSize;\r
562                         child1.MinimumSize = child1.MinimumSize + new Size (1, 1);\r
563                         Assert.IsFalse (child1.IsHandleCreated, "FM9");\r
564 \r
565                         SetUp ();\r
566                         o = child1.Modal;\r
567                         Assert.IsFalse (child1.IsHandleCreated, "FM10");\r
568 \r
569                         SetUp ();\r
570                         o = child1.Opacity;\r
571                         child1.Opacity = 0.9;\r
572                         Assert.IsFalse (child1.IsHandleCreated, "FO1");\r
573 \r
574                         SetUp ();\r
575                         o = child1.OwnedForms;\r
576                         Assert.IsFalse (child1.IsHandleCreated, "FO2");\r
577 \r
578                         SetUp ();\r
579                         o = child1.Owner;\r
580                         child1.Owner = null;\r
581                         Assert.IsFalse (child1.IsHandleCreated, "FO3");\r
582                         \r
583                         // P - R\r
584 #if NET_2_0\r
585                         SetUp ();\r
586                         o = child1.Padding;\r
587                         child1.Padding = new Padding (4);\r
588                         Assert.IsFalse (child1.IsHandleCreated, "A52");\r
589 #endif\r
590                         try {\r
591                                 SetUp ();\r
592                                 o = child1.Parent;\r
593                                 child1.TopLevel = false;\r
594                                 child1.Parent = new Form ();\r
595                                 Assert.Fail ("A53 - Expected ArgumentException, got no exception");\r
596                         } catch (ArgumentException ex) {\r
597                                 TestHelper.RemoveWarning (ex);\r
598                         } catch (Exception ex) {\r
599                                 Assert.Fail ("A53 - Expected ArgumentException, got " + ex.GetType ().Name);\r
600                         } finally {\r
601                                 Assert.IsFalse (child1.IsHandleCreated, "A53");\r
602                         }\r
603 #if NET_2_0\r
604                         SetUp ();\r
605                         o = child1.PreferredSize;\r
606                         Assert.IsFalse (child1.IsHandleCreated, "A54");\r
607 #endif\r
608                         SetUp ();\r
609                         o = child1.ProductName;\r
610                         Assert.IsFalse (child1.IsHandleCreated, "A55");\r
611 \r
612                         SetUp ();\r
613                         o = child1.ProductVersion;\r
614                         Assert.IsFalse (child1.IsHandleCreated, "A56");\r
615 \r
616                         SetUp ();\r
617                         o = child1.RecreatingHandle;\r
618                         Assert.IsFalse (child1.IsHandleCreated, "A57");\r
619 \r
620                         SetUp ();\r
621                         o = child1.Region;\r
622                         child1.Region = new Region (new Rectangle (0, 0, 177, 177));\r
623                         Assert.IsFalse (child1.IsHandleCreated, "A58");\r
624 \r
625                         SetUp ();\r
626                         o = child1.Right;\r
627                         Assert.IsFalse (child1.IsHandleCreated, "A59");\r
628 \r
629                         SetUp ();\r
630                         o = child1.RightToLeft;\r
631                         child1.RightToLeft = RightToLeft.Yes;\r
632                         Assert.IsFalse (child1.IsHandleCreated, "A60");\r
633 \r
634                         // P - R - Form\r
635                         SetUp ();\r
636                         o = child1.ParentForm;\r
637                         Assert.IsFalse (child1.IsHandleCreated, "FP1");\r
638 \r
639 #if NET_2_0 && !__MonoCS__\r
640                         SetUp ();\r
641                         o = child1.RestoreBounds;\r
642                         Assert.IsFalse (child1.IsHandleCreated, "FR1"); \r
643 #endif\r
644 \r
645 \r
646                         // S - W\r
647                         SetUp ();\r
648                         o = child1.Site;\r
649                         Assert.IsFalse (child1.IsHandleCreated, "A61");\r
650 \r
651                         SetUp ();\r
652                         o = child1.Size;\r
653                         child1.Size = new Size (188, 188);\r
654                         Assert.IsFalse (child1.IsHandleCreated, "A62");\r
655 \r
656                         SetUp ();\r
657                         o = child1.TabIndex;\r
658                         child1.TabIndex = 5;\r
659                         Assert.IsFalse (child1.IsHandleCreated, "A63");\r
660 \r
661                         SetUp ();\r
662                         o = child1.Tag;\r
663                         child1.Tag = "moooooooo";\r
664                         Assert.IsFalse (child1.IsHandleCreated, "A64");\r
665 \r
666                         SetUp ();\r
667                         o = child1.Text;\r
668                         child1.Text = "meoooowww";\r
669                         Assert.IsFalse (child1.IsHandleCreated, "A65");\r
670 \r
671                         SetUp ();\r
672                         o = child1.Top;\r
673                         child1.Top = 16;\r
674                         Assert.IsFalse (child1.IsHandleCreated, "A66");\r
675 \r
676                         SetUp ();\r
677                         o = child1.TopLevelControl;\r
678                         Assert.IsFalse (child1.IsHandleCreated, "A67");\r
679 #if !__MonoCS__ && NET_2_0\r
680                         SetUp ();\r
681                         o = child1.UseWaitCursor;\r
682                         child1.UseWaitCursor = true;\r
683                         Assert.IsFalse (child1.IsHandleCreated, "A68");\r
684 #endif\r
685                         SetUp ();\r
686                         o = child1.Visible;\r
687                         Assert.IsFalse (child1.IsHandleCreated, "A69-a");\r
688                         \r
689                         SetUp ();\r
690                         child1.Visible = true;\r
691                         Assert.IsTrue (child1.IsHandleCreated, "A69-b");\r
692                         \r
693                         SetUp ();\r
694                         o = child1.Width;\r
695                         child1.Width = 190;\r
696                         Assert.IsFalse (child1.IsHandleCreated, "A70");\r
697 \r
698                         SetUp ();\r
699                         o = child1.WindowTarget;\r
700                         Assert.IsFalse (child1.IsHandleCreated, "A71");\r
701 \r
702                         // S - W - Form\r
703 \r
704 #if NET_2_0\r
705                         SetUp ();\r
706                         o = child1.ShowIcon;\r
707                         child1.ShowIcon = !child1.ShowIcon;\r
708                         Assert.IsFalse (child1.IsHandleCreated, "FS1"); \r
709 #endif\r
710 \r
711                         SetUp ();\r
712                         o = child1.ShowInTaskbar;\r
713                         child1.ShowInTaskbar = !child1.ShowInTaskbar;\r
714                         Assert.IsFalse (child1.IsHandleCreated, "FS2");\r
715 \r
716                         SetUp ();\r
717                         o = child1.Size;\r
718                         child1.Size = child1.Size + new Size (1, 1);\r
719                         Assert.IsFalse (child1.IsHandleCreated, "FS3");\r
720 \r
721                         SetUp ();\r
722                         o = child1.SizeGripStyle;\r
723                         child1.SizeGripStyle = SizeGripStyle.Show;\r
724                         Assert.IsFalse (child1.IsHandleCreated, "FS4");\r
725 \r
726                         SetUp ();\r
727                         o = child1.StartPosition;\r
728                         child1.StartPosition = FormStartPosition.Manual;\r
729                         Assert.IsFalse (child1.IsHandleCreated, "FS5");\r
730 \r
731                         SetUp ();\r
732                         o = child1.Text;\r
733                         child1.Text = "hooray!";\r
734                         Assert.IsFalse (child1.IsHandleCreated, "FT1");\r
735 \r
736                         try {\r
737                                 SetUp ();\r
738                                 o = child1.TopLevel;\r
739                                 child1.TopLevel = !child1.TopLevel;\r
740                                 Assert.Fail ("FT2 - expected ArgumentException, got no exception.");\r
741                         } catch (ArgumentException ex) {\r
742                                 TestHelper.RemoveWarning (ex);\r
743                         } catch (Exception ex) {\r
744                                 Assert.Fail ("FT2 - expected ArgumentException, got " + ex.GetType ().Name);\r
745                         } finally {\r
746                                 Assert.IsFalse (child1.IsHandleCreated, "FT2");\r
747                         }\r
748 \r
749                         SetUp ();\r
750                         o = child1.TopMost;\r
751                         child1.TopMost = !child1.TopMost;\r
752                         Assert.IsFalse (child1.IsHandleCreated, "FT3");\r
753 \r
754                         SetUp ();\r
755                         o = child1.TransparencyKey;\r
756                         child1.TransparencyKey = Color.BurlyWood;\r
757                         Assert.IsFalse (child1.IsHandleCreated, "FT4");\r
758 \r
759 #if NET_2_0 && !__MonoCS__\r
760                         SetUp ();\r
761                         o = child1.VerticalScroll;\r
762                         Assert.IsFalse (child1.IsHandleCreated, "FV1"); \r
763 #endif\r
764 \r
765                         SetUp ();\r
766                         o = child1.WindowState;\r
767                         child1.WindowState = FormWindowState.Maximized;\r
768                         Assert.IsFalse (child1.IsHandleCreated, "FW1");\r
769 \r
770                         TestHelper.RemoveWarning (o);\r
771                 }\r
772 \r
773                 [Test]\r
774                 public void TestProtectedProperties ()\r
775                 {\r
776                         // Not a surprise, but none of these cause handle creation.\r
777                         // Included just to absolutely certain.\r
778                         object o;\r
779 #if !__MonoCS__ && NET_2_0\r
780                         SetUp ();\r
781                         o = child1.PublicCanRaiseEvents;\r
782                         Assert.IsFalse (child1.IsHandleCreated, "A1");\r
783 #endif\r
784                         SetUp ();\r
785                         o = child1.PublicCreateParams;\r
786                         Assert.IsFalse (child1.IsHandleCreated, "A2");\r
787 #if NET_2_0\r
788                         SetUp ();\r
789                         o = child1.PublicDefaultCursor;\r
790                         Assert.IsFalse (child1.IsHandleCreated, "A3");\r
791 #endif\r
792                         SetUp ();\r
793                         o = child1.PublicDefaultImeMode;\r
794                         Assert.IsFalse (child1.IsHandleCreated, "A4");\r
795 #if NET_2_0\r
796                         SetUp ();\r
797                         o = child1.PublicDefaultMargin;\r
798                         Assert.IsFalse (child1.IsHandleCreated, "A5");\r
799                         \r
800                         SetUp ();\r
801                         o = child1.PublicDefaultMaximumSize;\r
802                         Assert.IsFalse (child1.IsHandleCreated, "A6");\r
803 \r
804                         SetUp ();\r
805                         o = child1.PublicDefaultMinimumSize;\r
806                         Assert.IsFalse (child1.IsHandleCreated, "A7");\r
807 \r
808                         SetUp ();\r
809                         o = child1.PublicDefaultPadding;\r
810                         Assert.IsFalse (child1.IsHandleCreated, "A8");\r
811 \r
812                         SetUp ();\r
813                         o = child1.PublicDefaultSize;\r
814                         Assert.IsFalse (child1.IsHandleCreated, "A9");\r
815 \r
816                         SetUp ();\r
817                         o = child1.PublicDoubleBuffered;\r
818                         child1.PublicDoubleBuffered = !child1.PublicDoubleBuffered;\r
819                         Assert.IsFalse (child1.IsHandleCreated, "A10");\r
820 #endif\r
821                         SetUp ();\r
822                         o = child1.PublicFontHeight;\r
823                         child1.PublicFontHeight = child1.PublicFontHeight + 1;\r
824                         Assert.IsFalse (child1.IsHandleCreated, "A11");\r
825 \r
826                         SetUp ();\r
827                         o = child1.PublicRenderRightToLeft;\r
828                         Assert.IsFalse (child1.IsHandleCreated, "A12");\r
829 \r
830                         SetUp ();\r
831                         o = child1.PublicResizeRedraw;\r
832                         child1.PublicResizeRedraw = !child1.PublicResizeRedraw;\r
833                         Assert.IsFalse (child1.IsHandleCreated, "A13");\r
834 #if !__MonoCS__ && NET_2_0\r
835                         SetUp ();\r
836                         o = child1.PublicScaleChildren;\r
837                         Assert.IsFalse (child1.IsHandleCreated, "A14");\r
838 #endif\r
839                         SetUp ();\r
840                         o = child1.PublicShowFocusCues;\r
841                         Assert.IsFalse (child1.IsHandleCreated, "A15");\r
842 \r
843                         SetUp ();\r
844                         o = child1.PublicShowKeyboardCues;\r
845                         Assert.IsFalse (child1.IsHandleCreated, "A16");\r
846 \r
847 #if NET_2_0\r
848                         SetUp ();\r
849                         o = child1.PublicAutoScaleFactor;\r
850                         Assert.IsFalse (child1.IsHandleCreated, "F1"); \r
851 #endif\r
852                         SetUp ();\r
853                         o = child1.PublicDesignMode;\r
854                         Assert.IsFalse (child1.IsHandleCreated, "F2");\r
855 \r
856                         SetUp ();\r
857                         o = child1.PublicEvents;\r
858                         Assert.IsFalse (child1.IsHandleCreated, "F3");\r
859 \r
860                         SetUp ();\r
861                         o = child1.PublicHScroll;\r
862                         child1.PublicHScroll = !child1.PublicHScroll;\r
863                         Assert.IsFalse (child1.IsHandleCreated, "F4");\r
864 \r
865                         SetUp ();\r
866                         o = child1.PublicMaximizedBounds;\r
867                         child1.PublicMaximizedBounds = new Rectangle (1, 1, 1, 1);\r
868                         Assert.IsFalse (child1.IsHandleCreated, "F5");\r
869 \r
870 #if NET_2_0\r
871                         SetUp ();\r
872                         o = child1.PublicShowWithoutActivation;\r
873                         Assert.IsFalse (child1.IsHandleCreated, "F6"); \r
874 #endif\r
875                         SetUp ();\r
876                         o = child1.PublicVScroll;\r
877                         child1.PublicVScroll = !child1.PublicVScroll;\r
878                         Assert.IsFalse (child1.IsHandleCreated, "F7");\r
879                         \r
880 \r
881                         TestHelper.RemoveWarning (o);\r
882                 }\r
883 \r
884                 [Test]\r
885                 public void TestPublicMethods ()\r
886                 {\r
887                         // Public Methods that force Handle creation:\r
888                         // - CreateGraphics ()\r
889                         // - Focus ()\r
890                         // - GetChildAtPoint ()\r
891                         // - PointToClient ()\r
892                         // - PointToScreen ()\r
893                         // - RectangleToClient ()\r
894                         // - RectangleToScreen ()\r
895                         // - Select ()\r
896                         \r
897                         SetUp ();\r
898                         child1.BringToFront ();\r
899                         Assert.IsFalse (child1.IsHandleCreated, "A1");\r
900 \r
901                         SetUp ();\r
902                         child1.Contains (new Form ());\r
903                         Assert.IsFalse (child1.IsHandleCreated, "A2");\r
904 \r
905                         SetUp ();\r
906                         child1.CreateControl ();\r
907                         Assert.IsFalse (child1.IsHandleCreated, "A3");\r
908 \r
909                         SetUp ();\r
910                         Graphics g = child1.CreateGraphics ();\r
911                         Assert.IsTrue (child1.IsHandleCreated, "A4");\r
912                         g.Dispose ();\r
913 \r
914                         SetUp ();\r
915                         child1.Dispose ();\r
916                         Assert.IsFalse (child1.IsHandleCreated, "A5");\r
917 \r
918                         // This is weird, it causes a form to appear that won't go away until you move the mouse over it, \r
919                         // but it doesn't create a handle??\r
920                         //DragDropEffects d = c.DoDragDrop ("yo", DragDropEffects.None);\r
921                         //Assert.IsFalse (c.IsHandleCreated, "A6");\r
922                         //Assert.AreEqual (DragDropEffects.None, d, "A6b");\r
923                         \r
924                         //Bitmap b = new Bitmap (100, 100);\r
925                         //c.DrawToBitmap (b, new Rectangle (0, 0, 100, 100));\r
926                         //Assert.IsFalse (c.IsHandleCreated, "A7");\r
927                         //b.Dispose ();\r
928                         SetUp ();\r
929                         child1.FindForm ();\r
930                         Assert.IsFalse (child1.IsHandleCreated, "A8");\r
931 \r
932                         SetUp ();\r
933                         child1.Focus ();\r
934                         Assert.IsTrue (child1.IsHandleCreated, "A9");\r
935 \r
936                         SetUp ();\r
937                         child1.GetChildAtPoint (new Point (10, 10));\r
938                         Assert.IsTrue (child1.IsHandleCreated, "A10");\r
939 \r
940                         SetUp ();\r
941                         child1.GetContainerControl ();\r
942                         Assert.IsFalse (child1.IsHandleCreated, "A11");\r
943                         \r
944                         SetUp ();\r
945                         child1.GetNextControl (new Control (), true);\r
946                         Assert.IsFalse (child1.IsHandleCreated, "A12");\r
947 #if NET_2_0\r
948                         SetUp ();\r
949                         child1.GetPreferredSize (Size.Empty);\r
950                         Assert.IsFalse (child1.IsHandleCreated, "A13");\r
951 #endif\r
952                         SetUp ();\r
953                         child1.Hide ();\r
954                         Assert.IsFalse (child1.IsHandleCreated, "A14");\r
955 \r
956                         SetUp ();\r
957                         child1.Invalidate ();\r
958                         Assert.IsFalse (child1.IsHandleCreated, "A15");\r
959 \r
960                         child1.Invoke (new InvokeDelegate (InvokeMethod));\r
961                         Assert.IsFalse (child1.IsHandleCreated, "A16");\r
962                         \r
963                         SetUp ();\r
964                         child1.PerformLayout ();\r
965                         Assert.IsFalse (child1.IsHandleCreated, "A17");\r
966 \r
967                         SetUp ();\r
968                         child1.PointToClient (new Point (100, 100));\r
969                         Assert.IsTrue (child1.IsHandleCreated, "A18");\r
970 \r
971                         SetUp ();\r
972                         child1.PointToScreen (new Point (100, 100));\r
973                         Assert.IsTrue (child1.IsHandleCreated, "A19");\r
974                         \r
975                         //c.PreProcessControlMessage   ???\r
976                         //c.PreProcessMessage          ???\r
977                         SetUp ();\r
978                         child1.RectangleToClient (new Rectangle (0, 0, 100, 100));\r
979                         Assert.IsTrue (child1.IsHandleCreated, "A20");\r
980                         \r
981                         SetUp ();\r
982                         child1.RectangleToScreen (new Rectangle (0, 0, 100, 100));\r
983                         Assert.IsTrue (child1.IsHandleCreated, "A21");\r
984 \r
985                         SetUp ();\r
986                         child1.Refresh ();\r
987                         Assert.IsFalse (child1.IsHandleCreated, "A22");\r
988 \r
989                         SetUp ();\r
990                         child1.ResetBackColor ();\r
991                         Assert.IsFalse (child1.IsHandleCreated, "A23");\r
992 \r
993                         SetUp ();\r
994                         child1.ResetBindings ();\r
995                         Assert.IsFalse (child1.IsHandleCreated, "A24");\r
996 \r
997                         SetUp ();\r
998                         child1.ResetCursor ();\r
999                         Assert.IsFalse (child1.IsHandleCreated, "A25");\r
1000 \r
1001                         SetUp ();\r
1002                         child1.ResetFont ();\r
1003                         Assert.IsFalse (child1.IsHandleCreated, "A26");\r
1004 \r
1005                         SetUp ();\r
1006                         child1.ResetForeColor ();\r
1007                         Assert.IsFalse (child1.IsHandleCreated, "A27");\r
1008 \r
1009                         SetUp ();\r
1010                         child1.ResetImeMode ();\r
1011                         Assert.IsFalse (child1.IsHandleCreated, "A28");\r
1012 \r
1013                         SetUp ();\r
1014                         child1.ResetRightToLeft ();\r
1015                         Assert.IsFalse (child1.IsHandleCreated, "A29");\r
1016 \r
1017                         SetUp ();\r
1018                         child1.ResetText ();\r
1019                         Assert.IsFalse (child1.IsHandleCreated, "A30");\r
1020 \r
1021                         SetUp ();\r
1022                         child1.SuspendLayout ();\r
1023                         Assert.IsFalse (child1.IsHandleCreated, "A31");\r
1024 \r
1025                         SetUp ();\r
1026                         child1.ResumeLayout ();\r
1027                         Assert.IsFalse (child1.IsHandleCreated, "A32");\r
1028                         \r
1029 #if NET_2_0\r
1030                         SetUp ();\r
1031                         child1.Scale (new SizeF (1.5f, 1.5f));\r
1032                         Assert.IsFalse (child1.IsHandleCreated, "A33");\r
1033 #endif\r
1034                         SetUp ();\r
1035                         child1.Select ();\r
1036                         Assert.IsTrue (child1.IsHandleCreated, "A34");\r
1037 \r
1038                         SetUp ();\r
1039                         child1.SelectNextControl (new Control (), true, true, true, true);\r
1040                         Assert.IsFalse (child1.IsHandleCreated, "A35");\r
1041 \r
1042                         SetUp ();\r
1043                         child1.SetBounds (0, 0, 100, 100);\r
1044                         Assert.IsFalse (child1.IsHandleCreated, "A36");\r
1045 \r
1046                         SetUp ();\r
1047                         child1.Update ();\r
1048                         Assert.IsFalse (child1.IsHandleCreated, "A37");\r
1049 \r
1050                         // Form\r
1051 \r
1052                         SetUp ();\r
1053                         child1.Activate ();\r
1054                         Assert.IsFalse (child1.IsHandleCreated, "F1");\r
1055 \r
1056                         SetUp ();\r
1057                         child1.AddOwnedForm (new Form ());\r
1058                         Assert.IsFalse (child1.IsHandleCreated, "F2");\r
1059 \r
1060                         SetUp ();\r
1061                         child1.Close ();\r
1062                         Assert.IsFalse (child1.IsHandleCreated, "F3");\r
1063 \r
1064                         SetUp ();\r
1065                         child1.Hide ();\r
1066                         Assert.IsFalse (child1.IsHandleCreated, "F4");\r
1067 \r
1068                         SetUp ();\r
1069                         child1.LayoutMdi (MdiLayout.Cascade);\r
1070                         Assert.IsFalse (child1.IsHandleCreated, "F5");\r
1071 \r
1072 #if NET_2_0 && !__MonoCS__\r
1073                         SetUp ();\r
1074                         child1.PerformAutoScale ();\r
1075                         Assert.IsFalse (child1.IsHandleCreated, "F6");\r
1076 #endif\r
1077 \r
1078                         SetUp ();\r
1079                         child1.PerformLayout ();\r
1080                         Assert.IsFalse (child1.IsHandleCreated, "F7");\r
1081 \r
1082                         SetUp ();\r
1083                         child1.AddOwnedForm (new Form ());\r
1084                         child1.RemoveOwnedForm (child1.OwnedForms [child1.OwnedForms.Length - 1]);\r
1085                         Assert.IsFalse (child1.IsHandleCreated, "F8");\r
1086 \r
1087                         SetUp ();\r
1088                         child1.ScrollControlIntoView (null);\r
1089                         Assert.IsFalse (child1.IsHandleCreated, "F9");\r
1090 \r
1091                         SetUp ();\r
1092                         child1.SetAutoScrollMargin (7, 13);\r
1093                         Assert.IsFalse (child1.IsHandleCreated, "F10");\r
1094 \r
1095                         SetUp ();\r
1096                         child1.SetDesktopBounds (-1, -1, 144, 169);\r
1097                         Assert.IsFalse (child1.IsHandleCreated, "F11");\r
1098 \r
1099                         SetUp ();\r
1100                         child1.SetDesktopLocation (7, 13);\r
1101                         Assert.IsFalse (child1.IsHandleCreated, "F12");\r
1102 \r
1103 #if NET_2_0\r
1104                         try {\r
1105                                 SetUp ();\r
1106                                 child1.Show (null);\r
1107                                 Assert.Fail ("F13 - expected InvalidOperationException, got no exception.");\r
1108                         } catch (InvalidOperationException ex) {\r
1109                                 TestHelper.RemoveWarning (ex);\r
1110                         } catch (Exception ex) {\r
1111                                 Assert.Fail ("F13 - expected InvalidOperationException, got " + ex.GetType ().Name);\r
1112                         } finally {\r
1113                                 Assert.IsFalse (child1.IsHandleCreated, "F13");\r
1114                         }\r
1115 #endif\r
1116                         \r
1117                         //c.ShowDialog ()\r
1118 \r
1119                         SetUp ();\r
1120                         child1.ToString ();\r
1121                         Assert.IsFalse (child1.IsHandleCreated, "F14");\r
1122 \r
1123                         SetUp ();\r
1124                         child1.Validate ();\r
1125                         Assert.IsFalse (child1.IsHandleCreated, "F15");\r
1126 \r
1127 #if NET_2_0 && !__MonoCS__\r
1128                         SetUp ();\r
1129                         child1.ValidateChildren ();\r
1130                         Assert.IsFalse (child1.IsHandleCreated, "F16"); \r
1131 #endif\r
1132                 }\r
1133 \r
1134                 [Test]\r
1135                 public void Show ()\r
1136                 {\r
1137                         SetUp ();\r
1138                         Assert.IsFalse (child1.IsHandleCreated, "A1");\r
1139                         child1.HandleCreated += new EventHandler (HandleCreated_WriteStackTrace);\r
1140                         child1.Show ();\r
1141                         Assert.IsTrue (child1.IsHandleCreated, "A2");\r
1142                 }\r
1143 \r
1144                 void HandleCreated_WriteStackTrace (object sender, EventArgs e)\r
1145                 {\r
1146                         Console.WriteLine ("Stacktrace?");//Environment.StackTrace);\r
1147                 }\r
1148 \r
1149                 public delegate void InvokeDelegate ();\r
1150                 public void InvokeMethod () { invokeform.Text = "methodinvoked"; }\r
1151 \r
1152                 Form invokeform = new Form ();\r
1153 \r
1154                 [Test]\r
1155                 public void TestProtectedMethods ()\r
1156                 {\r
1157                         // Protected Methods that force Handle creation:\r
1158                         // - CreateAccessibilityInstance ()\r
1159                         // - CreateHandle ()\r
1160                         // - IsInputChar ()\r
1161                         // - Select ()\r
1162                         // - SetVisibleCore ()\r
1163                         \r
1164                         SetUp ();\r
1165                         child1.PublicAccessibilityNotifyClients (AccessibleEvents.Focus, 0);\r
1166 #if NET_2_0\r
1167                         Assert.IsFalse (child1.IsHandleCreated, "A1");\r
1168 #else\r
1169                         Assert.IsTrue (child1.IsHandleCreated, "A1");\r
1170 #endif\r
1171                         child1.PublicCreateAccessibilityInstance ();\r
1172                         Assert.IsTrue (child1.IsHandleCreated, "A2");\r
1173 \r
1174                         SetUp ();\r
1175                         child1.PublicCreateControlsInstance ();\r
1176                         Assert.IsFalse (child1.IsHandleCreated, "A3");\r
1177 \r
1178                         SetUp ();\r
1179                         child1.PublicCreateHandle ();\r
1180                         Assert.IsTrue (child1.IsHandleCreated, "A4");\r
1181 \r
1182                         SetUp ();\r
1183                         child1.PublicDestroyHandle ();\r
1184                         Assert.IsFalse (child1.IsHandleCreated, "A5");\r
1185 \r
1186 #if NET_2_0\r
1187                         SetUp ();\r
1188                         child1.PublicGetAccessibilityObjectById (0);\r
1189                         Assert.IsFalse (child1.IsHandleCreated, "A6");\r
1190 #endif\r
1191 #if !__MonoCS__ && NET_2_0\r
1192                         SetUp ();\r
1193                         child1.PublicGetAutoSizeMode ();\r
1194                         Assert.IsFalse (child1.IsHandleCreated, "A7");\r
1195 \r
1196                         SetUp ();\r
1197                         child1.PublicGetScaledBounds (new Rectangle (0, 0, 100, 100), new SizeF (1.5f, 1.5f), BoundsSpecified.All);\r
1198                         Assert.IsFalse (child1.IsHandleCreated, "A8");\r
1199 #endif\r
1200                         SetUp ();\r
1201                         child1.PublicGetStyle (ControlStyles.FixedHeight);\r
1202                         Assert.IsFalse (child1.IsHandleCreated, "A9");\r
1203 \r
1204                         SetUp ();\r
1205                         child1.PublicGetTopLevel ();\r
1206                         Assert.IsFalse (child1.IsHandleCreated, "A10");\r
1207 \r
1208                         SetUp ();\r
1209                         child1.PublicInitLayout ();\r
1210                         Assert.IsFalse (child1.IsHandleCreated, "A11");\r
1211 \r
1212                         SetUp ();\r
1213                         child1.PublicInvokeGotFocus (child1, EventArgs.Empty);\r
1214                         Assert.IsFalse (child1.IsHandleCreated, "A12");\r
1215 \r
1216                         SetUp ();\r
1217                         child1.PublicInvokeLostFocus (child1, EventArgs.Empty);\r
1218                         Assert.IsFalse (child1.IsHandleCreated, "A13");\r
1219 \r
1220                         SetUp ();\r
1221                         child1.PublicInvokeOnClick (child1, EventArgs.Empty);\r
1222                         Assert.IsFalse (child1.IsHandleCreated, "A14");\r
1223 \r
1224                         SetUp ();\r
1225                         child1.PublicInvokePaint (child1, new PaintEventArgs (Graphics.FromImage (new Bitmap (1, 1)), Rectangle.Empty));\r
1226                         Assert.IsFalse (child1.IsHandleCreated, "A15");\r
1227 \r
1228                         SetUp ();\r
1229                         child1.PublicInvokePaintBackground (child1, new PaintEventArgs (Graphics.FromImage (new Bitmap (1, 1)), Rectangle.Empty));\r
1230                         Assert.IsFalse (child1.IsHandleCreated, "A16");\r
1231 \r
1232                         SetUp ();\r
1233                         child1.PublicIsInputChar ('c');\r
1234                         Assert.IsTrue (child1.IsHandleCreated, "A17");\r
1235 \r
1236                         SetUp ();\r
1237                         child1.PublicIsInputKey (Keys.B);\r
1238                         Assert.IsFalse (child1.IsHandleCreated, "A18");\r
1239 \r
1240                         SetUp ();\r
1241                         child1.PublicNotifyInvalidate (Rectangle.Empty);\r
1242                         Assert.IsFalse (child1.IsHandleCreated, "A19");\r
1243 \r
1244                         SetUp ();\r
1245                         child1.PublicOnVisibleChanged (EventArgs.Empty);\r
1246                         Assert.IsFalse (child1.IsHandleCreated, "A20");\r
1247 \r
1248                         SetUp ();\r
1249                         child1.PublicRaiseDragEvent (null, null);\r
1250                         Assert.IsFalse (child1.IsHandleCreated, "A21");\r
1251 \r
1252                         SetUp ();\r
1253                         child1.PublicRaiseKeyEvent (null, null);\r
1254                         Assert.IsFalse (child1.IsHandleCreated, "A22");\r
1255 \r
1256                         SetUp ();\r
1257                         child1.PublicRaiseMouseEvent (null, null);\r
1258                         Assert.IsFalse (child1.IsHandleCreated, "A23");\r
1259 \r
1260                         SetUp ();\r
1261                         child1.PublicRaisePaintEvent (null, null);\r
1262                         Assert.IsFalse (child1.IsHandleCreated, "A24");\r
1263 \r
1264                         SetUp ();\r
1265                         child1.PublicRecreateHandle ();\r
1266                         Assert.IsFalse (child1.IsHandleCreated, "A25");\r
1267 \r
1268                         SetUp ();\r
1269                         child1.PublicResetMouseEventArgs ();\r
1270                         Assert.IsFalse (child1.IsHandleCreated, "A26");\r
1271 \r
1272                         SetUp ();\r
1273                         child1.PublicRtlTranslateAlignment (ContentAlignment.BottomLeft);\r
1274                         Assert.IsFalse (child1.IsHandleCreated, "A27");\r
1275 \r
1276                         SetUp ();\r
1277                         child1.PublicRtlTranslateContent (ContentAlignment.BottomLeft);\r
1278                         Assert.IsFalse (child1.IsHandleCreated, "A28");\r
1279 \r
1280                         SetUp ();\r
1281                         child1.PublicRtlTranslateHorizontal (HorizontalAlignment.Left);\r
1282                         Assert.IsFalse (child1.IsHandleCreated, "A29");\r
1283 \r
1284                         SetUp ();\r
1285                         child1.PublicRtlTranslateLeftRight (LeftRightAlignment.Left);\r
1286                         Assert.IsFalse (child1.IsHandleCreated, "A30");\r
1287 #if !__MonoCS__ && NET_2_0\r
1288                         SetUp ();\r
1289                         child1.PublicScaleControl (new SizeF (1.5f, 1.5f), BoundsSpecified.All);\r
1290                         Assert.IsFalse (child1.IsHandleCreated, "A31");\r
1291 #endif\r
1292                         SetUp ();\r
1293                         child1.PublicScaleCore (1.5f, 1.5f);\r
1294                         Assert.IsFalse (child1.IsHandleCreated, "A32");\r
1295 \r
1296                         SetUp ();\r
1297                         child1.PublicSelect ();\r
1298                         Assert.IsTrue (child1.IsHandleCreated, "A33");\r
1299                         \r
1300 #if !__MonoCS__ && NET_2_0\r
1301                         SetUp ();\r
1302                         child1.PublicSetAutoSizeMode (AutoSizeMode.GrowAndShrink);\r
1303                         Assert.IsFalse (child1.IsHandleCreated, "A34");\r
1304 #endif\r
1305                         SetUp ();\r
1306                         child1.PublicSetBoundsCore (0, 0, 100, 100, BoundsSpecified.All);\r
1307                         Assert.IsFalse (child1.IsHandleCreated, "A35");\r
1308 \r
1309                         SetUp ();\r
1310                         child1.PublicSetClientSizeCore (122, 122);\r
1311                         Assert.IsFalse (child1.IsHandleCreated, "A36");\r
1312 \r
1313                         SetUp ();\r
1314                         child1.PublicSetStyle (ControlStyles.FixedHeight, true);\r
1315                         Assert.IsFalse (child1.IsHandleCreated, "A37");\r
1316 \r
1317                         try {\r
1318                                 SetUp ();\r
1319                                 child1.PublicSetTopLevel (true);\r
1320                                 Assert.Fail ("A38, expected ArgumentException, got no exception");\r
1321                         } catch (ArgumentException ex) {\r
1322                                 TestHelper.RemoveWarning (ex);\r
1323                         } catch (Exception ex) {\r
1324                                 Assert.Fail ("A38, expected ArgumentException, got " + ex.GetType ().Name);\r
1325                         } finally {\r
1326                                 Assert.IsFalse (child1.IsHandleCreated, "A38");\r
1327                         }\r
1328 \r
1329                         SetUp ();\r
1330                         child1.PublicSetVisibleCore (true);\r
1331                         Assert.IsTrue (child1.IsHandleCreated, "A39");\r
1332 #if NET_2_0\r
1333                         SetUp ();\r
1334                         child1.PublicSizeFromClientSize (new Size (160, 160));\r
1335                         Assert.IsFalse (child1.IsHandleCreated, "A40");\r
1336 #endif\r
1337 \r
1338                         SetUp ();\r
1339                         child1.PublicUpdateBounds ();\r
1340                         Assert.IsFalse (child1.IsHandleCreated, "A41");\r
1341 \r
1342                         SetUp ();\r
1343                         child1.PublicUpdateStyles ();\r
1344                         Assert.IsFalse (child1.IsHandleCreated, "A42");\r
1345 \r
1346                         SetUp ();\r
1347                         child1.PublicUpdateZOrder ();\r
1348                         Assert.IsFalse (child1.IsHandleCreated, "A43");\r
1349 \r
1350 \r
1351                         // Form\r
1352 \r
1353                         SetUp ();\r
1354                         main.PublicActivateMdiChild (child1);\r
1355                         main.PublicActivateMdiChild (child2);\r
1356                         Assert.IsFalse (child1.IsHandleCreated, "F1-a");\r
1357                         Assert.IsFalse (child2.IsHandleCreated, "F1-b");\r
1358 \r
1359                         SetUp ();\r
1360                         child1.PublicAdjustFormScrollbars (true);\r
1361                         Assert.IsFalse (child1.IsHandleCreated, "F2");\r
1362 \r
1363                         SetUp ();\r
1364                         child1.PublicCenterToParent ();\r
1365                         Assert.IsFalse (child1.IsHandleCreated, "F3");\r
1366 \r
1367                         SetUp ();\r
1368                         child1.PublicCenterToScreen ();\r
1369                         Assert.IsFalse (child1.IsHandleCreated, "F4");\r
1370 \r
1371                         SetUp ();\r
1372                         child1.PublicGetScrollState (1);\r
1373                         Assert.IsFalse (child1.IsHandleCreated, "F5");\r
1374 \r
1375                         SetUp ();\r
1376                         child1.PublicGetService (typeof (int));\r
1377                         Assert.IsFalse (child1.IsHandleCreated, "F6");\r
1378 \r
1379                         SetUp ();\r
1380                         Message m = new Message ();\r
1381                         child1.PublicProcessCmdKey (ref m, Keys.C);\r
1382                         Assert.IsFalse (child1.IsHandleCreated, "F7");\r
1383 \r
1384                         SetUp ();\r
1385                         child1.PublicProcessDialogChar ('p');\r
1386                         Assert.IsFalse (child1.IsHandleCreated, "F8");\r
1387 \r
1388                         SetUp ();\r
1389                         child1.PublicProcessDialogKey (Keys.D);\r
1390                         Assert.IsFalse (child1.IsHandleCreated, "F9");\r
1391 \r
1392                         SetUp ();\r
1393                         child1.PublicProcessKeyEventArgs (ref m);\r
1394                         Assert.IsFalse (child1.IsHandleCreated, "F10");\r
1395 \r
1396                         SetUp ();\r
1397                         child1.PublicProcessKeyMessage (ref m);\r
1398                         Assert.IsFalse (child1.IsHandleCreated, "F11");\r
1399 \r
1400                         SetUp ();\r
1401                         child1.PublicProcessKeyPreview (ref m);\r
1402                         Assert.IsFalse (child1.IsHandleCreated, "F12");\r
1403 \r
1404                         SetUp ();\r
1405                         child1.PublicProcessMnemonic ('Z');\r
1406                         Assert.IsFalse (child1.IsHandleCreated, "F13");\r
1407 \r
1408                         SetUp ();\r
1409                         child1.PublicProcessTabKey (true);\r
1410                         Assert.IsFalse (child1.IsHandleCreated, "F14");\r
1411 \r
1412 #if NET_2_0 && !__MonoCS__\r
1413                         SetUp ();\r
1414                         child1.Controls.Add (new Control ());\r
1415                         child1.PublicScrollToControl (child1.Controls [0]);\r
1416                         Assert.IsFalse (child1.IsHandleCreated, "F15");\r
1417 #endif\r
1418 \r
1419                         SetUp ();\r
1420                         child1.PublicSelect (true, true);\r
1421                         Assert.IsTrue (child1.IsHandleCreated, "F16");\r
1422 \r
1423                         SetUp ();\r
1424                         child1.PublicSetDisplayRectLocation (13, 17);\r
1425                         Assert.IsFalse (child1.IsHandleCreated, "F17");\r
1426 \r
1427                         SetUp ();\r
1428                         child1.PublicSetScrollState (5, false);\r
1429                         Assert.IsFalse (child1.IsHandleCreated, "F18");\r
1430 \r
1431                         SetUp ();\r
1432                         child1.PublicUpdateDefaultButton (3, false);\r
1433                         Assert.IsFalse (child1.IsHandleCreated, "F19");\r
1434                 }\r
1435 \r
1436                 private class ProtectedForm : Form\r
1437                 {\r
1438                         // Properties\r
1439 #if NET_2_0\r
1440                         public SizeF PublicAutoScaleFactor { get { return base.AutoScaleFactor; } } \r
1441 #endif\r
1442 #if !__MonoCS__ && NET_2_0\r
1443                         public bool PublicCanRaiseEvents { get { return base.CanRaiseEvents; } }\r
1444 #endif\r
1445                         public CreateParams PublicCreateParams { get { return base.CreateParams; } }\r
1446 #if NET_2_0\r
1447                         public Cursor PublicDefaultCursor { get { return base.DefaultCursor; } }\r
1448 #endif\r
1449                         public ImeMode PublicDefaultImeMode { get { return base.DefaultImeMode; } }\r
1450 #if NET_2_0\r
1451                         public Padding PublicDefaultMargin { get { return base.DefaultMargin; } }\r
1452                         public Size PublicDefaultMaximumSize { get { return base.DefaultMaximumSize; } }\r
1453                         public Size PublicDefaultMinimumSize { get { return base.DefaultMinimumSize; } }\r
1454                         public Padding PublicDefaultPadding { get { return base.DefaultPadding; } }\r
1455                         public Size PublicDefaultSize { get { return base.DefaultSize; } }\r
1456 #endif\r
1457                         public bool PublicDesignMode { get {return base.DesignMode; } }\r
1458 #if NET_2_0\r
1459                         public bool PublicDoubleBuffered { get { return base.DoubleBuffered; } set { base.DoubleBuffered = value; } }\r
1460 #endif\r
1461                         public EventHandlerList PublicEvents { get {return base.Events; } }                     \r
1462                         public int PublicFontHeight { get { return base.FontHeight; } set { base.FontHeight = value; } }\r
1463                         public bool PublicHScroll { get {return base.HScroll; } set { base.HScroll = value;} }\r
1464                         public Rectangle PublicMaximizedBounds { get {return base.MaximizedBounds; } set { base.MaximizedBounds = value; }}\r
1465                         public bool PublicRenderRightToLeft { get { return base.RenderRightToLeft; } }\r
1466                         public bool PublicResizeRedraw { get { return base.ResizeRedraw; } set { base.ResizeRedraw = value; } }\r
1467 #if !__MonoCS__ && NET_2_0\r
1468                         public bool PublicScaleChildren { get { return base.ScaleChildren; } }\r
1469 #endif\r
1470                         public bool PublicShowFocusCues { get { return base.ShowFocusCues; } }\r
1471                         public bool PublicShowKeyboardCues { get { return base.ShowKeyboardCues; } }\r
1472 #if NET_2_0\r
1473                         public bool PublicShowWithoutActivation { get { return base.ShowWithoutActivation; } } \r
1474 #endif\r
1475                         public bool PublicVScroll { get { return base.VScroll; } set { base.VScroll = value; } }\r
1476                         \r
1477                         \r
1478                         // Methods\r
1479                         public void PublicAccessibilityNotifyClients (AccessibleEvents accEvent, int childID) { base.AccessibilityNotifyClients (accEvent, childID); }\r
1480                         public void PublicActivateMdiChild (Form form) { base.ActivateMdiChild (form); }\r
1481                         public void PublicAdjustFormScrollbars (bool displayScrollbars) {base.AdjustFormScrollbars (displayScrollbars); }\r
1482                         public void PublicCenterToParent () { base.CenterToParent (); }\r
1483                         public void PublicCenterToScreen () { base.CenterToScreen (); }\r
1484                         public void PublicCreateAccessibilityInstance () { base.CreateAccessibilityInstance (); }\r
1485                         public void PublicCreateControlsInstance () { base.CreateControlsInstance (); }\r
1486                         public void PublicCreateHandle () { base.CreateHandle (); }\r
1487                         public void PublicDestroyHandle () { base.DestroyHandle (); }\r
1488 #if NET_2_0\r
1489                         public AccessibleObject PublicGetAccessibilityObjectById (int objectId) { return base.GetAccessibilityObjectById (objectId); }\r
1490 #endif\r
1491 #if !__MonoCS__ && NET_2_0\r
1492                         public AutoSizeMode PublicGetAutoSizeMode () { return base.GetAutoSizeMode (); }\r
1493                         public Rectangle PublicGetScaledBounds (Rectangle bounds, SizeF factor, BoundsSpecified specified) { return base.GetScaledBounds (bounds, factor, specified); }\r
1494 #endif\r
1495                         public bool PublicGetScrollState (int bit) { return base.GetScrollState (bit); }\r
1496                         public object PublicGetService (Type service) { return base.GetService (service); }\r
1497                         public bool PublicGetStyle (ControlStyles flag) { return base.GetStyle (flag); }\r
1498                         public bool PublicGetTopLevel () { return base.GetTopLevel (); }\r
1499                         public void PublicInitLayout () { base.InitLayout (); }\r
1500                         public void PublicInvokeGotFocus (Control toInvoke, EventArgs e) { base.InvokeGotFocus (toInvoke, e); }\r
1501                         public void PublicInvokeLostFocus (Control toInvoke, EventArgs e) { base.InvokeLostFocus (toInvoke, e); }\r
1502                         public void PublicInvokeOnClick (Control toInvoke, EventArgs e) { base.InvokeOnClick (toInvoke, e); }\r
1503                         public void PublicInvokePaint (Control c, PaintEventArgs e) { base.InvokePaint (c, e); }\r
1504                         public void PublicInvokePaintBackground (Control c, PaintEventArgs e) { base.InvokePaintBackground (c, e); }\r
1505                         public bool PublicIsInputChar (char charCode) { return base.IsInputChar (charCode); }\r
1506                         public bool PublicIsInputKey (Keys keyData) { return base.IsInputKey (keyData); }\r
1507                         public void PublicNotifyInvalidate (Rectangle invalidatedArea) { base.NotifyInvalidate (invalidatedArea); }\r
1508                         public void PublicOnVisibleChanged (EventArgs e) { base.OnVisibleChanged (e); }\r
1509                         public void PublicProcessCmdKey (ref Message msg, Keys keyData) { base.ProcessCmdKey (ref msg, keyData); }\r
1510                         public void PublicProcessDialogChar (char charCode) { base.ProcessDialogChar (charCode); }\r
1511                         public void PublicProcessDialogKey (Keys keyData) { base.ProcessDialogKey (keyData); }\r
1512                         public void PublicProcessKeyEventArgs (ref Message m) { base.ProcessKeyEventArgs (ref m); }\r
1513                         public void PublicProcessKeyMessage (ref Message m) { base.ProcessKeyMessage (ref m); }\r
1514                         public void PublicProcessKeyPreview (ref Message m) { base.ProcessKeyPreview (ref m); }\r
1515                         public void PublicProcessMnemonic (char charCode) { base.ProcessMnemonic (charCode); }\r
1516                         public void PublicProcessTabKey (bool forward) { base.ProcessTabKey (forward); }\r
1517                         public void PublicRaiseDragEvent (Object key, DragEventArgs e) { base.RaiseDragEvent (key, e); }\r
1518                         public void PublicRaiseKeyEvent (Object key, KeyEventArgs e) { base.RaiseKeyEvent (key, e); }\r
1519                         public void PublicRaiseMouseEvent (Object key, MouseEventArgs e) { base.RaiseMouseEvent (key, e); }\r
1520                         public void PublicRaisePaintEvent (Object key, PaintEventArgs e) { base.RaisePaintEvent (key, e); }\r
1521                         public void PublicRecreateHandle () { base.RecreateHandle (); }\r
1522                         public void PublicResetMouseEventArgs () { base.ResetMouseEventArgs (); }\r
1523                         public ContentAlignment PublicRtlTranslateAlignment (ContentAlignment align) { return base.RtlTranslateAlignment (align); }\r
1524                         public ContentAlignment PublicRtlTranslateContent (ContentAlignment align) { return base.RtlTranslateContent (align); }\r
1525                         public HorizontalAlignment PublicRtlTranslateHorizontal (HorizontalAlignment align) { return base.RtlTranslateHorizontal (align); }\r
1526                         public LeftRightAlignment PublicRtlTranslateLeftRight (LeftRightAlignment align) { return base.RtlTranslateLeftRight (align); }\r
1527 #if !__MonoCS__ && NET_2_0\r
1528                         public void PublicScaleControl (SizeF factor, BoundsSpecified specified) { base.ScaleControl (factor, specified); }\r
1529 #endif\r
1530                         public void PublicScaleCore (float dx, float dy) { base.ScaleCore (dx, dy); }\r
1531 #if NET_2_0 && !__MonoCS__\r
1532                         public void PublicScrollToControl (Control activeControl) { base.ScrollToControl (activeControl); } \r
1533 #endif\r
1534                         public void PublicSelect () { base.Select (); }\r
1535                         public void PublicSelect (bool directed, bool forward) { base.Select (directed, forward); }\r
1536 \r
1537 #if !__MonoCS__ && NET_2_0\r
1538                         public void PublicSetAutoSizeMode (AutoSizeMode mode) { base.SetAutoSizeMode (mode); }\r
1539 #endif\r
1540                         public void PublicSetBoundsCore (int x, int y, int width, int height, BoundsSpecified specified) { base.SetBoundsCore (x, y, width, height, specified); }\r
1541                         public void PublicSetClientSizeCore (int x, int y) { base.SetClientSizeCore (x, y); }\r
1542                         public void PublicSetDisplayRectLocation (int x, int y) { base.SetDisplayRectLocation (x, y); }\r
1543                         public void PublicSetScrollState (int bit, bool value) { base.SetScrollState (bit, value); }\r
1544                         public void PublicSetStyle (ControlStyles flag, bool value) { base.SetStyle (flag, value); }\r
1545                         public void PublicSetTopLevel (bool value) { base.SetTopLevel (value); }\r
1546                         public void PublicSetVisibleCore (bool value) { base.SetVisibleCore (value); }\r
1547 #if NET_2_0\r
1548                         public Size PublicSizeFromClientSize (Size clientSize) { return base.SizeFromClientSize (clientSize); }\r
1549 #endif\r
1550                         public void PublicUpdateBounds () { base.UpdateBounds (); }\r
1551                         public void PublicUpdateDefaultButton (int bit, bool value) { base.UpdateDefaultButton (); }\r
1552                         public void PublicUpdateStyles () { base.UpdateStyles (); }\r
1553                         public void PublicUpdateZOrder () { base.UpdateZOrder (); }\r
1554                 }\r
1555         }\r
1556 }\r