2006-05-18 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mcs / class / Managed.Windows.Forms / Test / System.Windows.Forms / ScrollBarTest.cs
1 //
2 // Copyright (c) 2005 Novell, Inc.
3 //
4 // Authors:
5 //      Hisham Mardam Bey (hisham.mardambey@gmail.com)
6 //      Ritvik Mayank (mritvik@novell.com)
7 //
8 //
9
10 using System;
11 using NUnit.Framework;
12 using System.Windows.Forms;
13 using System.Drawing;
14 using System.Collections;
15
16 namespace MonoTests.System.Windows.Forms
17 {
18
19 public class MyScrollBar : HScrollBar
20     {
21             private ArrayList results = new ArrayList ();
22      public MyScrollBar () : base ()
23              {}
24
25             protected override void OnBackColorChanged (EventArgs e)
26              {
27                      results.Add ("OnBackColorChanged");
28                      base.OnBackColorChanged (e);
29              }
30
31             protected override void OnBackgroundImageChanged (EventArgs e)
32              {
33                      results.Add ("OnBackgroundImageChanged");
34                      base.OnBackgroundImageChanged (e);
35              }
36
37             protected override void OnClick (EventArgs e)
38              {
39                      results.Add ("OnClick");
40                      base.OnClick (e);
41              }
42
43             protected override void OnDoubleClick (EventArgs e)
44              {
45                      results.Add ("OnDoubleClick");
46                      base.OnDoubleClick (e);
47              }
48
49             protected override void OnFontChanged (EventArgs e)
50              {
51                      results.Add ("OnFontChanged");
52                      base.OnFontChanged (e);
53              }
54
55             protected override void OnForeColorChanged (EventArgs e)
56              {
57                      results.Add ("OnForeColorChanged");
58                      base.OnForeColorChanged (e);
59              }
60
61             protected override void OnImeModeChanged (EventArgs e)
62              {
63                      results.Add ("OnImeModeChanged");
64                      base.OnImeModeChanged (e);
65              }
66
67             protected override void OnMouseDown (MouseEventArgs e)
68              {
69                      results.Add ("OnMouseDown");
70                      base.OnMouseDown (e);
71              }
72
73             protected override void OnMouseMove (MouseEventArgs e)
74              {
75                      results.Add ("OnMouseMove");
76                      base.OnMouseMove (e);
77              }
78
79             protected override void OnMouseEnter (EventArgs e)
80              {
81                      results.Add ("OnMouseEnter");
82                      base.OnMouseEnter (e);
83              }
84
85             protected override void OnMouseLeave (EventArgs e)
86              {
87                      results.Add ("OnMouseLeave");
88                      base.OnMouseLeave (e);
89              }
90
91             protected override void OnMouseHover (EventArgs e)
92              {
93                      results.Add ("OnMouseHover");
94                      base.OnMouseHover (e);
95              }
96
97             protected override void OnMouseUp (MouseEventArgs e)
98              {
99                      results.Add ("OnMouseUp");
100                      base.OnMouseUp (e);
101              }
102
103             protected override void OnHandleCreated (EventArgs e)
104              {
105                      results.Add ("OnHandleCreated");
106                      base.OnHandleCreated (e);
107              }
108
109             protected override void OnBindingContextChanged (EventArgs e)
110              {
111                      results.Add ("OnBindingContextChanged");
112                      base.OnBindingContextChanged (e);
113              }
114
115             protected override void OnInvalidated (InvalidateEventArgs e)
116              {
117                      results.Add("OnInvalidated");
118                      base.OnInvalidated (e);
119              }
120
121             protected override void OnResize (EventArgs e)
122              {
123                      results.Add("OnResize");
124                      base.OnResize (e);
125              }
126
127             protected override void OnSizeChanged (EventArgs e)
128              {
129                      results.Add("OnSizeChanged");
130                      base.OnSizeChanged (e);
131              }
132
133             protected override void OnLayout (LayoutEventArgs e)
134              {
135                      results.Add("OnLayout");
136                      base.OnLayout (e);
137              }
138
139             protected override void OnVisibleChanged (EventArgs e)
140              {
141                      results.Add("OnVisibleChanged");
142                      base.OnVisibleChanged (e);
143              }
144
145             protected override void OnScroll (ScrollEventArgs e)
146              {
147                      results.Add("OnScroll");
148                      base.OnScroll (e);
149              }
150
151             protected override void OnTextChanged (EventArgs e)
152              {
153                      results.Add("OnTextChanged");
154                      base.OnTextChanged (e);
155              }
156
157             protected override void OnValueChanged (EventArgs e)
158              {
159                      results.Add("OnValueChanged");
160                      base.OnValueChanged (e);
161              }
162
163             protected override void OnPaint (PaintEventArgs e)
164              {
165                      results.Add("OnPaint");
166                      base.OnPaint (e);
167              }
168
169             public ArrayList Results {
170                     get {       return results; }
171             }
172
173             public void MoveMouse ()
174              {
175                      Message m;
176
177                      m = new Message ();
178
179                      m.Msg = (int)WndMsg.WM_NCHITTEST;
180                      m.HWnd = this.Handle;
181                      m.WParam = (IntPtr)0x0;
182                      m.LParam = (IntPtr)0x1c604ea;
183                      this.WndProc(ref m);
184
185                      m.Msg = (int)WndMsg.WM_SETCURSOR;
186                      m.HWnd = this.Handle;
187                      m.WParam = (IntPtr)0x100448;
188                      m.LParam = (IntPtr)0x2000001;
189                      this.WndProc(ref m);
190
191                      m.Msg = (int)WndMsg.WM_MOUSEFIRST;
192                      m.HWnd = this.Handle;
193                      m.WParam = (IntPtr)0x0;
194                      m.LParam = (IntPtr)0x14000b;
195                      this.WndProc(ref m);
196
197                      m.Msg = (int)WndMsg.WM_MOUSEHOVER;
198                      m.HWnd = this.Handle;
199                      m.WParam = (IntPtr)0x0;
200                      m.LParam = (IntPtr)0x14000b;
201                      this.WndProc(ref m);
202              }
203
204             public void MouseClick()
205              {
206
207                      Message m;
208
209                      m = new Message();
210
211                      m.Msg = (int)WndMsg.WM_LBUTTONDOWN;
212                      m.HWnd = this.Handle;
213                      m.WParam = (IntPtr)0x01;
214                      m.LParam = (IntPtr)0x9004f;
215                      this.WndProc(ref m);
216
217                      m = new Message();
218
219                      m.Msg = (int)WndMsg.WM_LBUTTONUP;
220                      m.HWnd = this.Handle;
221                      m.WParam = (IntPtr)0x01;
222                      m.LParam = (IntPtr)0x9004f;
223                      this.WndProc(ref m);
224              }
225
226             public void MouseDoubleClick ()
227              {
228                      MouseClick ();
229                      MouseClick ();
230              }
231             public void MouseRightDown()
232              {
233                      Message m;
234
235                      m = new Message();
236
237                      m.Msg = (int)WndMsg.WM_RBUTTONDOWN;
238                      m.HWnd = this.Handle;
239                      m.WParam = (IntPtr)0x01;
240                      m.LParam = (IntPtr)0x9004f;
241                      this.WndProc(ref m);
242              }
243
244             public void MouseRightUp()
245              {
246                      Message m;
247
248                      m = new Message();
249
250                      m.Msg = (int)WndMsg.WM_RBUTTONUP;
251                      m.HWnd = this.Handle;
252                      m.WParam = (IntPtr)0x01;
253                      m.LParam = (IntPtr)0x9004f;
254                      this.WndProc(ref m);
255              }
256
257             public void ScrollNow ()
258              {
259                      Message m;
260
261                      m = new Message ();
262
263                      m.Msg = 8468;
264                      m.HWnd = this.Handle;
265                      m.WParam = (IntPtr)0x1;
266                      m.LParam = (IntPtr)0x1a051a;
267                      this.WndProc(ref m);
268
269                      m.Msg = 233;
270                      m.HWnd = this.Handle;
271                      m.WParam = (IntPtr)0x1;
272                      m.LParam = (IntPtr)0x12eb34;
273                      this.WndProc(ref m);
274              }
275     }
276    [TestFixture]
277    public class ScrollbarTest
278     {
279             [Test]
280             public void PubPropTest ()
281                {
282                        MyScrollBar myscrlbar = new MyScrollBar ();
283
284                        // B
285                        myscrlbar.BackColor = Color.Red;
286                        Assert.AreEqual (255, myscrlbar.BackColor.R, "B2");
287                        myscrlbar.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");
288                        Assert.AreEqual (16, myscrlbar.BackgroundImage.Height, "B3");
289
290                        // F
291                        Assert.AreEqual ("ControlText", myscrlbar.ForeColor.Name, "F1");
292
293                        // I
294                        //Assert.AreEqual (ImeMode.Disable, myscrlbar.ImeMode, "I1");
295
296                        // L
297                        Assert.AreEqual (10, myscrlbar.LargeChange, "L1");
298
299                        // M
300                        Assert.AreEqual (100, myscrlbar.Maximum, "M1");
301                        Assert.AreEqual (0, myscrlbar.Minimum, "M2");
302                        myscrlbar.Maximum = 300;
303                        myscrlbar.Minimum = 100;
304                        Assert.AreEqual (300, myscrlbar.Maximum, "M3");
305                        Assert.AreEqual (100, myscrlbar.Minimum, "M4");
306
307                        // S
308                        Assert.AreEqual (null, myscrlbar.Site, "S1");
309                        Assert.AreEqual (1, myscrlbar.SmallChange, "S2");
310                        myscrlbar.SmallChange = 10;
311                        Assert.AreEqual (10, myscrlbar.SmallChange, "S3");
312
313                        // T
314                        Assert.AreEqual (false, myscrlbar.TabStop, "T1");
315                        myscrlbar.TabStop = true;
316                        Assert.AreEqual (true, myscrlbar.TabStop, "T2");
317                        Assert.AreEqual ("", myscrlbar.Text, "T3");
318                        myscrlbar.Text = "MONO SCROLLBAR";
319                        Assert.AreEqual ("MONO SCROLLBAR", myscrlbar.Text, "T4");
320
321                        // V
322                        Assert.AreEqual (100, myscrlbar.Value, "V1");
323                        myscrlbar.Value = 150;
324                        Assert.AreEqual (150, myscrlbar.Value, "V2");
325                }
326
327             [Test]
328               [ExpectedException (typeof (ArgumentException))]
329             public void ExceptionValueTest ()
330                {
331                        MyScrollBar myscrlbar = new MyScrollBar ();
332                        myscrlbar.Minimum = 10;
333                        myscrlbar.Maximum = 20;
334                        myscrlbar.Value = 9;
335                        myscrlbar.Value = 21;
336                }
337
338             [Test]
339               [ExpectedException (typeof (ArgumentException))]
340             public void ExceptionSmallChangeTest ()
341                {
342                        MyScrollBar myscrlbar = new MyScrollBar ();
343                        myscrlbar.SmallChange = -1;
344                }
345
346             [Test]
347               [ExpectedException (typeof (ArgumentException))]
348             public void ExceptionLargeChangeTest ()
349                {
350                        MyScrollBar myscrlbar = new MyScrollBar ();
351                        myscrlbar.LargeChange = -1;
352                }
353
354             [Test, Ignore ("Look into this")]
355             public void PubMethodTest ()
356                {
357                        MyScrollBar myscrlbar = new MyScrollBar ();
358                        myscrlbar.Text = "New HScrollBar";
359                        Assert.AreEqual ("System.Windows.Forms.HScrollBar, Minimum: 0, Maximum: 100, Value: 0",
360                                         myscrlbar.ToString (), "T5");
361                }
362     }
363
364    [TestFixture]
365    public class ScrollBarEventTest
366     {
367             static bool eventhandled = false;
368             public void ScrollBar_EventHandler (object sender,EventArgs e)
369              {
370                      eventhandled = true;
371              }
372
373             public void ScrollBarMouse_EventHandler (object sender,MouseEventArgs e)
374              {
375                      eventhandled = true;
376              }
377
378             public void ScrollBarScroll_EventHandler (object sender,ScrollEventArgs e)
379              {
380                      eventhandled = true;
381              }
382
383             public void ScrollBarPaint_EventHandler (object sender,PaintEventArgs e)
384              {
385                      eventhandled = true;
386              }
387
388             [Test]
389             public void BackColorChangedTest ()
390                {
391                        Form myform = new Form ();
392                        myform.Visible = true;
393                        ScrollBar myHscrlbar = new HScrollBar ();
394                        myform.Controls.Add (myHscrlbar);
395                        myHscrlbar.BackColorChanged += new EventHandler (ScrollBar_EventHandler);
396                        myHscrlbar.BackColor = Color.Red;
397                        Assert.AreEqual (true, eventhandled, "B4");
398                        eventhandled = false;
399                }
400
401             [Test]
402             public void BackgroundImageChangedTest ()
403                {
404                        Form myform = new Form ();
405                        myform.Visible = true;
406                        ScrollBar myHscrlbar = new HScrollBar ();
407                        myform.Controls.Add (myHscrlbar);
408                        myHscrlbar.BackgroundImageChanged += new EventHandler (ScrollBar_EventHandler);
409                        myHscrlbar.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");
410                        Assert.AreEqual (true, eventhandled, "B5");
411                        eventhandled = false;
412                }
413
414             [Test, Ignore ("Need to send proper Click / DoubleClick")]
415             public void ClickTest ()
416                {
417                        Form myform = new Form ();
418                        myform.Visible = true;
419                        MyScrollBar myHscrlbar = new MyScrollBar ();
420                        myform.Controls.Add (myHscrlbar);
421                        myHscrlbar.Click += new EventHandler (ScrollBar_EventHandler);
422                        myHscrlbar.MouseClick ();
423
424                        Assert.AreEqual (false, eventhandled, "C1");
425                }
426
427             [Test, Ignore ("Need to send proper Click / DoubleClick")]
428             public void DoubleClickTest ()
429                {
430                        Form myform = new Form ();
431                        myform.Visible = true;
432                        MyScrollBar myHscrlbar = new MyScrollBar ();
433                        myform.Controls.Add (myHscrlbar);
434                        myHscrlbar.DoubleClick += new EventHandler (ScrollBar_EventHandler);
435                        myHscrlbar.MouseDoubleClick ();
436
437                        Assert.AreEqual (false, eventhandled, "D1");
438                }
439
440             [Test]
441             public void FontChangedTest ()
442                {
443                        Form myform = new Form ();
444                        myform.Visible = true;
445                        ScrollBar myHscrlbar = new HScrollBar ();
446                        myform.Controls.Add (myHscrlbar);
447                        myHscrlbar.Font = new Font (FontFamily.GenericMonospace, 10);
448                        myHscrlbar.FontChanged += new EventHandler (ScrollBar_EventHandler);
449                        FontDialog myFontDialog = new FontDialog();
450                        myHscrlbar.Font = myFontDialog.Font;
451                        Assert.AreEqual (true, eventhandled, "F2");
452                        eventhandled = false;
453                }
454
455             [Test]
456             public void ForeColorChangedTest ()
457                {
458                        Form myform = new Form ();
459                        myform.Visible = true;
460                        ScrollBar myHscrlbar = new HScrollBar ();
461                        myform.Controls.Add (myHscrlbar);
462                        myHscrlbar.ForeColorChanged += new EventHandler (ScrollBar_EventHandler);
463                        myHscrlbar.ForeColor = Color.Azure;
464                        Assert.AreEqual (true, eventhandled, "F3");
465                        eventhandled = false;
466                }
467
468             [Test]
469             public void ImeModehangedTest ()
470                {
471                        Form myform = new Form ();
472                        myform.Visible = true;
473                        ScrollBar myHscrlbar = new HScrollBar ();
474                        myform.Controls.Add (myHscrlbar);
475                        myHscrlbar.ImeModeChanged += new EventHandler (ScrollBar_EventHandler);
476                        myHscrlbar.ImeMode = ImeMode.Katakana;
477                        Assert.AreEqual (true, eventhandled, "I2");
478                        eventhandled = false;
479                }
480
481             [Test]
482             public void MouseDownTest ()
483                {
484                        Form myform = new Form ();
485                        myform.Visible = true;
486                        MyScrollBar myHscrlbar = new MyScrollBar ();
487                        myform.Controls.Add (myHscrlbar);
488                        myHscrlbar.MouseDown += new MouseEventHandler (ScrollBarMouse_EventHandler);
489                        myHscrlbar.MouseRightDown ();
490
491                        Assert.AreEqual (true, eventhandled, "M5");
492                        eventhandled = false;
493                }
494
495             [Test]
496             public void MouseMoveTest ()
497                {
498                        Form myform = new Form ();
499                        myform.Visible = true;
500                        MyScrollBar myHscrlbar = new MyScrollBar ();
501                        myform.Controls.Add (myHscrlbar);
502                        myHscrlbar.MouseMove += new MouseEventHandler (ScrollBarMouse_EventHandler);
503                        myHscrlbar.MoveMouse ();
504
505                        Assert.AreEqual (true, eventhandled, "M6");
506                        eventhandled = false;
507                }
508
509             [Test]
510             public void MouseUpTest ()
511                {
512                        Form myform = new Form ();
513                        myform.Visible = true;
514                        MyScrollBar myHscrlbar = new MyScrollBar ();
515                        myform.Controls.Add (myHscrlbar);
516                        myHscrlbar.MouseUp += new MouseEventHandler (ScrollBarMouse_EventHandler);
517                        myHscrlbar.MouseRightUp ();
518
519                        Assert.AreEqual (true, eventhandled, "M7");
520                        eventhandled = false;
521                }
522
523             [Test, Ignore ("How can we force it to pain?")]
524             public void PaintTest ()
525                {
526                        Form myform = new Form ();
527                        myform.Visible = true;
528                        MyScrollBar myHscrlbar = new MyScrollBar ();
529                        myform.Controls.Add (myHscrlbar);
530                        myHscrlbar.Paint += new PaintEventHandler (ScrollBarPaint_EventHandler);
531
532                        myHscrlbar.Refresh ();
533
534                        Assert.AreEqual (true, eventhandled, "P1");
535                        eventhandled = false;
536                }
537
538             [Test]
539             public void ScrollTest ()
540                {
541                        Form myform = new Form ();
542                        myform.Visible = true;
543                        MyScrollBar myHscrlbar = new MyScrollBar ();
544                        myform.Controls.Add (myHscrlbar);
545                        myHscrlbar.Scroll += new ScrollEventHandler (ScrollBarScroll_EventHandler);
546                        myHscrlbar.ScrollNow ();
547
548                        Assert.AreEqual (true, eventhandled, "S4");
549                        eventhandled = false;
550                }
551
552             [Test]
553             public void TextChangedTest ()
554                {
555                        Form myform = new Form ();
556                        myform.Visible = true;
557                        MyScrollBar myHscrlbar = new MyScrollBar ();
558                        myform.Controls.Add (myHscrlbar);
559                        myHscrlbar.TextChanged += new EventHandler (ScrollBar_EventHandler);
560                        myHscrlbar.Text = "foo";
561
562                        Assert.AreEqual (true, eventhandled, "T6");
563                        eventhandled = false;
564                }
565
566             [Test]
567             public void ValueChangeTest ()
568                {
569                        Form myform = new Form ();
570                        myform.Visible = true;
571                        MyScrollBar myHscrlbar = new MyScrollBar ();
572                        myform.Controls.Add (myHscrlbar);
573                        myHscrlbar.Value = 40 ;
574                        myHscrlbar.ValueChanged += new EventHandler (ScrollBar_EventHandler);
575                        myHscrlbar.Value = 50 ;
576                        Assert.AreEqual (true, eventhandled, "V3");
577                        eventhandled = false;
578                }
579     }
580
581 public class MyHScrollBar : HScrollBar
582     {
583      public MyHScrollBar () : base ()
584              {
585              }
586
587             public Size MyDefaultSize {
588                     get { return DefaultSize; }
589             }
590
591             public CreateParams MyCreateParams {
592                     get { return CreateParams; }
593             }
594     }
595
596    [TestFixture]
597    public class MyHScrollBarTest
598     {
599             [Test]
600             public void ProtectedTest ()
601                {
602                        MyHScrollBar msbar = new MyHScrollBar ();
603
604                        Assert.AreEqual (80, msbar.MyDefaultSize.Width, "D1");
605                         // this is environment dependent.
606                        //Assert.AreEqual (21, msbar.MyDefaultSize.Height, "D2");
607                }
608     }
609
610 public class MyVScrollBar : VScrollBar
611     {
612      public MyVScrollBar () : base ()
613              {
614              }
615
616             public Size MyDefaultSize {
617                     get { return DefaultSize; }
618             }
619
620             public CreateParams MyCreateParams {
621                     get { return CreateParams; }
622             }
623     }
624
625    [TestFixture]
626    public class MyVScrollBarTest
627     {
628             [Test]
629             public void PubMethodTest ()
630                {
631                        MyVScrollBar msbar = new MyVScrollBar ();
632
633                        Assert.AreEqual (RightToLeft.No, msbar.RightToLeft, "R1");
634
635                }
636
637             [Test]
638             public void ProtMethodTest ()
639                {
640                        MyVScrollBar msbar = new MyVScrollBar ();
641
642                         // This is environment dependent.
643                        //Assert.AreEqual (21, msbar.MyDefaultSize.Width, "D3");
644                        Assert.AreEqual (80, msbar.MyDefaultSize.Height, "D4");
645                }
646     }
647
648    [TestFixture]
649    public class HScrollBarTestEventsOrder
650     {
651             public string [] ArrayListToString (ArrayList arrlist)
652              {
653                      string [] retval = new string [arrlist.Count];
654                      for (int i = 0; i < arrlist.Count; i++)
655                        retval[i] = (string)arrlist[i];
656                      return retval;
657              }
658
659             [Test]
660             public void CreateEventsOrder ()
661                {
662                        string[] EventsWanted = {
663                                "OnHandleCreated",
664                                  "OnBindingContextChanged",
665                                  "OnBindingContextChanged"
666                        };
667                        Form myform = new Form ();
668                        myform.Visible = true;
669                        MyScrollBar s = new MyScrollBar ();
670                        myform.Controls.Add (s);
671
672                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
673                }
674
675             [Test]
676             public void BackColorChangedEventsOrder ()
677                {
678                        string[] EventsWanted = {
679                                "OnHandleCreated",
680                                  "OnBindingContextChanged",
681                                  "OnBindingContextChanged",
682                                  "OnBackColorChanged",
683                                  "OnInvalidated"
684                        };
685                        Form myform = new Form ();
686                        myform.Visible = true;
687                        MyScrollBar s = new MyScrollBar ();
688                        myform.Controls.Add (s);
689                        s.BackColor = Color.Aqua;
690
691                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
692                }
693
694             [Test]
695             public void BackgroundImageChangedEventsOrder ()
696                {
697                        string[] EventsWanted = {
698                                "OnHandleCreated",
699                                  "OnBindingContextChanged",
700                                  "OnBindingContextChanged",
701                                  "OnBackgroundImageChanged",
702                                  "OnInvalidated"
703                        };
704                        Form myform = new Form ();
705                        myform.Visible = true;
706                        MyScrollBar s = new MyScrollBar ();
707                        myform.Controls.Add (s);
708                        s.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");
709
710                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
711                }
712
713             [Test, Ignore ("Need to send proper Click / DoubleClick")]
714             public void ClickEventsOrder ()
715                {
716                        string[] EventsWanted = {
717                                "OnHandleCreated",
718                                  "OnBindingContextChanged",
719                                  "OnBindingContextChanged"
720                        };
721                        Form myform = new Form ();
722                        myform.Visible = true;
723                        MyScrollBar s = new MyScrollBar ();
724                        myform.Controls.Add (s);
725                        s.MouseClick ();
726
727                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
728                }
729
730             [Test, Ignore ("Need to send proper Click / DoubleClick")]
731             public void DoubleClickEventsOrder ()
732                {
733                        string[] EventsWanted = {
734                                "OnHandleCreated",
735                                  "OnBindingContextChanged",
736                                  "OnBindingContextChanged"
737                        };
738                        Form myform = new Form ();
739                        myform.Visible = true;
740                        MyScrollBar s = new MyScrollBar ();
741                        myform.Controls.Add (s);
742                        s.MouseDoubleClick ();
743
744                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
745                }
746
747             [Test]
748             public void FontChangedEventsOrder ()
749                {
750                        string[] EventsWanted = {
751                                "OnHandleCreated",
752                                  "OnBindingContextChanged",
753                                  "OnBindingContextChanged"
754                        };
755                        Form myform = new Form ();
756                        myform.Visible = true;
757                        MyScrollBar s = new MyScrollBar ();
758                        myform.Controls.Add (s);
759                        FontDialog myFontDialog = new FontDialog();
760                        s.Font = myFontDialog.Font;
761
762                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
763                }
764
765             [Test]
766             public void ForeColorChangedEventsOrder ()
767                {
768                        string[] EventsWanted = {
769                                "OnHandleCreated",
770                                  "OnBindingContextChanged",
771                                  "OnBindingContextChanged",
772                                  "OnForeColorChanged",
773                                  "OnInvalidated"
774                        };
775                        Form myform = new Form ();
776                        myform.Visible = true;
777                        MyScrollBar s = new MyScrollBar ();
778                        myform.Controls.Add (s);
779                        s.ForeColor = Color.Aqua;
780
781                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
782                }
783
784             [Test]
785             public void ImeModeChangedChangedEventsOrder ()
786                {
787                        string[] EventsWanted = {
788                                "OnHandleCreated",
789                                  "OnBindingContextChanged",
790                                  "OnBindingContextChanged",
791                                  "OnImeModeChanged"
792                        };
793                        Form myform = new Form ();
794                        myform.Visible = true;
795                        MyScrollBar s = new MyScrollBar ();
796                        myform.Controls.Add (s);
797                        s.ImeMode = ImeMode.Katakana;
798
799                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
800                }
801
802             [Test]
803             public void MouseDownEventsOrder ()
804                {
805                        string[] EventsWanted = {
806                                "OnHandleCreated",
807                                  "OnBindingContextChanged",
808                                  "OnBindingContextChanged",
809                                  "OnMouseDown"
810                        };
811                        Form myform = new Form ();
812                        myform.Visible = true;
813                        MyScrollBar s = new MyScrollBar ();
814                        myform.Controls.Add (s);
815                        s.MouseRightDown ();
816
817                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
818                }
819
820             [Test]
821             public void MouseMoveEventsOrder ()
822                {
823                        string[] EventsWanted = {
824                                "OnHandleCreated",
825                                  "OnBindingContextChanged",
826                                  "OnBindingContextChanged",
827                                  "OnMouseMove",
828                                  "OnMouseHover"
829                        };
830                        Form myform = new Form ();
831                        myform.Visible = true;
832                        MyScrollBar s = new MyScrollBar ();
833                        myform.Controls.Add (s);
834                        s.MoveMouse ();
835
836                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
837                }
838
839             [Test]
840             public void MouseUpEventsOrder ()
841                {
842                        string[] EventsWanted = {
843                                "OnHandleCreated",
844                                  "OnBindingContextChanged",
845                                  "OnBindingContextChanged",
846                                  "OnMouseUp"
847                        };
848                        Form myform = new Form ();
849                        myform.Visible = true;
850                        MyScrollBar s = new MyScrollBar ();
851                        myform.Controls.Add (s);
852                        s.MouseRightUp ();
853
854                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
855                }
856
857             [Test]
858             public void PaintEventsOrder ()
859                {
860                        string[] EventsWanted = {
861                                "OnHandleCreated",
862                                  "OnBindingContextChanged",
863                                  "OnBindingContextChanged",
864                                  "OnInvalidated"
865                        };
866                        Form myform = new Form ();
867                        myform.Visible = true;
868                        MyScrollBar s = new MyScrollBar ();
869                        myform.Controls.Add (s);
870                        s.Visible = true;
871                        s.Refresh ();
872                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
873                }
874
875             [Test]
876             public void ScrollEventsOrder ()
877                {
878                        string[] EventsWanted = {
879                                "OnHandleCreated",
880                                  "OnBindingContextChanged",
881                                  "OnBindingContextChanged",
882                                  "OnScroll",
883                                  "OnValueChanged"
884                        };
885                        Form myform = new Form ();
886                        myform.Visible = true;
887                        MyScrollBar s = new MyScrollBar ();
888                        myform.Controls.Add (s);
889                        s.ScrollNow ();
890
891                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
892                }
893
894             [Test]
895             public void TextChangedEventsOrder ()
896                {
897                        string[] EventsWanted = {
898                                "OnHandleCreated",
899                                  "OnBindingContextChanged",
900                                  "OnBindingContextChanged",
901                                  "OnTextChanged"
902                        };
903                        Form myform = new Form ();
904                        myform.Visible = true;
905                        MyScrollBar s = new MyScrollBar ();
906                        myform.Controls.Add (s);
907                        s.Text = "foobar";
908
909                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
910                }
911
912             [Test]
913             public void ValueChangedEventsOrder ()
914                {
915                        string[] EventsWanted = {
916                                "OnHandleCreated",
917                                  "OnBindingContextChanged",
918                                  "OnBindingContextChanged",
919                                  "OnValueChanged"
920                        };
921                        Form myform = new Form ();
922                        myform.Visible = true;
923                        MyScrollBar s = new MyScrollBar ();
924                        myform.Controls.Add (s);
925                        s.Value = 10;
926
927                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
928                }
929     }
930
931 public class MyScrollBar2 : HScrollBar
932     {
933             protected ArrayList results = new ArrayList ();
934      public MyScrollBar2 () : base ()
935              {
936                      this.HandleCreated += new EventHandler (HandleCreated_Handler);
937                      this.BackColorChanged += new EventHandler (BackColorChanged_Handler);
938                      this.BackgroundImageChanged += new EventHandler (BackgroundImageChanged_Handler);
939                      this.BindingContextChanged += new EventHandler (BindingContextChanged_Handler);
940                      this.Click += new EventHandler (Click_Handler);
941                      this.DoubleClick += new EventHandler (DoubleClick_Handler);
942                      this.FontChanged += new EventHandler (FontChanged_Handler);
943                      this.ForeColorChanged += new EventHandler (ForeColorChanged_Handler);
944                      this.ImeModeChanged += new EventHandler (ImeModeChanged_Handler);
945                      this.MouseDown += new MouseEventHandler (MouseDown_Handler);
946                      this.MouseMove += new MouseEventHandler (MouseMove_Handler);
947                      this.MouseUp += new MouseEventHandler (MouseUp_Handler);
948                      this.Invalidated += new InvalidateEventHandler (Invalidated_Handler);
949                      this.Resize += new EventHandler (Resize_Handler);
950                      this.SizeChanged += new EventHandler (SizeChanged_Handler);
951                      this.Layout += new LayoutEventHandler (Layout_Handler);
952                      this.VisibleChanged += new EventHandler (VisibleChanged_Handler);
953                      this.Paint += new PaintEventHandler (Paint_Handler);
954                      this.Scroll += new ScrollEventHandler (Scroll_Handler);
955                      this.TextChanged += new EventHandler (TextChanged_Handler);
956                      this.ValueChanged += new EventHandler (ValueChanged_Handler);
957              }
958
959             protected void HandleCreated_Handler (object sender, EventArgs e)
960              {
961                      results.Add ("HandleCreated");
962              }
963
964             protected void BackColorChanged_Handler (object sender, EventArgs e)
965              {
966                      results.Add ("BackColorChanged");
967              }
968
969             protected void BackgroundImageChanged_Handler (object sender, EventArgs e)
970              {
971                      results.Add ("BackgroundImageChanged");
972              }
973
974             protected void Click_Handler (object sender, EventArgs e)
975              {
976                      results.Add ("Click");
977              }
978
979             protected void DoubleClick_Handler (object sender, EventArgs e)
980              {
981                      results.Add ("DoubleClick");
982              }
983
984             protected void FontChanged_Handler (object sender, EventArgs e)
985              {
986                      results.Add ("FontChanged");
987              }
988
989             protected void ForeColorChanged_Handler (object sender, EventArgs e)
990              {
991                      results.Add ("ForeColorChanged");
992              }
993
994             protected void ImeModeChanged_Handler (object sender, EventArgs e)
995              {
996                      results.Add ("ImeModeChanged");
997              }
998
999             protected void MouseDown_Handler (object sender, MouseEventArgs e)
1000              {
1001                      results.Add ("MouseDown");
1002              }
1003
1004             protected void MouseMove_Handler (object sender, MouseEventArgs e)
1005              {
1006                      results.Add ("MouseMove");
1007              }
1008
1009             protected void MouseUp_Handler (object sender, MouseEventArgs e)
1010              {
1011                      results.Add ("MouseUp");
1012              }
1013
1014             protected void BindingContextChanged_Handler (object sender, EventArgs e)
1015              {
1016                      results.Add ("BindingContextChanged");
1017              }
1018
1019             protected void Invalidated_Handler (object sender, InvalidateEventArgs e)
1020              {
1021                      results.Add("Invalidated");
1022              }
1023
1024             protected void Resize_Handler (object sender, EventArgs e)
1025              {
1026                      results.Add("Resize");
1027              }
1028
1029             protected void SizeChanged_Handler (object sender, EventArgs e)
1030              {
1031                      results.Add("SizeChanged");
1032              }
1033
1034             protected void Layout_Handler (object sender, LayoutEventArgs e)
1035              {
1036                      results.Add("Layout");
1037              }
1038
1039             protected void VisibleChanged_Handler (object sender, EventArgs e)
1040              {
1041                      results.Add("VisibleChanged");
1042              }
1043
1044             protected void Paint_Handler (object sender, PaintEventArgs e)
1045              {
1046                      results.Add("Paint");
1047              }
1048
1049             protected void Scroll_Handler (object sender, ScrollEventArgs e)
1050              {
1051                      results.Add ("Scroll");
1052              }
1053
1054             protected void TextChanged_Handler (object sender, EventArgs e)
1055              {
1056                      results.Add ("TextChanged");
1057              }
1058
1059             protected void ValueChanged_Handler (object sender, EventArgs e)
1060              {
1061                      results.Add ("ValueChanged");
1062              }
1063
1064             public ArrayList Results {
1065                     get {       return results; }
1066             }
1067
1068             public void MoveMouse ()
1069              {
1070                      Message m;
1071
1072                      m = new Message ();
1073
1074                      m.Msg = (int)WndMsg.WM_NCHITTEST;
1075                      m.HWnd = this.Handle;
1076                      m.WParam = (IntPtr)0x0;
1077                      m.LParam = (IntPtr)0x1c604ea;
1078                      this.WndProc(ref m);
1079
1080                      m.Msg = (int)WndMsg.WM_SETCURSOR;
1081                      m.HWnd = this.Handle;
1082                      m.WParam = (IntPtr)0x100448;
1083                      m.LParam = (IntPtr)0x2000001;
1084                      this.WndProc(ref m);
1085
1086                      m.Msg = (int)WndMsg.WM_MOUSEFIRST;
1087                      m.HWnd = this.Handle;
1088                      m.WParam = (IntPtr)0x0;
1089                      m.LParam = (IntPtr)0x14000b;
1090                      this.WndProc(ref m);
1091
1092                      m.Msg = (int)WndMsg.WM_MOUSEHOVER;
1093                      m.HWnd = this.Handle;
1094                      m.WParam = (IntPtr)0x0;
1095                      m.LParam = (IntPtr)0x14000b;
1096                      this.WndProc(ref m);
1097              }
1098
1099             public void MouseRightDown()
1100              {
1101                      Message m;
1102
1103                      m = new Message();
1104
1105                      m.Msg = (int)WndMsg.WM_RBUTTONDOWN;
1106                      m.HWnd = this.Handle;
1107                      m.WParam = (IntPtr)0x01;
1108                      m.LParam = (IntPtr)0x9004f;
1109                      this.WndProc(ref m);
1110              }
1111
1112             public void MouseClick()
1113              {
1114                      Message m;
1115
1116                      m = new Message();
1117
1118                      m.Msg = (int)WndMsg.WM_LBUTTONDOWN;
1119                      m.HWnd = this.Handle;
1120                      m.WParam = (IntPtr)0x01;
1121                      m.LParam = (IntPtr)0x9004f;
1122                      this.WndProc(ref m);
1123
1124                      m = new Message();
1125
1126                      m.Msg = (int)WndMsg.WM_LBUTTONUP;
1127                      m.HWnd = this.Handle;
1128                      m.WParam = (IntPtr)0x01;
1129                      m.LParam = (IntPtr)0x9004f;
1130                      this.WndProc(ref m);
1131              }
1132
1133             public void MouseDoubleClick ()
1134              {
1135                      MouseClick ();
1136                      MouseClick ();
1137              }
1138
1139             public void MouseRightUp()
1140              {
1141                      Message m;
1142
1143                      m = new Message();
1144
1145                      m.Msg = (int)WndMsg.WM_RBUTTONUP;
1146                      m.HWnd = this.Handle;
1147                      m.WParam = (IntPtr)0x01;
1148                      m.LParam = (IntPtr)0x9004f;
1149                      this.WndProc(ref m);
1150              }
1151
1152             public void ScrollNow ()
1153              {
1154                      Message m;
1155
1156                      m = new Message ();
1157
1158                      m.Msg = 8468;
1159                      m.HWnd = this.Handle;
1160                      m.WParam = (IntPtr)0x1;
1161                      m.LParam = (IntPtr)0x1a051a;
1162                      this.WndProc(ref m);
1163
1164                      m.Msg = 233;
1165                      m.HWnd = this.Handle;
1166                      m.WParam = (IntPtr)0x1;
1167                      m.LParam = (IntPtr)0x12eb34;
1168                      this.WndProc(ref m);
1169              }
1170     }
1171
1172    [TestFixture]
1173    public class HScrollBarTestEventsOrder2
1174     {
1175             public string [] ArrayListToString (ArrayList arrlist)
1176              {
1177                      string [] retval = new string [arrlist.Count];
1178                      for (int i = 0; i < arrlist.Count; i++)
1179                        retval[i] = (string)arrlist[i];
1180                      return retval;
1181              }
1182
1183             [Test]
1184             public void CreateEventsOrder ()
1185                {
1186                        string[] EventsWanted = {
1187                                "HandleCreated",
1188                                  "BindingContextChanged",
1189                                  "BindingContextChanged"
1190                        };
1191                        Form myform = new Form ();
1192                        myform.Visible = true;
1193                        MyScrollBar2 s = new MyScrollBar2 ();
1194                        myform.Controls.Add (s);
1195
1196                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1197                }
1198
1199             [Test]
1200             public void BackColorChangedEventsOrder ()
1201                {
1202                        string[] EventsWanted = {
1203                                "HandleCreated",
1204                                  "BindingContextChanged",
1205                                  "BindingContextChanged",
1206                                  "Invalidated",
1207                                  "BackColorChanged"
1208                        };
1209                        Form myform = new Form ();
1210                        myform.Visible = true;
1211                        MyScrollBar2 s = new MyScrollBar2 ();
1212                        myform.Controls.Add (s);
1213                        s.BackColor = Color.Aqua;
1214
1215                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1216                }
1217
1218             [Test]
1219             public void BackgroundImageChangedEventsOrder ()
1220                {
1221                        string[] EventsWanted = {
1222                                "HandleCreated",
1223                                  "BindingContextChanged",
1224                                  "BindingContextChanged",
1225                                  "Invalidated",
1226                                  "BackgroundImageChanged"
1227
1228                        };
1229                        Form myform = new Form ();
1230                        myform.Visible = true;
1231                        MyScrollBar2 s = new MyScrollBar2 ();
1232                        myform.Controls.Add (s);
1233                        s.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");
1234
1235                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1236                }
1237
1238             [Test, Ignore ("Need to send proper Click / DoubleClick")]
1239             public void ClickEventsOrder ()
1240                {
1241                        string[] EventsWanted = {
1242                                "HandleCreated",
1243                                  "BindingContextChanged",
1244                                  "BindingContextChanged"
1245                        };
1246                        Form myform = new Form ();
1247                        myform.Visible = true;
1248                        MyScrollBar2 s = new MyScrollBar2 ();
1249                        myform.Controls.Add (s);
1250                        s.MouseClick ();
1251
1252                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1253                }
1254
1255             [Test, Ignore ("Need to send proper Click / DoubleClick")]
1256             public void DoubleClickEventsOrder ()
1257                {
1258                        string[] EventsWanted = {
1259                                "HandleCreated",
1260                                  "BindingContextChanged",
1261                                  "BindingContextChanged"
1262                        };
1263                        Form myform = new Form ();
1264                        myform.Visible = true;
1265                        MyScrollBar2 s = new MyScrollBar2 ();
1266                        myform.Controls.Add (s);
1267                        s.MouseDoubleClick ();
1268
1269                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1270                }
1271
1272             [Test]
1273             public void FontChangedEventsOrder ()
1274                {
1275                        string[] EventsWanted = {
1276                                "HandleCreated",
1277                                  "BindingContextChanged",
1278                                  "BindingContextChanged"
1279                        };
1280                        Form myform = new Form ();
1281                        myform.Visible = true;
1282                        MyScrollBar2 s = new MyScrollBar2 ();
1283                        myform.Controls.Add (s);
1284                        FontDialog myFontDialog = new FontDialog();
1285                        s.Font = myFontDialog.Font;
1286
1287                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1288                }
1289
1290             [Test]
1291             public void ForeColorChangedEventsOrder ()
1292                {
1293                        string[] EventsWanted = {
1294                                "HandleCreated",
1295                                  "BindingContextChanged",
1296                                  "BindingContextChanged",
1297                                  "Invalidated",
1298                                  "ForeColorChanged"
1299                        };
1300                        Form myform = new Form ();
1301                        myform.Visible = true;
1302                        MyScrollBar2 s = new MyScrollBar2 ();
1303                        myform.Controls.Add (s);
1304                        s.ForeColor = Color.Aqua;
1305
1306                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1307                }
1308
1309             [Test]
1310             public void ImeModeChangedChangedEventsOrder ()
1311                {
1312                        string[] EventsWanted = {
1313                                "HandleCreated",
1314                                  "BindingContextChanged",
1315                                  "BindingContextChanged",
1316                                  "ImeModeChanged"
1317                        };
1318                        Form myform = new Form ();
1319                        myform.Visible = true;
1320                        MyScrollBar2 s = new MyScrollBar2 ();
1321                        myform.Controls.Add (s);
1322                        s.ImeMode = ImeMode.Katakana;
1323
1324                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1325                }
1326
1327             [Test]
1328             public void MouseDownEventsOrder ()
1329                {
1330                        string[] EventsWanted = {
1331                                "HandleCreated",
1332                                  "BindingContextChanged",
1333                                  "BindingContextChanged",
1334                                  "MouseDown"
1335                        };
1336                        Form myform = new Form ();
1337                        myform.Visible = true;
1338                        MyScrollBar2 s = new MyScrollBar2 ();
1339                        myform.Controls.Add (s);
1340                        s.MouseRightDown ();
1341
1342                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1343                }
1344
1345             [Test]
1346             public void MouseMoveEventsOrder ()
1347                {
1348                        string[] EventsWanted = {
1349                                "HandleCreated",
1350                                  "BindingContextChanged",
1351                                  "BindingContextChanged",
1352                                  "MouseMove"
1353                        };
1354                        Form myform = new Form ();
1355                        myform.Visible = true;
1356                        MyScrollBar2 s = new MyScrollBar2 ();
1357                        myform.Controls.Add (s);
1358                        s.MoveMouse ();
1359
1360                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1361                }
1362
1363             [Test]
1364             public void MouseUpEventsOrder ()
1365                {
1366                        string[] EventsWanted = {
1367                                "HandleCreated",
1368                                  "BindingContextChanged",
1369                                  "BindingContextChanged",
1370                                  "MouseUp"
1371                        };
1372                        Form myform = new Form ();
1373                        myform.Visible = true;
1374                        MyScrollBar2 s = new MyScrollBar2 ();
1375                        myform.Controls.Add (s);
1376                        s.MouseRightUp ();
1377
1378                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1379                }
1380
1381             [Test]
1382             public void PaintEventsOrder ()
1383                {
1384                        string[] EventsWanted = {
1385                                "HandleCreated",
1386                                  "BindingContextChanged",
1387                                  "BindingContextChanged",
1388                                  "Invalidated"
1389                        };
1390                        Form myform = new Form ();
1391                        myform.Visible = true;
1392                        MyScrollBar2 s = new MyScrollBar2 ();
1393                        myform.Controls.Add (s);
1394                        s.Visible = true;
1395                        s.Refresh ();
1396
1397                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1398                }
1399
1400             [Test]
1401             public void ScrollEventsOrder ()
1402                {
1403                        string[] EventsWanted = {
1404                                "HandleCreated",
1405                                  "BindingContextChanged",
1406                                  "BindingContextChanged",
1407                                  "Scroll",
1408                                  "ValueChanged"
1409                        };
1410                        Form myform = new Form ();
1411                        myform.Visible = true;
1412                        MyScrollBar2 s = new MyScrollBar2 ();
1413                        myform.Controls.Add (s);
1414                        s.ScrollNow ();
1415
1416                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1417                }
1418
1419             [Test]
1420             public void TextChangedEventsOrder ()
1421                {
1422                        string[] EventsWanted = {
1423                                "HandleCreated",
1424                                  "BindingContextChanged",
1425                                  "BindingContextChanged",
1426                                  "TextChanged"
1427                        };
1428                        Form myform = new Form ();
1429                        myform.Visible = true;
1430                        MyScrollBar2 s = new MyScrollBar2 ();
1431                        myform.Controls.Add (s);
1432                        s.Text = "foobar";
1433
1434                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1435                }
1436
1437             [Test]
1438             public void ValueChangedEventsOrder ()
1439                {
1440                        string[] EventsWanted = {
1441                                "HandleCreated",
1442                                  "BindingContextChanged",
1443                                  "BindingContextChanged",
1444                                  "ValueChanged"
1445                        };
1446                        Form myform = new Form ();
1447                        myform.Visible = true;
1448                        MyScrollBar2 s = new MyScrollBar2 ();
1449                        myform.Controls.Add (s);
1450                        s.Value = 10;
1451
1452                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1453                }
1454     }
1455
1456 }