* roottypes.cs: Rename from tree.cs.
[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    [Ignore("Tests too strict")]
650    public class HScrollBarTestEventsOrder
651     {
652             public string [] ArrayListToString (ArrayList arrlist)
653              {
654                      string [] retval = new string [arrlist.Count];
655                      for (int i = 0; i < arrlist.Count; i++)
656                        retval[i] = (string)arrlist[i];
657                      return retval;
658              }
659
660             [Test]
661             public void CreateEventsOrder ()
662                {
663                        string[] EventsWanted = {
664                                "OnHandleCreated",
665                                  "OnBindingContextChanged",
666                                  "OnBindingContextChanged"
667                        };
668                        Form myform = new Form ();
669                        myform.Visible = true;
670                        MyScrollBar s = new MyScrollBar ();
671                        myform.Controls.Add (s);
672
673                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
674                }
675
676             [Test]
677             public void BackColorChangedEventsOrder ()
678                {
679                        string[] EventsWanted = {
680                                "OnHandleCreated",
681                                  "OnBindingContextChanged",
682                                  "OnBindingContextChanged",
683                                  "OnBackColorChanged",
684                                  "OnInvalidated"
685                        };
686                        Form myform = new Form ();
687                        myform.Visible = true;
688                        MyScrollBar s = new MyScrollBar ();
689                        myform.Controls.Add (s);
690                        s.BackColor = Color.Aqua;
691
692                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
693                }
694
695             [Test]
696             public void BackgroundImageChangedEventsOrder ()
697                {
698                        string[] EventsWanted = {
699                                "OnHandleCreated",
700                                  "OnBindingContextChanged",
701                                  "OnBindingContextChanged",
702                                  "OnBackgroundImageChanged",
703                                  "OnInvalidated"
704                        };
705                        Form myform = new Form ();
706                        myform.Visible = true;
707                        MyScrollBar s = new MyScrollBar ();
708                        myform.Controls.Add (s);
709                        s.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");
710
711                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
712                }
713
714             [Test, Ignore ("Need to send proper Click / DoubleClick")]
715             public void ClickEventsOrder ()
716                {
717                        string[] EventsWanted = {
718                                "OnHandleCreated",
719                                  "OnBindingContextChanged",
720                                  "OnBindingContextChanged"
721                        };
722                        Form myform = new Form ();
723                        myform.Visible = true;
724                        MyScrollBar s = new MyScrollBar ();
725                        myform.Controls.Add (s);
726                        s.MouseClick ();
727
728                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
729                }
730
731             [Test, Ignore ("Need to send proper Click / DoubleClick")]
732             public void DoubleClickEventsOrder ()
733                {
734                        string[] EventsWanted = {
735                                "OnHandleCreated",
736                                  "OnBindingContextChanged",
737                                  "OnBindingContextChanged"
738                        };
739                        Form myform = new Form ();
740                        myform.Visible = true;
741                        MyScrollBar s = new MyScrollBar ();
742                        myform.Controls.Add (s);
743                        s.MouseDoubleClick ();
744
745                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
746                }
747
748             [Test]
749             public void FontChangedEventsOrder ()
750                {
751                        string[] EventsWanted = {
752                                "OnHandleCreated",
753                                  "OnBindingContextChanged",
754                                  "OnBindingContextChanged"
755                        };
756                        Form myform = new Form ();
757                        myform.Visible = true;
758                        MyScrollBar s = new MyScrollBar ();
759                        myform.Controls.Add (s);
760                        FontDialog myFontDialog = new FontDialog();
761                        s.Font = myFontDialog.Font;
762
763                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
764                }
765
766             [Test]
767             public void ForeColorChangedEventsOrder ()
768                {
769                        string[] EventsWanted = {
770                                "OnHandleCreated",
771                                  "OnBindingContextChanged",
772                                  "OnBindingContextChanged",
773                                  "OnForeColorChanged",
774                                  "OnInvalidated"
775                        };
776                        Form myform = new Form ();
777                        myform.Visible = true;
778                        MyScrollBar s = new MyScrollBar ();
779                        myform.Controls.Add (s);
780                        s.ForeColor = Color.Aqua;
781
782                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
783                }
784
785             [Test]
786             public void ImeModeChangedChangedEventsOrder ()
787                {
788                        string[] EventsWanted = {
789                                "OnHandleCreated",
790                                  "OnBindingContextChanged",
791                                  "OnBindingContextChanged",
792                                  "OnImeModeChanged"
793                        };
794                        Form myform = new Form ();
795                        myform.Visible = true;
796                        MyScrollBar s = new MyScrollBar ();
797                        myform.Controls.Add (s);
798                        s.ImeMode = ImeMode.Katakana;
799
800                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
801                }
802
803             [Test]
804             public void MouseDownEventsOrder ()
805                {
806                        string[] EventsWanted = {
807                                "OnHandleCreated",
808                                  "OnBindingContextChanged",
809                                  "OnBindingContextChanged",
810                                  "OnMouseDown"
811                        };
812                        Form myform = new Form ();
813                        myform.Visible = true;
814                        MyScrollBar s = new MyScrollBar ();
815                        myform.Controls.Add (s);
816                        s.MouseRightDown ();
817
818                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
819                }
820
821             [Test]
822             public void MouseMoveEventsOrder ()
823                {
824                        string[] EventsWanted = {
825                                "OnHandleCreated",
826                                  "OnBindingContextChanged",
827                                  "OnBindingContextChanged",
828                                  "OnMouseMove",
829                                  "OnMouseHover"
830                        };
831                        Form myform = new Form ();
832                        myform.Visible = true;
833                        MyScrollBar s = new MyScrollBar ();
834                        myform.Controls.Add (s);
835                        s.MoveMouse ();
836
837                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
838                }
839
840             [Test]
841             public void MouseUpEventsOrder ()
842                {
843                        string[] EventsWanted = {
844                                "OnHandleCreated",
845                                  "OnBindingContextChanged",
846                                  "OnBindingContextChanged",
847                                  "OnMouseUp"
848                        };
849                        Form myform = new Form ();
850                        myform.Visible = true;
851                        MyScrollBar s = new MyScrollBar ();
852                        myform.Controls.Add (s);
853                        s.MouseRightUp ();
854
855                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
856                }
857
858             [Test]
859             public void PaintEventsOrder ()
860                {
861                        string[] EventsWanted = {
862                                "OnHandleCreated",
863                                  "OnBindingContextChanged",
864                                  "OnBindingContextChanged",
865                                  "OnInvalidated"
866                        };
867                        Form myform = new Form ();
868                        myform.Visible = true;
869                        MyScrollBar s = new MyScrollBar ();
870                        myform.Controls.Add (s);
871                        s.Visible = true;
872                        s.Refresh ();
873                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
874                }
875
876             [Test]
877             public void ScrollEventsOrder ()
878                {
879                        string[] EventsWanted = {
880                                "OnHandleCreated",
881                                  "OnBindingContextChanged",
882                                  "OnBindingContextChanged",
883                                  "OnScroll",
884                                  "OnValueChanged"
885                        };
886                        Form myform = new Form ();
887                        myform.Visible = true;
888                        MyScrollBar s = new MyScrollBar ();
889                        myform.Controls.Add (s);
890                        s.ScrollNow ();
891
892                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
893                }
894
895             [Test]
896             public void TextChangedEventsOrder ()
897                {
898                        string[] EventsWanted = {
899                                "OnHandleCreated",
900                                  "OnBindingContextChanged",
901                                  "OnBindingContextChanged",
902                                  "OnTextChanged"
903                        };
904                        Form myform = new Form ();
905                        myform.Visible = true;
906                        MyScrollBar s = new MyScrollBar ();
907                        myform.Controls.Add (s);
908                        s.Text = "foobar";
909
910                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
911                }
912
913             [Test]
914             public void ValueChangedEventsOrder ()
915                {
916                        string[] EventsWanted = {
917                                "OnHandleCreated",
918                                  "OnBindingContextChanged",
919                                  "OnBindingContextChanged",
920                                  "OnValueChanged"
921                        };
922                        Form myform = new Form ();
923                        myform.Visible = true;
924                        MyScrollBar s = new MyScrollBar ();
925                        myform.Controls.Add (s);
926                        s.Value = 10;
927
928                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
929                }
930     }
931
932 public class MyScrollBar2 : HScrollBar
933     {
934             protected ArrayList results = new ArrayList ();
935      public MyScrollBar2 () : base ()
936              {
937                      this.HandleCreated += new EventHandler (HandleCreated_Handler);
938                      this.BackColorChanged += new EventHandler (BackColorChanged_Handler);
939                      this.BackgroundImageChanged += new EventHandler (BackgroundImageChanged_Handler);
940                      this.BindingContextChanged += new EventHandler (BindingContextChanged_Handler);
941                      this.Click += new EventHandler (Click_Handler);
942                      this.DoubleClick += new EventHandler (DoubleClick_Handler);
943                      this.FontChanged += new EventHandler (FontChanged_Handler);
944                      this.ForeColorChanged += new EventHandler (ForeColorChanged_Handler);
945                      this.ImeModeChanged += new EventHandler (ImeModeChanged_Handler);
946                      this.MouseDown += new MouseEventHandler (MouseDown_Handler);
947                      this.MouseMove += new MouseEventHandler (MouseMove_Handler);
948                      this.MouseUp += new MouseEventHandler (MouseUp_Handler);
949                      this.Invalidated += new InvalidateEventHandler (Invalidated_Handler);
950                      this.Resize += new EventHandler (Resize_Handler);
951                      this.SizeChanged += new EventHandler (SizeChanged_Handler);
952                      this.Layout += new LayoutEventHandler (Layout_Handler);
953                      this.VisibleChanged += new EventHandler (VisibleChanged_Handler);
954                      this.Paint += new PaintEventHandler (Paint_Handler);
955                      this.Scroll += new ScrollEventHandler (Scroll_Handler);
956                      this.TextChanged += new EventHandler (TextChanged_Handler);
957                      this.ValueChanged += new EventHandler (ValueChanged_Handler);
958              }
959
960             protected void HandleCreated_Handler (object sender, EventArgs e)
961              {
962                      results.Add ("HandleCreated");
963              }
964
965             protected void BackColorChanged_Handler (object sender, EventArgs e)
966              {
967                      results.Add ("BackColorChanged");
968              }
969
970             protected void BackgroundImageChanged_Handler (object sender, EventArgs e)
971              {
972                      results.Add ("BackgroundImageChanged");
973              }
974
975             protected void Click_Handler (object sender, EventArgs e)
976              {
977                      results.Add ("Click");
978              }
979
980             protected void DoubleClick_Handler (object sender, EventArgs e)
981              {
982                      results.Add ("DoubleClick");
983              }
984
985             protected void FontChanged_Handler (object sender, EventArgs e)
986              {
987                      results.Add ("FontChanged");
988              }
989
990             protected void ForeColorChanged_Handler (object sender, EventArgs e)
991              {
992                      results.Add ("ForeColorChanged");
993              }
994
995             protected void ImeModeChanged_Handler (object sender, EventArgs e)
996              {
997                      results.Add ("ImeModeChanged");
998              }
999
1000             protected void MouseDown_Handler (object sender, MouseEventArgs e)
1001              {
1002                      results.Add ("MouseDown");
1003              }
1004
1005             protected void MouseMove_Handler (object sender, MouseEventArgs e)
1006              {
1007                      results.Add ("MouseMove");
1008              }
1009
1010             protected void MouseUp_Handler (object sender, MouseEventArgs e)
1011              {
1012                      results.Add ("MouseUp");
1013              }
1014
1015             protected void BindingContextChanged_Handler (object sender, EventArgs e)
1016              {
1017                      results.Add ("BindingContextChanged");
1018              }
1019
1020             protected void Invalidated_Handler (object sender, InvalidateEventArgs e)
1021              {
1022                      results.Add("Invalidated");
1023              }
1024
1025             protected void Resize_Handler (object sender, EventArgs e)
1026              {
1027                      results.Add("Resize");
1028              }
1029
1030             protected void SizeChanged_Handler (object sender, EventArgs e)
1031              {
1032                      results.Add("SizeChanged");
1033              }
1034
1035             protected void Layout_Handler (object sender, LayoutEventArgs e)
1036              {
1037                      results.Add("Layout");
1038              }
1039
1040             protected void VisibleChanged_Handler (object sender, EventArgs e)
1041              {
1042                      results.Add("VisibleChanged");
1043              }
1044
1045             protected void Paint_Handler (object sender, PaintEventArgs e)
1046              {
1047                      results.Add("Paint");
1048              }
1049
1050             protected void Scroll_Handler (object sender, ScrollEventArgs e)
1051              {
1052                      results.Add ("Scroll");
1053              }
1054
1055             protected void TextChanged_Handler (object sender, EventArgs e)
1056              {
1057                      results.Add ("TextChanged");
1058              }
1059
1060             protected void ValueChanged_Handler (object sender, EventArgs e)
1061              {
1062                      results.Add ("ValueChanged");
1063              }
1064
1065             public ArrayList Results {
1066                     get {       return results; }
1067             }
1068
1069             public void MoveMouse ()
1070              {
1071                      Message m;
1072
1073                      m = new Message ();
1074
1075                      m.Msg = (int)WndMsg.WM_NCHITTEST;
1076                      m.HWnd = this.Handle;
1077                      m.WParam = (IntPtr)0x0;
1078                      m.LParam = (IntPtr)0x1c604ea;
1079                      this.WndProc(ref m);
1080
1081                      m.Msg = (int)WndMsg.WM_SETCURSOR;
1082                      m.HWnd = this.Handle;
1083                      m.WParam = (IntPtr)0x100448;
1084                      m.LParam = (IntPtr)0x2000001;
1085                      this.WndProc(ref m);
1086
1087                      m.Msg = (int)WndMsg.WM_MOUSEFIRST;
1088                      m.HWnd = this.Handle;
1089                      m.WParam = (IntPtr)0x0;
1090                      m.LParam = (IntPtr)0x14000b;
1091                      this.WndProc(ref m);
1092
1093                      m.Msg = (int)WndMsg.WM_MOUSEHOVER;
1094                      m.HWnd = this.Handle;
1095                      m.WParam = (IntPtr)0x0;
1096                      m.LParam = (IntPtr)0x14000b;
1097                      this.WndProc(ref m);
1098              }
1099
1100             public void MouseRightDown()
1101              {
1102                      Message m;
1103
1104                      m = new Message();
1105
1106                      m.Msg = (int)WndMsg.WM_RBUTTONDOWN;
1107                      m.HWnd = this.Handle;
1108                      m.WParam = (IntPtr)0x01;
1109                      m.LParam = (IntPtr)0x9004f;
1110                      this.WndProc(ref m);
1111              }
1112
1113             public void MouseClick()
1114              {
1115                      Message m;
1116
1117                      m = new Message();
1118
1119                      m.Msg = (int)WndMsg.WM_LBUTTONDOWN;
1120                      m.HWnd = this.Handle;
1121                      m.WParam = (IntPtr)0x01;
1122                      m.LParam = (IntPtr)0x9004f;
1123                      this.WndProc(ref m);
1124
1125                      m = new Message();
1126
1127                      m.Msg = (int)WndMsg.WM_LBUTTONUP;
1128                      m.HWnd = this.Handle;
1129                      m.WParam = (IntPtr)0x01;
1130                      m.LParam = (IntPtr)0x9004f;
1131                      this.WndProc(ref m);
1132              }
1133
1134             public void MouseDoubleClick ()
1135              {
1136                      MouseClick ();
1137                      MouseClick ();
1138              }
1139
1140             public void MouseRightUp()
1141              {
1142                      Message m;
1143
1144                      m = new Message();
1145
1146                      m.Msg = (int)WndMsg.WM_RBUTTONUP;
1147                      m.HWnd = this.Handle;
1148                      m.WParam = (IntPtr)0x01;
1149                      m.LParam = (IntPtr)0x9004f;
1150                      this.WndProc(ref m);
1151              }
1152
1153             public void ScrollNow ()
1154              {
1155                      Message m;
1156
1157                      m = new Message ();
1158
1159                      m.Msg = 8468;
1160                      m.HWnd = this.Handle;
1161                      m.WParam = (IntPtr)0x1;
1162                      m.LParam = (IntPtr)0x1a051a;
1163                      this.WndProc(ref m);
1164
1165                      m.Msg = 233;
1166                      m.HWnd = this.Handle;
1167                      m.WParam = (IntPtr)0x1;
1168                      m.LParam = (IntPtr)0x12eb34;
1169                      this.WndProc(ref m);
1170              }
1171     }
1172
1173    [TestFixture]
1174    [Ignore("Tests too strict")]
1175    public class HScrollBarTestEventsOrder2
1176     {
1177             public string [] ArrayListToString (ArrayList arrlist)
1178              {
1179                      string [] retval = new string [arrlist.Count];
1180                      for (int i = 0; i < arrlist.Count; i++)
1181                        retval[i] = (string)arrlist[i];
1182                      return retval;
1183              }
1184
1185             [Test]
1186             public void CreateEventsOrder ()
1187                {
1188                        string[] EventsWanted = {
1189                                "HandleCreated",
1190                                  "BindingContextChanged",
1191                                  "BindingContextChanged"
1192                        };
1193                        Form myform = new Form ();
1194                        myform.Visible = true;
1195                        MyScrollBar2 s = new MyScrollBar2 ();
1196                        myform.Controls.Add (s);
1197
1198                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1199                }
1200
1201             [Test]
1202             public void BackColorChangedEventsOrder ()
1203                {
1204                        string[] EventsWanted = {
1205                                "HandleCreated",
1206                                  "BindingContextChanged",
1207                                  "BindingContextChanged",
1208                                  "Invalidated",
1209                                  "BackColorChanged"
1210                        };
1211                        Form myform = new Form ();
1212                        myform.Visible = true;
1213                        MyScrollBar2 s = new MyScrollBar2 ();
1214                        myform.Controls.Add (s);
1215                        s.BackColor = Color.Aqua;
1216
1217                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1218                }
1219
1220             [Test]
1221             public void BackgroundImageChangedEventsOrder ()
1222                {
1223                        string[] EventsWanted = {
1224                                "HandleCreated",
1225                                  "BindingContextChanged",
1226                                  "BindingContextChanged",
1227                                  "Invalidated",
1228                                  "BackgroundImageChanged"
1229
1230                        };
1231                        Form myform = new Form ();
1232                        myform.Visible = true;
1233                        MyScrollBar2 s = new MyScrollBar2 ();
1234                        myform.Controls.Add (s);
1235                        s.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");
1236
1237                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1238                }
1239
1240             [Test, Ignore ("Need to send proper Click / DoubleClick")]
1241             public void ClickEventsOrder ()
1242                {
1243                        string[] EventsWanted = {
1244                                "HandleCreated",
1245                                  "BindingContextChanged",
1246                                  "BindingContextChanged"
1247                        };
1248                        Form myform = new Form ();
1249                        myform.Visible = true;
1250                        MyScrollBar2 s = new MyScrollBar2 ();
1251                        myform.Controls.Add (s);
1252                        s.MouseClick ();
1253
1254                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1255                }
1256
1257             [Test, Ignore ("Need to send proper Click / DoubleClick")]
1258             public void DoubleClickEventsOrder ()
1259                {
1260                        string[] EventsWanted = {
1261                                "HandleCreated",
1262                                  "BindingContextChanged",
1263                                  "BindingContextChanged"
1264                        };
1265                        Form myform = new Form ();
1266                        myform.Visible = true;
1267                        MyScrollBar2 s = new MyScrollBar2 ();
1268                        myform.Controls.Add (s);
1269                        s.MouseDoubleClick ();
1270
1271                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1272                }
1273
1274             [Test]
1275             public void FontChangedEventsOrder ()
1276                {
1277                        string[] EventsWanted = {
1278                                "HandleCreated",
1279                                  "BindingContextChanged",
1280                                  "BindingContextChanged"
1281                        };
1282                        Form myform = new Form ();
1283                        myform.Visible = true;
1284                        MyScrollBar2 s = new MyScrollBar2 ();
1285                        myform.Controls.Add (s);
1286                        FontDialog myFontDialog = new FontDialog();
1287                        s.Font = myFontDialog.Font;
1288
1289                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1290                }
1291
1292             [Test]
1293             public void ForeColorChangedEventsOrder ()
1294                {
1295                        string[] EventsWanted = {
1296                                "HandleCreated",
1297                                  "BindingContextChanged",
1298                                  "BindingContextChanged",
1299                                  "Invalidated",
1300                                  "ForeColorChanged"
1301                        };
1302                        Form myform = new Form ();
1303                        myform.Visible = true;
1304                        MyScrollBar2 s = new MyScrollBar2 ();
1305                        myform.Controls.Add (s);
1306                        s.ForeColor = Color.Aqua;
1307
1308                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1309                }
1310
1311             [Test]
1312             public void ImeModeChangedChangedEventsOrder ()
1313                {
1314                        string[] EventsWanted = {
1315                                "HandleCreated",
1316                                  "BindingContextChanged",
1317                                  "BindingContextChanged",
1318                                  "ImeModeChanged"
1319                        };
1320                        Form myform = new Form ();
1321                        myform.Visible = true;
1322                        MyScrollBar2 s = new MyScrollBar2 ();
1323                        myform.Controls.Add (s);
1324                        s.ImeMode = ImeMode.Katakana;
1325
1326                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1327                }
1328
1329             [Test]
1330             public void MouseDownEventsOrder ()
1331                {
1332                        string[] EventsWanted = {
1333                                "HandleCreated",
1334                                  "BindingContextChanged",
1335                                  "BindingContextChanged",
1336                                  "MouseDown"
1337                        };
1338                        Form myform = new Form ();
1339                        myform.Visible = true;
1340                        MyScrollBar2 s = new MyScrollBar2 ();
1341                        myform.Controls.Add (s);
1342                        s.MouseRightDown ();
1343
1344                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1345                }
1346
1347             [Test]
1348             public void MouseMoveEventsOrder ()
1349                {
1350                        string[] EventsWanted = {
1351                                "HandleCreated",
1352                                  "BindingContextChanged",
1353                                  "BindingContextChanged",
1354                                  "MouseMove"
1355                        };
1356                        Form myform = new Form ();
1357                        myform.Visible = true;
1358                        MyScrollBar2 s = new MyScrollBar2 ();
1359                        myform.Controls.Add (s);
1360                        s.MoveMouse ();
1361
1362                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1363                }
1364
1365             [Test]
1366             public void MouseUpEventsOrder ()
1367                {
1368                        string[] EventsWanted = {
1369                                "HandleCreated",
1370                                  "BindingContextChanged",
1371                                  "BindingContextChanged",
1372                                  "MouseUp"
1373                        };
1374                        Form myform = new Form ();
1375                        myform.Visible = true;
1376                        MyScrollBar2 s = new MyScrollBar2 ();
1377                        myform.Controls.Add (s);
1378                        s.MouseRightUp ();
1379
1380                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1381                }
1382
1383             [Test]
1384             public void PaintEventsOrder ()
1385                {
1386                        string[] EventsWanted = {
1387                                "HandleCreated",
1388                                  "BindingContextChanged",
1389                                  "BindingContextChanged",
1390                                  "Invalidated"
1391                        };
1392                        Form myform = new Form ();
1393                        myform.Visible = true;
1394                        MyScrollBar2 s = new MyScrollBar2 ();
1395                        myform.Controls.Add (s);
1396                        s.Visible = true;
1397                        s.Refresh ();
1398
1399                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1400                }
1401
1402             [Test]
1403             public void ScrollEventsOrder ()
1404                {
1405                        string[] EventsWanted = {
1406                                "HandleCreated",
1407                                  "BindingContextChanged",
1408                                  "BindingContextChanged",
1409                                  "Scroll",
1410                                  "ValueChanged"
1411                        };
1412                        Form myform = new Form ();
1413                        myform.Visible = true;
1414                        MyScrollBar2 s = new MyScrollBar2 ();
1415                        myform.Controls.Add (s);
1416                        s.ScrollNow ();
1417
1418                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1419                }
1420
1421             [Test]
1422             public void TextChangedEventsOrder ()
1423                {
1424                        string[] EventsWanted = {
1425                                "HandleCreated",
1426                                  "BindingContextChanged",
1427                                  "BindingContextChanged",
1428                                  "TextChanged"
1429                        };
1430                        Form myform = new Form ();
1431                        myform.Visible = true;
1432                        MyScrollBar2 s = new MyScrollBar2 ();
1433                        myform.Controls.Add (s);
1434                        s.Text = "foobar";
1435
1436                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1437                }
1438
1439             [Test]
1440             public void ValueChangedEventsOrder ()
1441                {
1442                        string[] EventsWanted = {
1443                                "HandleCreated",
1444                                  "BindingContextChanged",
1445                                  "BindingContextChanged",
1446                                  "ValueChanged"
1447                        };
1448                        Form myform = new Form ();
1449                        myform.Visible = true;
1450                        MyScrollBar2 s = new MyScrollBar2 ();
1451                        myform.Controls.Add (s);
1452                        s.Value = 10;
1453
1454                        Assert.AreEqual (EventsWanted, ArrayListToString (s.Results));
1455                }
1456     }
1457
1458 }