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