0c9f24e967fe484cf1802b2defdefce25e42eb43
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / ControlHandleTest.cs
1 // This test is designed to find exactly what conditions cause the control's
2 // Handle to be created.
3 using System;
4 using NUnit.Framework;
5 using System.Drawing;
6 using System.Windows.Forms;
7 using System.ComponentModel;
8
9 namespace MonoTests.System.Windows.Forms
10 {
11         [TestFixture]
12         public class ControlHandleTest
13         {
14                 [Test]
15                 public void TestConstructors ()
16                 {
17                         Control c = new Control ();
18                         Assert.IsFalse (c.IsHandleCreated, "A1");
19
20                         c = new Control ("bob");
21                         Assert.IsFalse (c.IsHandleCreated, "A2");
22
23                         c = new Control (new Control (), "bob");
24                         Assert.IsFalse (c.IsHandleCreated, "A3");
25
26                         c = new Control ("bob", 0, 0, 100, 100);
27                         Assert.IsFalse (c.IsHandleCreated, "A4");
28
29                         c = new Control (new Control (), "bob", 0, 0, 100, 100);
30                         Assert.IsFalse (c.IsHandleCreated, "A5");
31                 }
32                 
33                 [Test]
34                 public void TestPublicProperties ()
35                 {
36                         // This long, carpal-tunnel syndrome inducing test shows us that
37                         // the following properties cause the Handle to be created:
38                         // - AccessibilityObject        [get]
39                         // - Capture                    [set]
40                         // - Handle                     [get]
41                         Control c = new Control ();
42                         // A
43                         object o = c.AccessibilityObject;
44                         Assert.IsTrue (c.IsHandleCreated, "A0");
45                         c = new Control ();
46
47                         o = c.AccessibleDefaultActionDescription;
48                         c.AccessibleDefaultActionDescription = "playdoh";
49                         Assert.IsFalse (c.IsHandleCreated, "A1");
50                         o = c.AccessibleDescription;
51                         c.AccessibleDescription = "more playdoh!";
52                         Assert.IsFalse (c.IsHandleCreated, "A2");
53                         o = c.AccessibleName;
54                         c.AccessibleName = "playdoh fun factory";
55                         Assert.IsFalse (c.IsHandleCreated, "A3");
56                         o = c.AccessibleRole;
57                         c.AccessibleRole = AccessibleRole.Border;
58                         Assert.IsFalse (c.IsHandleCreated, "A4");
59                         o = c.AllowDrop;
60                         c.AllowDrop = true;
61                         Assert.IsFalse (c.IsHandleCreated, "A5");
62                         // If we don't reset the control, handle creation will fail
63                         // because AllowDrop requires STAThread, which Nunit doesn't do
64                         c = new Control();
65                         o = c.Anchor;
66                         c.Anchor = AnchorStyles.Right;
67                         Assert.IsFalse (c.IsHandleCreated, "A6");
68 #if !__MonoCS__ && NET_2_0
69                         o = c.AutoScrollOffset;
70                         c.AutoScrollOffset = new Point (40, 40);
71                         Assert.IsFalse (c.IsHandleCreated, "A7");
72 #endif
73 #if NET_2_0
74                         o = c.AutoSize;
75                         c.AutoSize = true;
76                         Assert.IsFalse (c.IsHandleCreated, "A8");
77 #endif
78                 
79                         // B
80                         o = c.BackColor;
81                         c.BackColor = Color.Green;
82                         Assert.IsFalse (c.IsHandleCreated, "A9");
83                         o = c.BackgroundImage;
84                         c.BackgroundImage = new Bitmap (1, 1);
85                         Assert.IsFalse (c.IsHandleCreated, "A10");
86 #if NET_2_0
87                         o = c.BackgroundImageLayout;
88                         c.BackgroundImageLayout = ImageLayout.Stretch;
89                         Assert.IsFalse (c.IsHandleCreated, "A11");
90 #endif
91                         o = c.BindingContext;
92                         c.BindingContext = new BindingContext ();
93                         Assert.IsFalse (c.IsHandleCreated, "A12");
94                         o = c.Bottom;
95                         Assert.IsFalse (c.IsHandleCreated, "A13");
96                         o = c.Bounds;
97                         c.Bounds = new Rectangle (0, 0, 12, 12);
98                         Assert.IsFalse (c.IsHandleCreated, "A14");
99                         
100                         // C
101                         o = c.CanFocus;
102                         Assert.IsFalse (c.IsHandleCreated, "A15");
103                         o = c.CanSelect;
104                         Assert.IsFalse (c.IsHandleCreated, "A16");
105                         o = c.Capture;
106                         Assert.IsFalse (c.IsHandleCreated, "A17a");
107                         c.Capture = true;
108                         Assert.IsTrue (c.IsHandleCreated, "A17b");
109                         c = new Control ();
110                         o = c.CausesValidation;
111                         c.CausesValidation = false;
112                         Assert.IsFalse (c.IsHandleCreated, "A18");
113                         o = c.ClientRectangle;
114                         Assert.IsFalse (c.IsHandleCreated, "A19");
115                         o = c.ClientSize;
116                         c.ClientSize = new Size (30, 30);
117                         Assert.IsFalse (c.IsHandleCreated, "A20");
118                         o = c.CompanyName;
119                         Assert.IsFalse (c.IsHandleCreated, "A21");
120                         o = c.Container;
121                         Assert.IsFalse (c.IsHandleCreated, "A22");
122                         o = c.ContainsFocus;
123                         Assert.IsFalse (c.IsHandleCreated, "A23");
124                         o = c.ContextMenu;
125                         c.ContextMenu = new ContextMenu ();
126                         Assert.IsFalse (c.IsHandleCreated, "A24");
127 #if NET_2_0
128                         o = c.ContextMenuStrip;
129                         c.ContextMenuStrip = new ContextMenuStrip ();
130                         Assert.IsFalse (c.IsHandleCreated, "A25");
131 #endif
132                         o = c.Controls;
133                         Assert.IsFalse (c.IsHandleCreated, "A26");
134                         o = c.Created;
135                         Assert.IsFalse (c.IsHandleCreated, "A27");
136                         o = c.Cursor;
137                         c.Cursor = Cursors.Arrow;
138                         Assert.IsFalse (c.IsHandleCreated, "A28");
139                         
140                         // D
141                         o = c.DataBindings;
142                         Assert.IsFalse (c.IsHandleCreated, "A29");
143                         o = c.DisplayRectangle;
144                         Assert.IsFalse (c.IsHandleCreated, "A30");
145                         o = c.Disposing;
146                         Assert.IsFalse (c.IsHandleCreated, "A31");
147                         o = c.Dock;
148                         c.Dock = DockStyle.Fill;
149                         Assert.IsFalse (c.IsHandleCreated, "A32");
150
151                         // E-H
152                         o = c.Enabled;
153                         c.Enabled = false;
154                         Assert.IsFalse (c.IsHandleCreated, "A33");
155                         c = new Control ();  //Reset just in case enable = false affects things
156                         o = c.Focused;
157                         Assert.IsFalse (c.IsHandleCreated, "A34");
158                         o = c.Font;
159                         c.Font = new Font (c.Font, FontStyle.Bold);
160                         Assert.IsFalse (c.IsHandleCreated, "A35");
161                         o = c.ForeColor;
162                         c.ForeColor = Color.Green;
163                         Assert.IsFalse (c.IsHandleCreated, "A36");
164                         o = c.Handle;
165                         Assert.IsTrue (c.IsHandleCreated, "A37");
166                         c = new Control ();
167                         o = c.HasChildren;
168                         Assert.IsFalse (c.IsHandleCreated, "A38");
169                         o = c.Height;
170                         c.Height = 12;
171                         Assert.IsFalse (c.IsHandleCreated, "A39");
172                         
173                         // I - L
174                         o = c.ImeMode;
175                         c.ImeMode = ImeMode.On;
176                         Assert.IsFalse (c.IsHandleCreated, "A40");
177                         o = c.InvokeRequired;
178                         Assert.IsFalse (c.IsHandleCreated, "A41");
179                         o = c.IsAccessible;
180                         Assert.IsFalse (c.IsHandleCreated, "A42");
181                         o = c.IsDisposed;
182                         Assert.IsFalse (c.IsHandleCreated, "A43");
183 #if !__MonoCS__ && NET_2_0
184                         o = c.IsMirrored;
185                         Assert.IsFalse (c.IsHandleCreated, "A44");
186 #endif
187 #if NET_2_0
188                         o = c.LayoutEngine;
189                         Assert.IsFalse (c.IsHandleCreated, "A45");
190 #endif
191                         o = c.Left;
192                         c.Left = 15;
193                         Assert.IsFalse (c.IsHandleCreated, "A46");
194                         o = c.Location;
195                         c.Location = new Point (20, 20);
196                         Assert.IsFalse (c.IsHandleCreated, "A47");
197
198                         // M - N
199 #if NET_2_0
200                         o = c.Margin;
201                         c.Margin = new Padding (6);
202                         Assert.IsFalse (c.IsHandleCreated, "A48");
203                         o = c.MaximumSize;
204                         c.MaximumSize = new Size (500, 500);
205                         Assert.IsFalse (c.IsHandleCreated, "A49");
206                         o = c.MinimumSize;
207                         c.MinimumSize = new Size (100, 100);
208                         Assert.IsFalse (c.IsHandleCreated, "A50");
209 #endif
210                         o = c.Name;
211                         c.Name = "web";
212                         Assert.IsFalse (c.IsHandleCreated, "A51");
213                         
214                         // P - R
215 #if NET_2_0
216                         o = c.Padding;
217                         c.Padding = new Padding (4);
218                         Assert.IsFalse (c.IsHandleCreated, "A52");
219 #endif
220                         o = c.Parent;
221                         c.Parent = new Control ();
222                         Assert.IsFalse (c.IsHandleCreated, "A53");
223 #if NET_2_0
224                         o = c.PreferredSize;
225                         Assert.IsFalse (c.IsHandleCreated, "A54");
226 #endif
227                         o = c.ProductName;
228                         Assert.IsFalse (c.IsHandleCreated, "A55");
229                         o = c.ProductVersion;
230                         Assert.IsFalse (c.IsHandleCreated, "A56");
231                         o = c.RecreatingHandle;
232                         Assert.IsFalse (c.IsHandleCreated, "A57");
233                         o = c.Region;
234                         c.Region = new Region (new Rectangle (0, 0, 177, 177));
235                         Assert.IsFalse (c.IsHandleCreated, "A58");
236                         o = c.Right;
237                         Assert.IsFalse (c.IsHandleCreated, "A59");
238                         o = c.RightToLeft;
239                         c.RightToLeft = RightToLeft.Yes;
240                         Assert.IsFalse (c.IsHandleCreated, "A60");
241                         
242                         // S - W
243                         o = c.Site;
244                         Assert.IsFalse (c.IsHandleCreated, "A61");
245                         o = c.Size;
246                         c.Size = new Size (188, 188);
247                         Assert.IsFalse (c.IsHandleCreated, "A62");
248                         o = c.TabIndex;
249                         c.TabIndex = 5;
250                         Assert.IsFalse (c.IsHandleCreated, "A63");
251                         o = c.Tag;
252                         c.Tag = "moooooooo";
253                         Assert.IsFalse (c.IsHandleCreated, "A64");
254                         o = c.Text;
255                         c.Text = "meoooowww";
256                         Assert.IsFalse (c.IsHandleCreated, "A65");
257                         o = c.Top;
258                         c.Top = 16;
259                         Assert.IsFalse (c.IsHandleCreated, "A66");
260                         o = c.TopLevelControl;
261                         Assert.IsFalse (c.IsHandleCreated, "A67");
262 #if !__MonoCS__ && NET_2_0
263                         o = c.UseWaitCursor;
264                         c.UseWaitCursor = true;
265                         Assert.IsFalse (c.IsHandleCreated, "A68");
266 #endif
267                         o = c.Visible;
268                         c.Visible = true;
269                         Assert.IsFalse (c.IsHandleCreated, "A69");
270                         o = c.Width;
271                         c.Width = 190;
272                         Assert.IsFalse (c.IsHandleCreated, "A70");
273                         o = c.WindowTarget;
274                         Assert.IsFalse (c.IsHandleCreated, "A71");
275                         
276                         TestHelper.RemoveWarning (o);
277                 }
278                 
279                 [Test]
280                 public void TestProtectedProperties ()
281                 {
282                         // Not a surprise, but none of these cause handle creation.
283                         // Included just to absolutely certain.
284                         ProtectedPropertyControl c = new ProtectedPropertyControl ();
285
286                         object o;
287 #if !__MonoCS__ && NET_2_0
288                         o = c.PublicCanRaiseEvents;
289                         Assert.IsFalse (c.IsHandleCreated, "A1");
290 #endif
291                         o = c.PublicCreateParams;
292                         Assert.IsFalse (c.IsHandleCreated, "A2");
293 #if NET_2_0
294                         o = c.PublicDefaultCursor;
295                         Assert.IsFalse (c.IsHandleCreated, "A3");
296 #endif
297                         o = c.PublicDefaultImeMode;
298                         Assert.IsFalse (c.IsHandleCreated, "A4");
299 #if NET_2_0
300                         o = c.PublicDefaultMargin;
301                         Assert.IsFalse (c.IsHandleCreated, "A5");
302                         o = c.PublicDefaultMaximumSize;
303                         Assert.IsFalse (c.IsHandleCreated, "A6");
304                         o = c.PublicDefaultMinimumSize;
305                         Assert.IsFalse (c.IsHandleCreated, "A7");
306                         o = c.PublicDefaultPadding;
307                         Assert.IsFalse (c.IsHandleCreated, "A8");
308                         o = c.PublicDefaultSize;
309                         Assert.IsFalse (c.IsHandleCreated, "A9");
310                         o = c.PublicDoubleBuffered;
311                         c.PublicDoubleBuffered = !c.PublicDoubleBuffered;
312                         Assert.IsFalse (c.IsHandleCreated, "A10");
313 #endif
314                         o = c.PublicFontHeight;
315                         c.PublicFontHeight = c.PublicFontHeight + 1;
316                         Assert.IsFalse (c.IsHandleCreated, "A11");
317                         o = c.PublicRenderRightToLeft;
318                         Assert.IsFalse (c.IsHandleCreated, "A12");
319                         o = c.PublicResizeRedraw;
320                         c.PublicResizeRedraw = !c.PublicResizeRedraw;
321                         Assert.IsFalse (c.IsHandleCreated, "A13");
322 #if !__MonoCS__ && NET_2_0
323                         o = c.PublicScaleChildren;
324                         Assert.IsFalse (c.IsHandleCreated, "A14");
325 #endif
326                         o = c.PublicShowFocusCues;
327                         Assert.IsFalse (c.IsHandleCreated, "A15");
328                         o = c.PublicShowKeyboardCues;
329                         Assert.IsFalse (c.IsHandleCreated, "A16");
330                         
331                         TestHelper.RemoveWarning (o);
332                 }
333                  
334                 Control invokecontrol = new Control ();
335                 
336                 [Test]
337                 public void TestPublicMethods ()
338                 {
339                         // Public Methods that force Handle creation:
340                         // - CreateControl ()
341                         // - CreateGraphics ()
342                         // - GetChildAtPoint ()
343                         // - Invoke, BeginInvoke throws InvalidOperationException if Handle has not been created
344                         // - PointToClient ()
345                         // - PointToScreen ()
346                         // - RectangleToClient ()
347                         // - RectangleToScreen ()
348                         Control c = new Control ();
349                         
350                         c.BringToFront ();
351                         Assert.IsFalse (c.IsHandleCreated, "A1");
352                         c.Contains (new Control ());
353                         Assert.IsFalse (c.IsHandleCreated, "A2");
354                         c.CreateControl ();
355                         Assert.IsTrue (c.IsHandleCreated, "A3");
356                         c = new Control ();
357                         Graphics g = c.CreateGraphics ();
358                         g.Dispose ();
359                         Assert.IsTrue (c.IsHandleCreated, "A4");
360                         c = new Control ();
361                         c.Dispose ();
362                         Assert.IsFalse (c.IsHandleCreated, "A5");
363                         c = new Control ();
364                         DragDropEffects d = c.DoDragDrop ("yo", DragDropEffects.None);
365                         Assert.IsFalse (c.IsHandleCreated, "A6");
366                         Assert.AreEqual (DragDropEffects.None, d, "A6b");
367                         //Bitmap b = new Bitmap (100, 100);
368                         //c.DrawToBitmap (b, new Rectangle (0, 0, 100, 100));
369                         //Assert.IsFalse (c.IsHandleCreated, "A7");
370                         //b.Dispose ();
371                         c.FindForm ();
372                         Assert.IsFalse (c.IsHandleCreated, "A8");
373                         c.Focus ();
374                         Assert.IsFalse (c.IsHandleCreated, "A9");
375
376                         c.GetChildAtPoint (new Point (10, 10));
377                         Assert.IsTrue (c.IsHandleCreated, "A10");
378                         c.GetContainerControl ();
379                         c = new Control ();
380                         Assert.IsFalse (c.IsHandleCreated, "A11");
381                         c.GetNextControl (new Control (), true);
382                         Assert.IsFalse (c.IsHandleCreated, "A12");
383 #if NET_2_0
384                         c.GetPreferredSize (Size.Empty);
385                         Assert.IsFalse (c.IsHandleCreated, "A13");
386 #endif
387                         c.Hide ();
388                         Assert.IsFalse (c.IsHandleCreated, "A14");
389                         c.Invalidate ();
390                         Assert.IsFalse (c.IsHandleCreated, "A15");
391                         //c.Invoke (new InvokeDelegate (InvokeMethod));
392                         //Assert.IsFalse (c.IsHandleCreated, "A16");
393                         c.PerformLayout ();
394                         Assert.IsFalse (c.IsHandleCreated, "A17");
395                         c.PointToClient (new Point (100, 100));
396                         Assert.IsTrue (c.IsHandleCreated, "A18");
397                         c = new Control ();
398                         c.PointToScreen (new Point (100, 100));
399                         Assert.IsTrue (c.IsHandleCreated, "A19");
400                         c = new Control ();
401                         //c.PreProcessControlMessage   ???
402                         //c.PreProcessMessage          ???
403                         c.RectangleToClient (new Rectangle (0, 0, 100, 100));
404                         Assert.IsTrue (c.IsHandleCreated, "A20");
405                         c = new Control ();
406                         c.RectangleToScreen (new Rectangle (0, 0, 100, 100));
407                         Assert.IsTrue (c.IsHandleCreated, "A21");
408                         c = new Control ();
409                         c.Refresh ();
410                         Assert.IsFalse (c.IsHandleCreated, "A22");
411                         c.ResetBackColor ();
412                         Assert.IsFalse (c.IsHandleCreated, "A23");
413                         c.ResetBindings ();
414                         Assert.IsFalse (c.IsHandleCreated, "A24");
415                         c.ResetCursor ();
416                         Assert.IsFalse (c.IsHandleCreated, "A25");
417                         c.ResetFont ();
418                         Assert.IsFalse (c.IsHandleCreated, "A26");
419                         c.ResetForeColor ();
420                         Assert.IsFalse (c.IsHandleCreated, "A27");
421                         c.ResetImeMode ();
422                         Assert.IsFalse (c.IsHandleCreated, "A28");
423                         c.ResetRightToLeft ();
424                         Assert.IsFalse (c.IsHandleCreated, "A29");
425                         c.ResetText ();
426                         Assert.IsFalse (c.IsHandleCreated, "A30");
427                         c.SuspendLayout ();
428                         Assert.IsFalse (c.IsHandleCreated, "A31");
429                         c.ResumeLayout ();
430                         Assert.IsFalse (c.IsHandleCreated, "A32");
431 #if NET_2_0
432                         c.Scale (new SizeF (1.5f, 1.5f));
433                         Assert.IsFalse (c.IsHandleCreated, "A33");
434 #endif
435                         c.Select ();
436                         Assert.IsFalse (c.IsHandleCreated, "A34");
437                         c.SelectNextControl (new Control (), true, true, true, true);
438                         Assert.IsFalse (c.IsHandleCreated, "A35");
439                         c.SetBounds (0, 0, 100, 100);
440                         Assert.IsFalse (c.IsHandleCreated, "A36");
441                         c.Update ();
442                         Assert.IsFalse (c.IsHandleCreated, "A37");
443                 }
444
445                 [Test]
446                 public void Show ()
447                 {
448                         Control c = new Control ();
449                         Assert.IsFalse (c.IsHandleCreated, "A1");
450                         c.HandleCreated += new EventHandler (HandleCreated_WriteStackTrace);
451                         c.Show ();
452                         Assert.IsFalse (c.IsHandleCreated, "A2");
453                 }
454
455                 void HandleCreated_WriteStackTrace (object sender, EventArgs e)
456                 {
457                         Console.WriteLine (Environment.StackTrace);
458                 }
459
460                 public delegate void InvokeDelegate ();
461                 public void InvokeMethod () { invokecontrol.Text = "methodinvoked"; }
462                 
463                 [Test]
464                 [ExpectedException (typeof (InvalidOperationException))]
465                 public void InvokeIOE ()
466                 {
467                         Control c = new Control ();
468                         c.Invoke (new InvokeDelegate (InvokeMethod));
469                 }
470                 
471                 private class ProtectedPropertyControl : Control
472                 {
473 #if !__MonoCS__ && NET_2_0
474                         public bool PublicCanRaiseEvents { get { return base.CanRaiseEvents; } }
475 #endif
476                         public CreateParams PublicCreateParams { get { return base.CreateParams; } }
477 #if NET_2_0
478                         public Cursor PublicDefaultCursor { get { return base.DefaultCursor; } }
479 #endif
480                         public ImeMode PublicDefaultImeMode { get { return base.DefaultImeMode; } }
481 #if NET_2_0
482                         public Padding PublicDefaultMargin { get { return base.DefaultMargin; } }
483                         public Size PublicDefaultMaximumSize { get { return base.DefaultMaximumSize; } }
484                         public Size PublicDefaultMinimumSize { get { return base.DefaultMinimumSize; } }
485                         public Padding PublicDefaultPadding { get { return base.DefaultPadding; } }
486                         public Size PublicDefaultSize { get { return base.DefaultSize; } }
487                         public bool PublicDoubleBuffered { get { return base.DoubleBuffered; } set { base.DoubleBuffered = value; } }
488 #endif
489                         public int PublicFontHeight { get { return base.FontHeight; } set { base.FontHeight = value; } }
490                         public bool PublicRenderRightToLeft { get { return base.RenderRightToLeft; } }
491                         public bool PublicResizeRedraw { get { return base.ResizeRedraw; } set { base.ResizeRedraw = value; } }
492 #if !__MonoCS__ && NET_2_0
493                         public bool PublicScaleChildren { get { return base.ScaleChildren; } }
494 #endif
495                         public bool PublicShowFocusCues { get { return base.ShowFocusCues; } }
496                         public bool PublicShowKeyboardCues { get { return base.ShowKeyboardCues; } }
497                 }
498                 
499                 [Test]
500                 public void TestProtectedMethods ()
501                 {
502                         // Protected Methods that force Handle creation:
503                         // - CreateAccessibilityInstance ()
504                         // - CreateHandle ()
505                         // - IsInputChar ()
506                         // - SetTopLevel ()
507                         ProtectedMethodsControl c = new ProtectedMethodsControl ();
508                         
509                         c.PublicAccessibilityNotifyClients (AccessibleEvents.Focus, 0);
510 #if NET_2_0
511                         Assert.IsFalse (c.IsHandleCreated, "A1");
512 #else
513                         Assert.IsTrue (c.IsHandleCreated, "A1");
514 #endif
515                         c.PublicCreateAccessibilityInstance ();
516                         Assert.IsTrue (c.IsHandleCreated, "A2");
517                         c = new ProtectedMethodsControl (); 
518                         c.PublicCreateControlsInstance ();
519                         Assert.IsFalse (c.IsHandleCreated, "A3");
520                         c.PublicCreateHandle ();
521                         Assert.IsTrue (c.IsHandleCreated, "A4");
522                         c = new ProtectedMethodsControl (); 
523                         c.PublicDestroyHandle ();
524                         Assert.IsFalse (c.IsHandleCreated, "A5");
525                         c = new ProtectedMethodsControl ();
526 #if NET_2_0
527                         c.PublicGetAccessibilityObjectById (0);
528                         Assert.IsFalse (c.IsHandleCreated, "A6");
529 #endif
530 #if !__MonoCS__ && NET_2_0
531                         c.PublicGetAutoSizeMode ();
532                         Assert.IsFalse (c.IsHandleCreated, "A7");
533                         c.PublicGetScaledBounds (new Rectangle (0, 0, 100, 100), new SizeF (1.5f, 1.5f), BoundsSpecified.All);
534                         Assert.IsFalse (c.IsHandleCreated, "A8");
535 #endif
536                         c.PublicGetStyle (ControlStyles.FixedHeight);
537                         Assert.IsFalse (c.IsHandleCreated, "A9");
538                         c.PublicGetTopLevel ();
539                         Assert.IsFalse (c.IsHandleCreated, "A10");
540                         c.PublicInitLayout ();
541                         Assert.IsFalse (c.IsHandleCreated, "A11");
542                         c.PublicInvokeGotFocus (c, EventArgs.Empty);
543                         Assert.IsFalse (c.IsHandleCreated, "A12");
544                         c.PublicInvokeLostFocus (c, EventArgs.Empty);
545                         Assert.IsFalse (c.IsHandleCreated, "A13");
546                         c.PublicInvokeOnClick (c, EventArgs.Empty);
547                         Assert.IsFalse (c.IsHandleCreated, "A14");
548                         c.PublicInvokePaint (c, new PaintEventArgs (Graphics.FromImage (new Bitmap (1, 1)), Rectangle.Empty));
549                         Assert.IsFalse (c.IsHandleCreated, "A15");
550                         c.PublicInvokePaintBackground (c, new PaintEventArgs (Graphics.FromImage (new Bitmap (1, 1)), Rectangle.Empty));
551                         Assert.IsFalse (c.IsHandleCreated, "A16");
552                         c.PublicIsInputChar ('c');
553                         Assert.IsTrue (c.IsHandleCreated, "A17");
554                         c = new ProtectedMethodsControl ();
555                         c.PublicIsInputKey (Keys.B);
556                         Assert.IsFalse (c.IsHandleCreated, "A18");
557                         c.PublicNotifyInvalidate (Rectangle.Empty);
558                         Assert.IsFalse (c.IsHandleCreated, "A19");
559                         Form f = new Form ();
560                         f.Controls.Add (c);
561                         c.PublicOnVisibleChanged (EventArgs.Empty);
562                         Assert.IsFalse (c.IsHandleCreated, "A20");
563                         c = new ProtectedMethodsControl ();
564                         c.PublicRaiseDragEvent (null, null);
565                         Assert.IsFalse (c.IsHandleCreated, "A21");
566                         c.PublicRaiseKeyEvent (null, null);
567                         Assert.IsFalse (c.IsHandleCreated, "A22");
568                         c.PublicRaiseMouseEvent (null, null);
569                         Assert.IsFalse (c.IsHandleCreated, "A23");
570                         c.PublicRaisePaintEvent (null, null);
571                         Assert.IsFalse (c.IsHandleCreated, "A24");
572                         c.PublicRecreateHandle ();
573                         Assert.IsFalse (c.IsHandleCreated, "A25");
574                         c.PublicResetMouseEventArgs ();
575                         Assert.IsFalse (c.IsHandleCreated, "A26");
576                         c.PublicRtlTranslateAlignment (ContentAlignment.BottomLeft);
577                         Assert.IsFalse (c.IsHandleCreated, "A27");
578                         c.PublicRtlTranslateContent (ContentAlignment.BottomLeft);
579                         Assert.IsFalse (c.IsHandleCreated, "A28");
580                         c.PublicRtlTranslateHorizontal (HorizontalAlignment.Left);
581                         Assert.IsFalse (c.IsHandleCreated, "A29");
582                         c.PublicRtlTranslateLeftRight (LeftRightAlignment.Left);
583                         Assert.IsFalse (c.IsHandleCreated, "A30");
584 #if !__MonoCS__ && NET_2_0
585                         c.PublicScaleControl (new SizeF (1.5f, 1.5f), BoundsSpecified.All);
586                         Assert.IsFalse (c.IsHandleCreated, "A31");
587 #endif
588                         c.PublicScaleCore (1.5f, 1.5f);
589                         Assert.IsFalse (c.IsHandleCreated, "A32");
590                         c.PublicSelect ();
591                         Assert.IsFalse (c.IsHandleCreated, "A33");
592 #if !__MonoCS__ && NET_2_0
593                         c.PublicSetAutoSizeMode (AutoSizeMode.GrowAndShrink);
594                         Assert.IsFalse (c.IsHandleCreated, "A34");
595 #endif
596                         c.PublicSetBoundsCore (0, 0, 100, 100, BoundsSpecified.All);
597                         Assert.IsFalse (c.IsHandleCreated, "A35");
598                         c.PublicSetClientSizeCore (122, 122);
599                         Assert.IsFalse (c.IsHandleCreated, "A36");
600                         c.PublicSetStyle (ControlStyles.FixedHeight, true);
601                         Assert.IsFalse (c.IsHandleCreated, "A37");
602                         c.PublicSetTopLevel (true);
603                         Assert.IsTrue (c.IsHandleCreated, "A38");
604                         c = new ProtectedMethodsControl ();
605                         c.PublicSetVisibleCore (true);
606                         Assert.IsFalse (c.IsHandleCreated, "A39");
607 #if NET_2_0
608                         c.PublicSizeFromClientSize (new Size (160, 160));
609                         Assert.IsFalse (c.IsHandleCreated, "A40");
610 #endif
611                         c.PublicUpdateBounds ();
612                         Assert.IsFalse (c.IsHandleCreated, "A41");
613                         c.PublicUpdateStyles ();
614                         Assert.IsFalse (c.IsHandleCreated, "A42");
615                         c.PublicUpdateZOrder ();
616                         Assert.IsFalse (c.IsHandleCreated, "A43");
617                 }
618                 
619                 private class ProtectedMethodsControl : Control
620                 {
621                         public void PublicAccessibilityNotifyClients (AccessibleEvents accEvent, int childID) { base.AccessibilityNotifyClients (accEvent, childID); }
622                         public void PublicCreateAccessibilityInstance () { base.CreateAccessibilityInstance (); }
623                         public void PublicCreateControlsInstance () { base.CreateControlsInstance (); }
624                         public void PublicCreateHandle () { base.CreateHandle (); }
625                         public void PublicDestroyHandle () { base.DestroyHandle (); }
626 #if NET_2_0
627                         public AccessibleObject PublicGetAccessibilityObjectById (int objectId) { return base.GetAccessibilityObjectById (objectId); }
628 #endif
629 #if !__MonoCS__ && NET_2_0
630                         public AutoSizeMode PublicGetAutoSizeMode () { return base.GetAutoSizeMode (); }
631                         public Rectangle PublicGetScaledBounds (Rectangle bounds, SizeF factor, BoundsSpecified specified) { return base.GetScaledBounds (bounds, factor, specified); }
632 #endif
633                         public bool PublicGetStyle (ControlStyles flag) { return base.GetStyle (flag); }
634                         public bool PublicGetTopLevel () { return base.GetTopLevel (); }
635                         public void PublicInitLayout () { base.InitLayout (); }
636                         public void PublicInvokeGotFocus (Control toInvoke, EventArgs e) { base.InvokeGotFocus (toInvoke, e); }
637                         public void PublicInvokeLostFocus (Control toInvoke, EventArgs e) { base.InvokeLostFocus (toInvoke, e); }
638                         public void PublicInvokeOnClick (Control toInvoke, EventArgs e) { base.InvokeOnClick (toInvoke, e); }
639                         public void PublicInvokePaint (Control c, PaintEventArgs e) { base.InvokePaint (c, e); }
640                         public void PublicInvokePaintBackground (Control c, PaintEventArgs e) { base.InvokePaintBackground (c, e); }
641                         public bool PublicIsInputChar (char charCode) { return base.IsInputChar (charCode); }
642                         public bool PublicIsInputKey (Keys keyData) { return base.IsInputKey (keyData); }
643                         public void PublicNotifyInvalidate (Rectangle invalidatedArea) { base.NotifyInvalidate (invalidatedArea); }
644                         public void PublicOnVisibleChanged (EventArgs e) { base.OnVisibleChanged (e); }
645                         public void PublicRaiseDragEvent (Object key, DragEventArgs e) { base.RaiseDragEvent (key, e); }
646                         public void PublicRaiseKeyEvent (Object key, KeyEventArgs e) { base.RaiseKeyEvent (key, e); }
647                         public void PublicRaiseMouseEvent (Object key, MouseEventArgs e) { base.RaiseMouseEvent (key, e); }
648                         public void PublicRaisePaintEvent (Object key, PaintEventArgs e) { base.RaisePaintEvent (key, e); }
649                         public void PublicRecreateHandle () { base.RecreateHandle (); }
650                         public void PublicResetMouseEventArgs () { base.ResetMouseEventArgs (); }
651                         public ContentAlignment PublicRtlTranslateAlignment (ContentAlignment align) { return base.RtlTranslateAlignment (align); }
652                         public ContentAlignment PublicRtlTranslateContent (ContentAlignment align) { return base.RtlTranslateContent (align); }
653                         public HorizontalAlignment PublicRtlTranslateHorizontal (HorizontalAlignment align) { return base.RtlTranslateHorizontal (align); }
654                         public LeftRightAlignment PublicRtlTranslateLeftRight (LeftRightAlignment align) { return base.RtlTranslateLeftRight (align); }
655 #if !__MonoCS__ && NET_2_0
656                         public void PublicScaleControl (SizeF factor, BoundsSpecified specified) { base.ScaleControl (factor, specified); }
657 #endif
658                         public void PublicScaleCore (float dx, float dy) { base.ScaleCore (dx, dy); }
659                         public void PublicSelect () { base.Select (); }
660 #if !__MonoCS__ && NET_2_0
661                         public void PublicSetAutoSizeMode (AutoSizeMode mode) { base.SetAutoSizeMode (mode); }
662 #endif
663                         public void PublicSetBoundsCore (int x, int y, int width, int height, BoundsSpecified specified) { base.SetBoundsCore (x, y, width, height, specified); }
664                         public void PublicSetClientSizeCore (int x, int y) { base.SetClientSizeCore (x, y); }
665                         public void PublicSetStyle (ControlStyles flag, bool value) { base.SetStyle (flag, value); }
666                         public void PublicSetTopLevel (bool value) { base.SetTopLevel (value); }
667                         public void PublicSetVisibleCore (bool value) { base.SetVisibleCore (value); }
668 #if NET_2_0
669                         public Size PublicSizeFromClientSize (Size clientSize) { return base.SizeFromClientSize (clientSize); }
670 #endif
671                         public void PublicUpdateBounds () { base.UpdateBounds (); }
672                         public void PublicUpdateStyles () { base.UpdateStyles (); }
673                         public void PublicUpdateZOrder () { base.UpdateZOrder (); }
674                 }
675         }
676 }