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