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