* Common.cs : Add common things here.
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / LabelTest.cs
1 //\r
2 // Copyright (c) 2005 Novell, Inc.\r
3 //\r
4 // Authors:\r
5 //      Hisham Mardam Bey (hisham.mardambey@gmail.com)\r
6 //\r
7 //\r
8 \r
9 using System;\r
10 using NUnit.Framework;\r
11 using System.Windows.Forms;\r
12 using System.Drawing;\r
13 using System.Collections;\r
14 \r
15 namespace MonoTests.System.Windows.Forms\r
16 {\r
17    [TestFixture]\r
18 \r
19    public class LabelTest2\r
20    {\r
21 \r
22            [Test]\r
23            public void PubPropTest ()\r
24              {\r
25                      Label l = new Label ();\r
26 \r
27                      // A\r
28                      Assert.AreEqual (false, l.AutoSize, "A1");\r
29                      l.AutoSize = true;\r
30                      Assert.AreEqual (true, l.AutoSize, "A2");\r
31                      l.AutoSize = false;\r
32                      Assert.AreEqual (false, l.AutoSize, "A3");\r
33 \r
34                      // B\r
35                      Assert.AreEqual (null, l.BackgroundImage, "B1");\r
36                      l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");\r
37                      Assert.IsNotNull (l.BackgroundImage, "B2");\r
38                      Bitmap bmp = (Bitmap)l.BackgroundImage;\r
39                      Assert.IsNotNull (bmp.GetPixel (0, 0), "B3");\r
40 \r
41                      Assert.AreEqual (BorderStyle.None, l.BorderStyle, "B4");\r
42                      l.BorderStyle = BorderStyle.FixedSingle;\r
43                      Assert.AreEqual (BorderStyle.FixedSingle, l.BorderStyle, "B5");\r
44                      l.BorderStyle = BorderStyle.Fixed3D;\r
45                      Assert.AreEqual (BorderStyle.Fixed3D, l.BorderStyle, "B6");\r
46                      l.BorderStyle = BorderStyle.None;\r
47                      Assert.AreEqual (BorderStyle.None, l.BorderStyle, "B7");\r
48 \r
49                      // C\r
50                      string name = l.CompanyName;\r
51                      if (!name.Equals("Mono Project, Novell, Inc.") && !name.Equals("Microsoft Corporation")) {\r
52                              Assert.Fail("CompanyName property does not match any accepted value - C1");\r
53                      }\r
54 \r
55                      // F\r
56                      Assert.AreEqual (FlatStyle.Standard, l.FlatStyle, "F1");\r
57                      l.FlatStyle = FlatStyle.Flat;\r
58                      Assert.AreEqual (FlatStyle.Flat, l.FlatStyle, "F1");\r
59                      l.FlatStyle = FlatStyle.Popup;\r
60                      Assert.AreEqual (FlatStyle.Popup, l.FlatStyle, "F2");\r
61                      l.FlatStyle = FlatStyle.Standard;\r
62                      Assert.AreEqual (FlatStyle.Standard, l.FlatStyle, "F3");\r
63                      l.FlatStyle = FlatStyle.System;\r
64                      Assert.AreEqual (FlatStyle.System, l.FlatStyle, "F4");\r
65 \r
66                      // I\r
67                      Assert.AreEqual (ContentAlignment.MiddleCenter, l.ImageAlign, "I1");\r
68                      l.ImageAlign = ContentAlignment.TopLeft;\r
69                      Assert.AreEqual (ContentAlignment.TopLeft, l.ImageAlign, "I2");\r
70                      l.ImageAlign = ContentAlignment.TopCenter;\r
71                      Assert.AreEqual (ContentAlignment.TopCenter, l.ImageAlign, "I3");\r
72                      l.ImageAlign = ContentAlignment.TopRight;\r
73                      Assert.AreEqual (ContentAlignment.TopRight, l.ImageAlign, "I4");\r
74                      l.ImageAlign = ContentAlignment.MiddleLeft;\r
75                      Assert.AreEqual (ContentAlignment.MiddleLeft, l.ImageAlign, "I5");\r
76                      l.ImageAlign = ContentAlignment.MiddleCenter;\r
77                      Assert.AreEqual (ContentAlignment.MiddleCenter, l.ImageAlign, "I6");\r
78                      l.ImageAlign = ContentAlignment.MiddleRight;\r
79                      Assert.AreEqual (ContentAlignment.MiddleRight, l.ImageAlign, "I7");\r
80                      l.ImageAlign = ContentAlignment.BottomLeft;\r
81                      Assert.AreEqual (ContentAlignment.BottomLeft, l.ImageAlign, "I8");\r
82                      l.ImageAlign = ContentAlignment.BottomCenter;\r
83                      Assert.AreEqual (ContentAlignment.BottomCenter, l.ImageAlign, "I9");\r
84                      l.ImageAlign = ContentAlignment.BottomRight;\r
85                      Assert.AreEqual (ContentAlignment.BottomRight, l.ImageAlign, "I10");\r
86                      Assert.AreEqual (-1, l.ImageIndex, "I11");\r
87                      Assert.AreEqual (null, l.ImageList, "I12");\r
88                      Assert.AreEqual (null, l.Image, "I13");\r
89                      l.Image = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");\r
90                      Assert.IsNotNull (l.Image, "I14");\r
91                      bmp = (Bitmap)l.Image;\r
92                      Assert.IsNotNull (bmp.GetPixel (0, 0), "I15");\r
93 \r
94                      ImageList il = new ImageList ();\r
95                      il.ColorDepth = ColorDepth.Depth32Bit;\r
96                      il.ImageSize = new Size (15, 15);\r
97                      il.Images.Add (Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png"));\r
98                      l.ImageList = il;\r
99                      l.ImageIndex = 0;\r
100 \r
101                      Assert.AreEqual (0, l.ImageIndex, "I16");\r
102                      Assert.IsNotNull (l.ImageList, "I17");\r
103 \r
104                      // PreferredHeight\r
105                      // PregerredWidth\r
106                      // RenderTransparent\r
107                      //\r
108                      // T\r
109                      // Assert.AreEqual (false, l.TabStop, "T1");\r
110                      Assert.AreEqual (ContentAlignment.TopLeft, l.TextAlign, "T2");\r
111 \r
112                      // U\r
113                      Assert.AreEqual (true, l.UseMnemonic, "U1");\r
114                      l.UseMnemonic = false;\r
115                      Assert.AreEqual (false, l.UseMnemonic, "U2");\r
116              }\r
117 \r
118            [Test]\r
119            public void LabelEqualsTest ()\r
120              {\r
121                      Label s1 = new Label ();\r
122                      Label s2 = new Label ();\r
123                      s1.Text = "abc";\r
124                      s2.Text = "abc";\r
125                      Assert.AreEqual (false, s1.Equals (s2), "E1");\r
126                      Assert.AreEqual (true, s1.Equals (s1), "E2");\r
127              }\r
128 \r
129            [Test]\r
130            public void LabelScaleTest ()\r
131              {\r
132                      Label r1 = new Label ();\r
133                      r1.Width = 40;\r
134                      r1.Height = 20 ;\r
135                      r1.Scale (2);\r
136                      Assert.AreEqual (80, r1.Width, "W1");\r
137                      Assert.AreEqual (40, r1.Height, "H1");\r
138              }\r
139 \r
140            [Test]\r
141            public void PubMethodTest ()\r
142              {\r
143                      Label l = new Label ();\r
144 \r
145                      l.Text = "My Label";\r
146 \r
147                      Assert.AreEqual ("System.Windows.Forms.Label, Text: My Label", l.ToString (), "T1");\r
148 \r
149              }\r
150    }\r
151 \r
152    [TestFixture]\r
153    public class LabelEventTest\r
154    {\r
155            static bool eventhandled = false;\r
156            public void Label_EventHandler (object sender,EventArgs e)\r
157            {\r
158                    eventhandled = true;\r
159            }\r
160 \r
161            public void Label_KeyDownEventHandler (object sender, KeyEventArgs e)\r
162            {\r
163                    eventhandled = true;\r
164            }\r
165 \r
166            [Test]\r
167            public void AutoSizeChangedChangedTest ()\r
168              {\r
169                      Form myform = new Form ();\r
170                      myform.Visible = true;\r
171                      Label l = new Label ();\r
172                      l.Visible = true;\r
173                      myform.Controls.Add (l);\r
174                      l.AutoSizeChanged += new EventHandler (Label_EventHandler);\r
175                      l.AutoSize = true;\r
176                      Assert.AreEqual (true, eventhandled, "B4");\r
177                      eventhandled = false;\r
178              }\r
179 \r
180            [Test]\r
181            public void BackgroundImageChangedTest ()\r
182              {\r
183                      Form myform = new Form ();\r
184                      myform.Visible = true;\r
185                      Label l = new Label ();\r
186                      l.Visible = true;\r
187                      myform.Controls.Add (l);\r
188                      l.BackgroundImageChanged += new EventHandler (Label_EventHandler);\r
189                      l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");\r
190                      Assert.AreEqual (true, eventhandled, "B4");\r
191                      eventhandled = false;\r
192              }\r
193 \r
194            [Test]\r
195            public void ImeModeChangedTest ()\r
196              {\r
197                      Form myform = new Form ();\r
198                      myform.Visible = true;\r
199                      Label l = new Label ();\r
200                      l.Visible = true;\r
201                      myform.Controls.Add (l);\r
202                      l.ImeModeChanged += new EventHandler (Label_EventHandler);\r
203                      l.ImeMode = ImeMode.Katakana;\r
204                      Assert.AreEqual (true, eventhandled, "I16");\r
205                      eventhandled = false;\r
206              }\r
207 \r
208            [Test]\r
209            public void KeyDownTest ()\r
210              {\r
211                      Form myform = new Form ();\r
212                      myform.Visible = true;\r
213                      MyLabel l = new MyLabel ();\r
214                      l.Visible = true;\r
215                      myform.Controls.Add (l);\r
216                      l.KeyDown += new KeyEventHandler (Label_KeyDownEventHandler);\r
217                      l.KeyPressA ();\r
218 \r
219                      Assert.AreEqual (true, eventhandled, "K1");\r
220                      eventhandled = false;\r
221              }\r
222 \r
223            [Test]\r
224            public void TabStopChangedTest ()\r
225              {\r
226                      Form myform = new Form ();\r
227                      myform.Visible = true;\r
228                      Label l = new Label ();\r
229                      l.Visible = true;\r
230                      myform.Controls.Add (l);\r
231                      l.TabStopChanged += new EventHandler (Label_EventHandler);\r
232                      l.TabStop = true;\r
233                      Assert.AreEqual (true, eventhandled, "T3");\r
234                      eventhandled = false;\r
235              }\r
236 \r
237            [Test]\r
238            public void TextAlignChangedTest ()\r
239              {\r
240                      Form myform = new Form ();\r
241                      myform.Visible = true;\r
242                      Label l = new Label ();\r
243                      l.Visible = true;\r
244                      myform.Controls.Add (l);\r
245                      l.TextAlignChanged += new EventHandler (Label_EventHandler);\r
246                      l.TextAlign = ContentAlignment.TopRight;\r
247                      Assert.AreEqual (true, eventhandled, "T4");\r
248                      eventhandled = false;\r
249              }\r
250    }\r
251 \r
252 public class MyLabelInvalidate : MyLabel\r
253    {\r
254            //protected ArrayList results = new ArrayList ();\r
255     public MyLabelInvalidate () : base ()\r
256            {}\r
257 \r
258            protected override void OnInvalidated (InvalidateEventArgs e)\r
259            {\r
260                    base.OnInvalidated (e);\r
261                    string res = (string)results [results.Count - 1];\r
262                    results [results.Count - 1 ] = string.Concat (res, "," + e.InvalidRect.ToString ());\r
263                    //results.Add ("OnInvalidate," + e.InvalidRect.ToString ());\r
264            }\r
265 \r
266            //public ArrayList Results {\r
267            //   get {   return results; }\r
268            //}\r
269 \r
270    }\r
271 \r
272 public class MyLabel : Label\r
273    {\r
274            protected ArrayList results = new ArrayList ();\r
275     public MyLabel () : base ()\r
276            {    }\r
277 \r
278            protected override void OnAutoSizeChanged (EventArgs e)\r
279            {\r
280                    results.Add ("OnAutoSizeChanged");\r
281                    base.OnAutoSizeChanged (e);\r
282            }\r
283 \r
284            protected override void OnBackgroundImageChanged (EventArgs e)\r
285            {\r
286                    results.Add ("OnBackgroundImageChanged");\r
287                    base.OnBackgroundImageChanged (e);\r
288            }\r
289 \r
290            protected override void OnImeModeChanged (EventArgs e)\r
291            {\r
292                    results.Add ("OnImeModeChanged");\r
293                    base.OnImeModeChanged (e);\r
294            }\r
295 \r
296            protected override void OnKeyDown (KeyEventArgs e)\r
297            {\r
298                    results.Add ("OnKeyDown,"+(char)e.KeyValue);\r
299                    base.OnKeyDown (e);\r
300            }\r
301 \r
302            protected override void OnKeyPress (KeyPressEventArgs e)\r
303            {\r
304                    results.Add ("OnKeyPress,"+e.KeyChar.ToString ());\r
305                    base.OnKeyPress (e);\r
306            }\r
307 \r
308            protected override void OnKeyUp (KeyEventArgs e)\r
309            {\r
310                    results.Add ("OnKeyUp,"+(char)e.KeyValue);\r
311                    base.OnKeyUp (e);\r
312            }\r
313 \r
314            protected override void OnHandleCreated (EventArgs e)\r
315            {\r
316                    results.Add ("OnHandleCreated");\r
317                    base.OnHandleCreated (e);\r
318            }\r
319 \r
320            protected override void OnBindingContextChanged (EventArgs e)\r
321            {\r
322                    results.Add ("OnBindingContextChanged");\r
323                    base.OnBindingContextChanged (e);\r
324            }\r
325 \r
326            protected override void OnInvalidated (InvalidateEventArgs e)\r
327            {\r
328                    results.Add("OnInvalidated");\r
329                    base.OnInvalidated (e);\r
330            }\r
331 \r
332            protected override void OnResize (EventArgs e)\r
333            {\r
334                    results.Add("OnResize");\r
335                    base.OnResize (e);\r
336            }\r
337 \r
338            protected override void OnSizeChanged (EventArgs e)\r
339            {\r
340                    results.Add("OnSizeChanged");\r
341                    base.OnSizeChanged (e);\r
342            }\r
343 \r
344            protected override void OnLayout (LayoutEventArgs e)\r
345            {\r
346                    results.Add("OnLayout");\r
347                    base.OnLayout (e);\r
348            }\r
349 \r
350            protected override void OnVisibleChanged (EventArgs e)\r
351            {\r
352                    results.Add("OnVisibleChanged");\r
353                    base.OnVisibleChanged (e);\r
354            }\r
355 \r
356            protected override void OnPaint (PaintEventArgs e)\r
357            {\r
358                    results.Add("OnPaint");\r
359                    base.OnPaint (e);\r
360            }\r
361 \r
362            public void KeyPressA()\r
363            {\r
364                    Message m;\r
365 \r
366                    m = new Message();\r
367 \r
368                    m.Msg = (int)WndMsg.WM_KEYDOWN;\r
369                    m.HWnd = this.Handle;\r
370                    m.WParam = (IntPtr)0x41;\r
371                    m.LParam = (IntPtr)0x1e0001;\r
372                    this.WndProc(ref m);\r
373 \r
374                    m.Msg = (int)WndMsg.WM_CHAR;\r
375                    m.HWnd = this.Handle;\r
376                    m.WParam = (IntPtr)0x61;\r
377                    m.LParam = (IntPtr)0x1e0001;\r
378                    this.WndProc(ref m);\r
379 \r
380                    m.Msg = (int)WndMsg.WM_KEYUP;\r
381                    m.HWnd = this.Handle;\r
382                    m.WParam = (IntPtr)0x41;\r
383                    m.LParam = (IntPtr)unchecked((int)0xC01e0001);\r
384                    this.WndProc(ref m);\r
385            }\r
386 \r
387            public void KeyDownA()\r
388            {\r
389                    Message m;\r
390 \r
391                    m = new Message();\r
392 \r
393                    m.Msg = (int)WndMsg.WM_KEYDOWN;\r
394                    m.HWnd = this.Handle;\r
395                    m.WParam = (IntPtr)0x41;\r
396                    m.LParam = (IntPtr)0x1e0001;\r
397                    this.WndProc(ref m);\r
398 \r
399                    m.Msg = (int)WndMsg.WM_CHAR;\r
400                    m.HWnd = this.Handle;\r
401                    m.WParam = (IntPtr)0x61;\r
402                    m.LParam = (IntPtr)0x1e0001;\r
403                    this.WndProc(ref m);\r
404            }\r
405 \r
406            public void KeyUpA()\r
407            {\r
408                    Message m;\r
409 \r
410                    m = new Message();\r
411 \r
412                    m.Msg = (int)WndMsg.WM_KEYUP;\r
413                    m.HWnd = this.Handle;\r
414                    m.WParam = (IntPtr)0x41;\r
415                    m.LParam = (IntPtr)unchecked((int)0xC01e0001);\r
416                    this.WndProc(ref m);\r
417            }\r
418 \r
419            public ArrayList Results {\r
420                    get {        return results; }\r
421            }\r
422    }\r
423 \r
424    [TestFixture]\r
425    public class LabelTestEventsOrder\r
426    {\r
427            public string [] ArrayListToString (ArrayList arrlist)\r
428            {\r
429                    string [] retval = new string [arrlist.Count];\r
430                    for (int i = 0; i < arrlist.Count; i++)\r
431                      retval[i] = (string)arrlist[i];\r
432                    return retval;\r
433            }\r
434 \r
435            [Test]\r
436            public void CreateEventsOrder ()\r
437              {\r
438                      string[] EventsWanted = {\r
439                              "OnHandleCreated",\r
440                                "OnBindingContextChanged",\r
441                                "OnBindingContextChanged"\r
442                      };\r
443                      Form myform = new Form ();\r
444                      myform.Visible = true;\r
445                      MyLabel l = new MyLabel ();\r
446                      myform.Controls.Add (l);\r
447 \r
448                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
449              }\r
450 \r
451            [Test]\r
452            public void SizeChangedEventsOrder ()\r
453              {\r
454                      string[] EventsWanted = {\r
455                              "OnHandleCreated",\r
456                                "OnBindingContextChanged",\r
457                                "OnBindingContextChanged",\r
458                                "OnSizeChanged",\r
459                                "OnResize",\r
460                                "OnInvalidated",\r
461                                "OnLayout"\r
462                      };\r
463                      Form myform = new Form ();\r
464                      myform.Visible = true;\r
465                      MyLabel l = new MyLabel ();\r
466                      myform.Controls.Add (l);\r
467                      l.Size = new Size (150, 20);\r
468 \r
469                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
470              }\r
471 \r
472            [Test]\r
473            public void AutoSizeChangedEventsOrder ()\r
474              {\r
475                      string[] EventsWanted = {\r
476                              "OnHandleCreated",\r
477                                "OnBindingContextChanged",\r
478                                "OnBindingContextChanged",\r
479                                "OnSizeChanged",\r
480                                "OnResize",\r
481                                "OnInvalidated",\r
482                                "OnLayout",\r
483                                "OnAutoSizeChanged"\r
484                      };\r
485                      Form myform = new Form ();\r
486                      myform.Visible = true;\r
487                      MyLabel l = new MyLabel ();\r
488                      myform.Controls.Add (l);\r
489                      l.AutoSize = true;\r
490 \r
491                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
492              }\r
493 \r
494            [Test]\r
495            public void BackgroundImageChangedEventsOrder ()\r
496              {\r
497                      string[] EventsWanted = {\r
498                              "OnHandleCreated",\r
499                                "OnBindingContextChanged",\r
500                                "OnBindingContextChanged",\r
501                                "OnBackgroundImageChanged",\r
502                                "OnInvalidated"\r
503                      };\r
504                      Form myform = new Form ();\r
505                      myform.Visible = true;\r
506                      MyLabel l = new MyLabel ();\r
507                      myform.Controls.Add (l);\r
508                      l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");\r
509 \r
510                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
511              }\r
512 \r
513            [Test]\r
514            public void ImeModeChangedChangedEventsOrder ()\r
515              {\r
516                      string[] EventsWanted = {\r
517                              "OnHandleCreated",\r
518                                "OnBindingContextChanged",\r
519                                "OnBindingContextChanged",\r
520                                "OnImeModeChanged"\r
521                      };\r
522                      Form myform = new Form ();\r
523                      myform.Visible = true;\r
524                      MyLabel l = new MyLabel ();\r
525                      myform.Controls.Add (l);\r
526                      l.ImeMode = ImeMode.Katakana;\r
527 \r
528                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
529              }\r
530 \r
531            [Test]\r
532            public void KeyPressEventsOrder ()\r
533              {\r
534                      string[] EventsWanted = {\r
535                              "OnHandleCreated",\r
536                                "OnBindingContextChanged",\r
537                                "OnBindingContextChanged",\r
538                                "OnKeyDown,A",\r
539                                "OnKeyPress,a",\r
540                                "OnKeyUp,A"\r
541                      };\r
542                      Form myform = new Form ();\r
543                      myform.Visible = true;\r
544                      MyLabel l = new MyLabel ();\r
545                      myform.Controls.Add (l);\r
546                      l.KeyPressA ();\r
547 \r
548                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
549              }\r
550 \r
551            [Test]\r
552            public void TabStopChangedEventsOrder ()\r
553              {\r
554                      string[] EventsWanted = {\r
555                              "OnHandleCreated",\r
556                                "OnBindingContextChanged",\r
557                                "OnBindingContextChanged"\r
558                      };\r
559                      Form myform = new Form ();\r
560                      myform.Visible = true;\r
561                      MyLabel l = new MyLabel ();\r
562                      myform.Controls.Add (l);\r
563                      l.TabStop = true;\r
564 \r
565                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
566              }\r
567 \r
568            [Test]\r
569            public void TextAlignChangedEventsOrder ()\r
570              {\r
571                      string[] EventsWanted = {\r
572                              "OnHandleCreated",\r
573                                "OnBindingContextChanged",\r
574                                "OnBindingContextChanged",\r
575                                "OnInvalidated"\r
576                      };\r
577                      Form myform = new Form ();\r
578                      myform.Visible = true;\r
579                      MyLabel l = new MyLabel ();\r
580                      myform.Controls.Add (l);\r
581                      l.TextAlign = ContentAlignment.TopRight;\r
582 \r
583                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
584              }\r
585 \r
586            [Test]\r
587            public void InvalidateEventsOrder ()\r
588              {\r
589                      Rectangle rect = new Rectangle (new Point (0,0), new Size (2, 2));\r
590 \r
591                      Form myform = new Form ();\r
592                      myform.Visible = true;\r
593                      MyLabelInvalidate l = new MyLabelInvalidate ();\r
594                      myform.Controls.Add (l);\r
595                      l.TextAlign = ContentAlignment.TopRight;\r
596 \r
597                      string [] EventsWanted = {\r
598                              "OnHandleCreated",\r
599                                "OnBindingContextChanged",\r
600                                "OnBindingContextChanged",\r
601                                "OnInvalidated,{X=0,Y=0,Width="+l.Size.Width+",Height="+l.Size.Height+"}",\r
602                                "OnInvalidated," + rect.ToString ()\r
603                      };\r
604 \r
605                      l.Invalidate (rect);\r
606 \r
607                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
608 \r
609              }\r
610 \r
611            [Test]\r
612            public void PaintEventsOrder ()\r
613              {\r
614                      string[] EventsWanted = {\r
615                              "OnHandleCreated",\r
616                                "OnBindingContextChanged",\r
617                                "OnBindingContextChanged",\r
618                                "OnInvalidated",\r
619                                "OnInvalidated",\r
620                                "OnPaint"\r
621                      };\r
622                      Form myform = new Form ();\r
623                      myform.Visible = true;\r
624                      MyLabel l = new MyLabel ();\r
625                      myform.Controls.Add (l);\r
626                      l.TextAlign = ContentAlignment.TopRight;\r
627                      l.Refresh ();\r
628                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
629              }\r
630 \r
631    }\r
632 \r
633 public class MyLabel2 : Label\r
634    {\r
635            protected ArrayList results = new ArrayList ();\r
636     public MyLabel2 () : base ()\r
637            {\r
638                    this.AutoSizeChanged += new EventHandler (AutoSizeChanged_Handler);\r
639                    this.HandleCreated += new EventHandler (HandleCreated_Handler);\r
640                    this.BindingContextChanged += new EventHandler (BindingContextChanged_Handler);\r
641                    this.BackgroundImageChanged += new EventHandler (BackgroundImageChanged_Handler);\r
642                    this.ImeModeChanged += new EventHandler (ImeModeChanged_Handler);\r
643                    this.KeyDown += new KeyEventHandler (KeyDown_Handler);\r
644                    this.KeyPress += new KeyPressEventHandler (KeyPress_Handler);\r
645                    this.KeyUp += new KeyEventHandler (KeyUp_Handler);\r
646                    this.Invalidated += new InvalidateEventHandler (Invalidated_Handler);\r
647                    this.Resize += new EventHandler (Resize_Handler);\r
648                    this.SizeChanged += new EventHandler (SizeChanged_Handler);\r
649                    this.Layout += new LayoutEventHandler (Layout_Handler);\r
650                    this.VisibleChanged += new EventHandler (VisibleChanged_Handler);\r
651                    this.Paint += new PaintEventHandler (Paint_Handler);\r
652            }\r
653 \r
654            protected void AutoSizeChanged_Handler (object sender, EventArgs e)\r
655            {\r
656                    results.Add ("AutoSizeChanged");\r
657            }\r
658 \r
659            protected void BackgroundImageChanged_Handler (object sender, EventArgs e)\r
660            {\r
661                    results.Add ("BackgroundImageChanged");\r
662            }\r
663 \r
664            protected void ImeModeChanged_Handler (object sender, EventArgs e)\r
665            {\r
666                    results.Add ("ImeModeChanged");\r
667            }\r
668 \r
669            protected void KeyDown_Handler (object sender, KeyEventArgs e)\r
670            {\r
671                    results.Add ("KeyDown,"+(char)e.KeyValue);\r
672            }\r
673 \r
674            protected void KeyPress_Handler (object sender, KeyPressEventArgs e)\r
675            {\r
676                    results.Add ("KeyPress,"+e.KeyChar.ToString ());\r
677            }\r
678 \r
679            protected void KeyUp_Handler (object sender, KeyEventArgs e)\r
680            {\r
681                    results.Add ("KeyUp,"+(char)e.KeyValue);\r
682            }\r
683 \r
684            protected void HandleCreated_Handler (object sender, EventArgs e)\r
685            {\r
686                    results.Add ("HandleCreated");\r
687            }\r
688 \r
689            protected void BindingContextChanged_Handler (object sender, EventArgs e)\r
690            {\r
691                    results.Add ("BindingContextChanged");\r
692            }\r
693 \r
694            protected void Invalidated_Handler (object sender, InvalidateEventArgs e)\r
695            {\r
696                    results.Add("Invalidated");\r
697            }\r
698 \r
699            protected void Resize_Handler (object sender, EventArgs e)\r
700            {\r
701                    results.Add("Resize");\r
702            }\r
703 \r
704            protected void SizeChanged_Handler (object sender, EventArgs e)\r
705            {\r
706                    results.Add("SizeChanged");\r
707            }\r
708 \r
709            protected void Layout_Handler (object sender, LayoutEventArgs e)\r
710            {\r
711                    results.Add("Layout");\r
712            }\r
713 \r
714            protected void VisibleChanged_Handler (object sender, EventArgs e)\r
715            {\r
716                    results.Add("VisibleChanged");\r
717            }\r
718 \r
719            protected void Paint_Handler (object sender, PaintEventArgs e)\r
720            {\r
721                    results.Add("Paint");\r
722            }\r
723 \r
724            public void KeyPressA()\r
725            {\r
726                    Message m;\r
727 \r
728                    m = new Message();\r
729 \r
730                    m.Msg = (int)WndMsg.WM_KEYDOWN;\r
731                    m.HWnd = this.Handle;\r
732                    m.WParam = (IntPtr)0x41;\r
733                    m.LParam = (IntPtr)0x1e0001;\r
734                    this.WndProc(ref m);\r
735 \r
736                    m.Msg = (int)WndMsg.WM_CHAR;\r
737                    m.HWnd = this.Handle;\r
738                    m.WParam = (IntPtr)0x61;\r
739                    m.LParam = (IntPtr)0x1e0001;\r
740                    this.WndProc(ref m);\r
741 \r
742                    m.Msg = (int)WndMsg.WM_KEYUP;\r
743                    m.HWnd = this.Handle;\r
744                    m.WParam = (IntPtr)0x41;\r
745                    m.LParam = (IntPtr)unchecked((int)0xC01e0001);\r
746                    this.WndProc(ref m);\r
747            }\r
748 \r
749            public void KeyDownA()\r
750            {\r
751                    Message m;\r
752 \r
753                    m = new Message();\r
754 \r
755                    m.Msg = (int)WndMsg.WM_KEYDOWN;\r
756                    m.HWnd = this.Handle;\r
757                    m.WParam = (IntPtr)0x41;\r
758                    m.LParam = (IntPtr)0x1e0001;\r
759                    this.WndProc(ref m);\r
760 \r
761                    m.Msg = (int)WndMsg.WM_CHAR;\r
762                    m.HWnd = this.Handle;\r
763                    m.WParam = (IntPtr)0x61;\r
764                    m.LParam = (IntPtr)0x1e0001;\r
765                    this.WndProc(ref m);\r
766            }\r
767 \r
768            public void KeyUpA()\r
769            {\r
770                    Message m;\r
771 \r
772                    m = new Message();\r
773 \r
774                    m.Msg = (int)WndMsg.WM_KEYUP;\r
775                    m.HWnd = this.Handle;\r
776                    m.WParam = (IntPtr)0x41;\r
777                    m.LParam = (IntPtr)unchecked((int)0xC01e0001);\r
778                    this.WndProc(ref m);\r
779            }\r
780 \r
781            public ArrayList Results {\r
782                    get {        return results; }\r
783            }\r
784    }\r
785 \r
786    [TestFixture]\r
787    public class LabelTestEventsOrder2\r
788    {\r
789            public string [] ArrayListToString (ArrayList arrlist)\r
790            {\r
791                    string [] retval = new string [arrlist.Count];\r
792                    for (int i = 0; i < arrlist.Count; i++)\r
793                      retval[i] = (string)arrlist[i];\r
794                    return retval;\r
795            }\r
796 \r
797            [Test]\r
798            public void CreateEventsOrder ()\r
799              {\r
800                      string[] EventsWanted = {\r
801                              "HandleCreated",\r
802                                "BindingContextChanged",\r
803                                "BindingContextChanged"\r
804                      };\r
805                      Form myform = new Form ();\r
806                      myform.Visible = true;\r
807                      MyLabel2 l = new MyLabel2 ();\r
808                      myform.Controls.Add (l);\r
809 \r
810                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
811              }\r
812 \r
813            [Test]\r
814            public void SizeChangedEventsOrder ()\r
815              {\r
816                      string[] EventsWanted = {\r
817                              "HandleCreated",\r
818                                "BindingContextChanged",\r
819                                "BindingContextChanged",\r
820                                "Invalidated",\r
821                                "Layout",\r
822                                "Resize",\r
823                                "SizeChanged"\r
824                      };\r
825                      Form myform = new Form ();\r
826                      myform.Visible = true;\r
827                      MyLabel2 l = new MyLabel2 ();\r
828                      myform.Controls.Add (l);\r
829                      l.Size = new Size (150, 20);\r
830 \r
831                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
832              }\r
833 \r
834            [Test]\r
835            public void AutoSizeChangedEventsOrder ()\r
836              {\r
837                      string[] EventsWanted = {\r
838                              "HandleCreated",\r
839                                "BindingContextChanged",\r
840                                "BindingContextChanged",\r
841                                "Invalidated",\r
842                                "Layout",\r
843                                "Resize",\r
844                                "SizeChanged",\r
845                                "AutoSizeChanged"\r
846                      };\r
847                      Form myform = new Form ();\r
848                      myform.Visible = true;\r
849                      MyLabel2 l = new MyLabel2 ();\r
850                      myform.Controls.Add (l);\r
851                      l.AutoSize = true;\r
852 \r
853                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
854              }\r
855 \r
856            [Test]\r
857            public void BackgroundImageChangedEventsOrder ()\r
858              {\r
859                      string[] EventsWanted = {\r
860                              "HandleCreated",\r
861                                "BindingContextChanged",\r
862                                "BindingContextChanged",\r
863                                "Invalidated",\r
864                                "BackgroundImageChanged"\r
865                      };\r
866                      Form myform = new Form ();\r
867                      myform.Visible = true;\r
868                      MyLabel2 l = new MyLabel2 ();\r
869                      myform.Controls.Add (l);\r
870                      l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");\r
871 \r
872                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
873              }\r
874 \r
875            [Test]\r
876            public void ImeModeChangedChangedEventsOrder ()\r
877              {\r
878                      string[] EventsWanted = {\r
879                              "HandleCreated",\r
880                                "BindingContextChanged",\r
881                                "BindingContextChanged",\r
882                                "ImeModeChanged"\r
883                      };\r
884                      Form myform = new Form ();\r
885                      myform.Visible = true;\r
886                      MyLabel2 l = new MyLabel2 ();\r
887                      myform.Controls.Add (l);\r
888                      l.ImeMode = ImeMode.Katakana;\r
889 \r
890                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
891              }\r
892 \r
893            [Test]\r
894            public void KeyPressEventsOrder ()\r
895              {\r
896                      string[] EventsWanted = {\r
897                              "HandleCreated",\r
898                                "BindingContextChanged",\r
899                                "BindingContextChanged",\r
900                                "KeyDown,A",\r
901                                "KeyPress,a",\r
902                                "KeyUp,A"\r
903                      };\r
904                      Form myform = new Form ();\r
905                      myform.Visible = true;\r
906                      MyLabel2 l = new MyLabel2 ();\r
907                      myform.Controls.Add (l);\r
908                      l.KeyPressA ();\r
909 \r
910                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
911              }\r
912 \r
913            [Test]\r
914            public void TabStopChangedEventsOrder ()\r
915              {\r
916                      string[] EventsWanted = {\r
917                              "HandleCreated",\r
918                                "BindingContextChanged",\r
919                                "BindingContextChanged"\r
920                      };\r
921                      Form myform = new Form ();\r
922                      myform.Visible = true;\r
923                      MyLabel2 l = new MyLabel2 ();\r
924                      myform.Controls.Add (l);\r
925                      l.TabStop = true;\r
926 \r
927                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
928              }\r
929 \r
930            [Test]\r
931            public void TextAlignChangedEventsOrder ()\r
932              {\r
933                      string[] EventsWanted = {\r
934                              "HandleCreated",\r
935                                "BindingContextChanged",\r
936                                "BindingContextChanged",\r
937                                "Invalidated"\r
938                      };\r
939                      Form myform = new Form ();\r
940                      myform.Visible = true;\r
941                      MyLabel2 l = new MyLabel2 ();\r
942                      myform.Controls.Add (l);\r
943                      l.TextAlign = ContentAlignment.TopRight;\r
944 \r
945                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
946              }\r
947 \r
948            [Test]\r
949            public void PaintEventsOrder ()\r
950              {\r
951                      string[] EventsWanted = {\r
952                              "HandleCreated",\r
953                                "BindingContextChanged",\r
954                                "BindingContextChanged",\r
955                                "Invalidated",\r
956                                "Invalidated",\r
957                                "Paint"\r
958                      };\r
959                      Form myform = new Form ();\r
960                      myform.Visible = true;\r
961                      MyLabel2 l = new MyLabel2 ();\r
962                      myform.Controls.Add (l);\r
963                      l.TextAlign = ContentAlignment.TopRight;\r
964                      l.Refresh ();\r
965                      Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));\r
966              }\r
967 \r
968    }\r
969 \r
970 }\r