1 // 2 // Copyright (c) 2005 Novell, Inc. 3 // 4 // Authors: 5 // Hisham Mardam Bey (hisham.mardambey@gmail.com) 6 // 7 // 8 9 using System; 10 using NUnit.Framework; 11 using System.Windows.Forms; 12 using System.Drawing; 13 using System.Collections; 14 15 namespace MonoTests.System.Windows.Forms 16 { 17 [TestFixture] 18 public class LabelTest : TestHelper 19 { 20 [Test] LabelAccessibility()21 public void LabelAccessibility () 22 { 23 Label l = new Label (); 24 Assert.IsNotNull (l.AccessibilityObject, "1"); 25 } 26 27 [Test] PreferredWidth()28 public void PreferredWidth () 29 { 30 Label l = new Label(); 31 32 // preferred width is 0 by default 33 Assert.AreEqual (0, l.PreferredWidth, "2"); 34 35 // and after text is changed it's something else 36 l.Text = "hi"; 37 Assert.IsTrue (l.PreferredWidth > 0, "3"); 38 39 // now add it to a form and see 40 Form f = new Form (); 41 f.ShowInTaskbar = false; 42 l.Text = ""; 43 44 f.Controls.Add (l); 45 f.Show (); 46 Assert.AreEqual (0, l.PreferredWidth, "4"); 47 48 l.Text = "hi"; 49 Assert.IsTrue (l.PreferredWidth > 0, "5"); 50 51 f.Dispose (); 52 } 53 54 [Test] PreferredHeight()55 public void PreferredHeight () 56 { 57 Label l = new Label(); 58 Assert.AreEqual (l.PreferredHeight, (l.Font.Height + 3), "#1"); 59 60 l.BorderStyle = BorderStyle.None; 61 Assert.AreEqual (l.PreferredHeight, (l.Font.Height + 3), "#2"); 62 63 l.BorderStyle = BorderStyle.FixedSingle; 64 Assert.AreEqual (l.PreferredHeight, (l.Font.Height + 6), "#3"); 65 66 l.BorderStyle = BorderStyle.Fixed3D; 67 Assert.AreEqual (l.PreferredHeight, (l.Font.Height + 6), "#4"); 68 69 l.UseCompatibleTextRendering = false; 70 71 l.BorderStyle = BorderStyle.None; 72 Assert.AreEqual (l.PreferredHeight, (l.Font.Height), "#5"); 73 74 l.BorderStyle = BorderStyle.FixedSingle; 75 Assert.AreEqual (l.PreferredHeight, (l.Font.Height), "#6"); 76 77 l.BorderStyle = BorderStyle.Fixed3D; 78 Assert.AreEqual (l.PreferredHeight, (l.Font.Height), "#7"); 79 } 80 81 [Test] SizesTest()82 public void SizesTest () 83 { 84 Form myform = new Form (); 85 Label l1 = new Label (); l1.Text = "Test"; 86 Label l2 = new Label (); l2.Text = "Test"; 87 Label l3 = new Label (); l3.Text = "Test three"; 88 Label l4 = new Label (); l4.Text = String.Format ("Test four{0}with line breaks", Environment.NewLine); 89 myform.Controls.Add (l1); 90 myform.Controls.Add (l2); 91 myform.Controls.Add (l3); 92 myform.Controls.Add (l4); 93 myform.Show (); 94 95 l2.Font = new Font (l1.Font.FontFamily, l1.Font.Size + 5, l1.Font.Style); 96 97 // Height: autosize = false 98 Assert.AreEqual (l1.Height, l2.Height, "#1"); 99 Assert.AreEqual (l1.Height, l3.Height, "#2"); 100 Assert.AreEqual (l1.Height, l4.Height, "#3"); 101 102 // Width: autosize = false 103 Assert.AreEqual (l1.Width, l2.Width, "#4"); 104 Assert.AreEqual (l1.Width, l3.Width, "#5"); 105 Assert.AreEqual (l1.Width, l4.Width, "#6"); 106 107 l1.AutoSize = true; 108 l2.AutoSize = true; 109 l3.AutoSize = true; 110 l4.AutoSize = true; 111 112 // Height: autosize = false 113 Assert.IsFalse (l1.Height.Equals (l2.Height), "#7"); 114 Assert.IsTrue (l1.Height.Equals (l3.Height), "#8"); 115 Assert.IsTrue ((l4.Height > l1.Height), "#9"); 116 117 // Width: autosize = false 118 Assert.IsFalse (l1.Width.Equals (l2.Width), "#10"); 119 Assert.IsFalse (l1.Width.Equals (l3.Width), "#11"); 120 121 myform.Dispose(); 122 } 123 124 [Test] StyleTest()125 public void StyleTest () 126 { 127 Label l = new Label (); 128 129 Assert.IsFalse (TestHelper.IsStyleSet (l, WindowStyles.WS_BORDER), "#1"); 130 Assert.IsFalse (TestHelper.IsExStyleSet (l, WindowExStyles.WS_EX_CLIENTEDGE), "#2"); 131 Assert.IsFalse (TestHelper.IsExStyleSet (l, WindowExStyles.WS_EX_STATICEDGE), "#3"); 132 133 l.BorderStyle = BorderStyle.None; 134 135 Assert.IsFalse (TestHelper.IsStyleSet (l, WindowStyles.WS_BORDER), "#4"); 136 Assert.IsFalse (TestHelper.IsExStyleSet (l, WindowExStyles.WS_EX_CLIENTEDGE), "#5"); 137 Assert.IsFalse (TestHelper.IsExStyleSet (l, WindowExStyles.WS_EX_STATICEDGE), "#6"); 138 139 l.BorderStyle = BorderStyle.FixedSingle; 140 141 Assert.IsTrue (TestHelper.IsStyleSet (l, WindowStyles.WS_BORDER), "#7"); 142 Assert.IsFalse (TestHelper.IsExStyleSet (l, WindowExStyles.WS_EX_CLIENTEDGE), "#8"); 143 Assert.IsFalse (TestHelper.IsExStyleSet (l, WindowExStyles.WS_EX_STATICEDGE), "#9"); 144 145 l.BorderStyle = BorderStyle.Fixed3D; 146 147 Assert.IsFalse (TestHelper.IsStyleSet (l, WindowStyles.WS_BORDER), "#10"); 148 Assert.IsFalse (TestHelper.IsExStyleSet (l, WindowExStyles.WS_EX_CLIENTEDGE), "#11"); 149 Assert.IsTrue (TestHelper.IsExStyleSet (l, WindowExStyles.WS_EX_STATICEDGE), "#12"); 150 } 151 152 [Test] BoundsTest()153 public void BoundsTest () 154 { 155 Label l = new Label (); 156 157 Assert.AreEqual (new Rectangle (0,0,100,23), l.Bounds, "1"); 158 Assert.AreEqual (new Rectangle (0,0,100,23), l.ClientRectangle, "2"); 159 Assert.AreEqual (new Size (100,23), l.ClientSize, "3"); 160 } 161 162 [Test] PubPropTest()163 public void PubPropTest () 164 { 165 Label l = new Label (); 166 167 Assert.IsFalse (l.AutoSize, "#3"); 168 169 Assert.AreEqual ("Control", l.BackColor.Name , "#6"); 170 Assert.IsNull (l.BackgroundImage, "#8"); 171 Assert.AreEqual (BorderStyle.None , l.BorderStyle, "#9"); 172 173 Assert.IsNull (l.Container, "#19"); 174 Assert.IsFalse (l.ContainsFocus, "#20"); 175 Assert.IsNull (l.ContextMenu, "#21"); 176 Assert.IsFalse (l.Created, "#23"); 177 Assert.AreEqual (Cursors.Default , l.Cursor, "#24"); 178 179 Assert.IsNotNull (l.DataBindings, "#25"); 180 Assert.AreEqual (DockStyle.None, l.Dock, "#28"); 181 182 Assert.IsTrue (l.Enabled, "#29"); 183 184 Assert.AreEqual (FlatStyle.Standard, l.FlatStyle, "#30"); 185 Assert.IsFalse (l.Focused, "#31"); 186 Assert.AreEqual (FontFamily.GenericSansSerif, l.Font.FontFamily, "#32"); 187 Assert.AreEqual (SystemColors.ControlText, l.ForeColor, "#33"); 188 189 Assert.IsFalse (l.HasChildren, "#35"); 190 191 Assert.IsNull (l.Image, "#37"); 192 Assert.AreEqual (ContentAlignment.MiddleCenter, l.ImageAlign, "#38"); 193 Assert.AreEqual (-1, l.ImageIndex, "#39"); 194 Assert.IsNull (l.ImageList, "#40"); 195 Assert.IsFalse (l.InvokeRequired, "#42"); 196 Assert.IsFalse (l.IsAccessible, "#43"); 197 Assert.IsFalse (l.IsDisposed, "#44"); 198 199 Assert.IsNull (l.Parent, "#49"); 200 201 Assert.IsFalse (l.RecreatingHandle, "#54"); 202 Assert.IsNull (l.Region, "#55"); 203 Assert.AreEqual (RightToLeft.No, l.RightToLeft, "#57"); 204 205 Assert.IsNull (l.Site, "#58"); 206 207 Assert.AreEqual (0, l.TabIndex, "#60"); 208 Assert.IsNull (l.Tag, "#61"); 209 Assert.AreEqual ("", l.Text, "#62"); 210 Assert.AreEqual (ContentAlignment.TopLeft, l.TextAlign, "#63"); 211 Assert.IsNull (l.TopLevelControl, "#65"); 212 213 Assert.IsTrue (l.UseMnemonic, "#66"); 214 215 Assert.IsTrue (l.Visible, "#67"); 216 } 217 218 [Test] LabelEqualsTest()219 public void LabelEqualsTest () { 220 Label s1 = new Label (); 221 Label s2 = new Label (); 222 s1.Text = "abc"; 223 s2.Text = "abc"; 224 Assert.IsFalse (s1.Equals (s2), "#69"); 225 Assert.IsTrue (s1.Equals (s1), "#70"); 226 } 227 228 [Test] LabelScaleTest()229 public void LabelScaleTest () { 230 Label r1 = new Label (); 231 r1.Width = 40; 232 r1.Height = 20 ; 233 r1.Scale (2); 234 Assert.AreEqual (80, r1.Width, "#71"); 235 Assert.AreEqual (40, r1.Height, "#72"); 236 237 } 238 239 [Test] ToStringTest()240 public void ToStringTest () 241 { 242 Label l = new Label (); 243 244 l.Text = "My Label"; 245 246 Assert.AreEqual ("System.Windows.Forms.Label, Text: My Label", l.ToString (), "T1"); 247 } 248 249 [Test] AutoSizeExplicitSize()250 public void AutoSizeExplicitSize () 251 { 252 Form f = new Form (); 253 f.ShowInTaskbar = false; 254 255 Label l = new Label (); 256 l.Size = new Size (5, 5); 257 l.AutoSize = true; 258 l.Text = "My Label"; 259 260 f.Controls.Add (l); 261 262 Size s = l.Size; 263 264 l.Width = 10; 265 Assert.AreEqual (s, l.Size, "A1"); 266 267 l.Height = 10; 268 Assert.AreEqual (s, l.Size, "A2"); 269 } 270 271 [Test] LabelMargin()272 public void LabelMargin () 273 { 274 Assert.AreEqual (new Padding (3, 0, 3, 0), new Label ().Margin, "A1"); 275 } 276 277 [Test] BehaviorImageList()278 public void BehaviorImageList () 279 { 280 // Basically, this shows that whichever of [Image|ImageIndex|ImageKey] 281 // is set last resets the others to their default state 282 Label b = new Label (); 283 284 Bitmap i1 = new Bitmap (16, 16); 285 i1.SetPixel (0, 0, Color.Blue); 286 Bitmap i2 = new Bitmap (16, 16); 287 i2.SetPixel (0, 0, Color.Red); 288 Bitmap i3 = new Bitmap (16, 16); 289 i3.SetPixel (0, 0, Color.Green); 290 291 Assert.AreEqual (null, b.Image, "D1"); 292 Assert.AreEqual (-1, b.ImageIndex, "D2"); 293 Assert.AreEqual (string.Empty, b.ImageKey, "D3"); 294 295 ImageList il = new ImageList (); 296 il.Images.Add ("i2", i2); 297 il.Images.Add ("i3", i3); 298 299 b.ImageList = il; 300 301 b.ImageKey = "i3"; 302 Assert.AreEqual (-1, b.ImageIndex, "D4"); 303 Assert.AreEqual ("i3", b.ImageKey, "D5"); 304 Assert.AreEqual (i3.GetPixel (0, 0), (b.Image as Bitmap).GetPixel (0, 0), "D6"); 305 306 b.ImageIndex = 0; 307 Assert.AreEqual (0, b.ImageIndex, "D7"); 308 Assert.AreEqual (string.Empty, b.ImageKey, "D8"); 309 Assert.AreEqual (i2.GetPixel (0, 0), (b.Image as Bitmap).GetPixel (0, 0), "D9"); 310 311 // Also, Image is not cached, changing the underlying ImageList image is reflected 312 il.Images[0] = i1; 313 Assert.AreEqual (i1.GetPixel (0, 0), (b.Image as Bitmap).GetPixel (0, 0), "D16"); 314 315 // Note: setting Image resets ImageList to null 316 b.Image = i1; 317 Assert.AreEqual (-1, b.ImageIndex, "D10"); 318 Assert.AreEqual (string.Empty, b.ImageKey, "D11"); 319 Assert.AreEqual (i1.GetPixel (0, 0), (b.Image as Bitmap).GetPixel (0, 0), "D12"); 320 Assert.AreEqual (null, b.ImageList, "D12-2"); 321 322 b.Image = null; 323 Assert.AreEqual (null, b.Image, "D13"); 324 Assert.AreEqual (-1, b.ImageIndex, "D14"); 325 Assert.AreEqual (string.Empty, b.ImageKey, "D15"); 326 } 327 } 328 329 [TestFixture] 330 public class LabelEventTest : TestHelper 331 { 332 static bool eventhandled = false; Label_EventHandler(object sender,EventArgs e)333 public void Label_EventHandler (object sender,EventArgs e) 334 { 335 eventhandled = true; 336 } 337 Label_KeyDownEventHandler(object sender, KeyEventArgs e)338 public void Label_KeyDownEventHandler (object sender, KeyEventArgs e) 339 { 340 eventhandled = true; 341 } 342 343 [Ignore ("AutoSize moved to Control in 2.0, Label.AutoSize needs to be reworked a bit.")] 344 [Test] AutoSizeChangedChangedTest()345 public void AutoSizeChangedChangedTest () 346 { 347 Form myform = new Form (); 348 myform.ShowInTaskbar = false; 349 myform.Visible = true; 350 Label l = new Label (); 351 l.Visible = true; 352 myform.Controls.Add (l); 353 l.AutoSizeChanged += new EventHandler (Label_EventHandler); 354 l.AutoSize = true; 355 Assert.AreEqual (true, eventhandled, "B4"); 356 eventhandled = false; 357 myform.Dispose(); 358 } 359 360 [Test] BackgroundImageChangedTest()361 public void BackgroundImageChangedTest () 362 { 363 Form myform = new Form (); 364 myform.ShowInTaskbar = false; 365 myform.Visible = true; 366 Label l = new Label (); 367 l.Visible = true; 368 myform.Controls.Add (l); 369 l.BackgroundImageChanged += new EventHandler (Label_EventHandler); 370 l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png"); 371 Assert.AreEqual (true, eventhandled, "B4"); 372 eventhandled = false; 373 myform.Dispose(); 374 } 375 376 [Test] ImeModeChangedTest()377 public void ImeModeChangedTest () 378 { 379 Form myform = new Form (); 380 myform.ShowInTaskbar = false; 381 myform.Visible = true; 382 Label l = new Label (); 383 l.Visible = true; 384 myform.Controls.Add (l); 385 l.ImeModeChanged += new EventHandler (Label_EventHandler); 386 l.ImeMode = ImeMode.Katakana; 387 Assert.AreEqual (true, eventhandled, "I16"); 388 eventhandled = false; 389 myform.Dispose(); 390 } 391 392 [Test] KeyDownTest()393 public void KeyDownTest () 394 { 395 Form myform = new Form (); 396 myform.ShowInTaskbar = false; 397 myform.Visible = true; 398 MyLabel l = new MyLabel (); 399 l.Visible = true; 400 myform.Controls.Add (l); 401 l.KeyDown += new KeyEventHandler (Label_KeyDownEventHandler); 402 l.KeyPressA (); 403 404 Assert.AreEqual (true, eventhandled, "K1"); 405 eventhandled = false; 406 myform.Dispose(); 407 } 408 409 [Test] TabStopChangedTest()410 public void TabStopChangedTest () 411 { 412 Form myform = new Form (); 413 myform.ShowInTaskbar = false; 414 myform.Visible = true; 415 Label l = new Label (); 416 l.Visible = true; 417 myform.Controls.Add (l); 418 l.TabStopChanged += new EventHandler (Label_EventHandler); 419 l.TabStop = true; 420 Assert.AreEqual (true, eventhandled, "T3"); 421 eventhandled = false; 422 myform.Dispose(); 423 } 424 425 [Test] TextAlignChangedTest()426 public void TextAlignChangedTest () 427 { 428 Form myform = new Form (); 429 myform.ShowInTaskbar = false; 430 myform.Visible = true; 431 Label l = new Label (); 432 l.Visible = true; 433 myform.Controls.Add (l); 434 l.TextAlignChanged += new EventHandler (Label_EventHandler); 435 l.TextAlign = ContentAlignment.TopRight; 436 Assert.AreEqual (true, eventhandled, "T4"); 437 eventhandled = false; 438 myform.Dispose(); 439 } 440 } 441 442 public class MyLabelInvalidate : MyLabel 443 { 444 //protected ArrayList results = new ArrayList (); MyLabelInvalidate()445 public MyLabelInvalidate () : base () 446 {} 447 OnInvalidated(InvalidateEventArgs e)448 protected override void OnInvalidated (InvalidateEventArgs e) 449 { 450 base.OnInvalidated (e); 451 string res = (string)results [results.Count - 1]; 452 results [results.Count - 1 ] = string.Concat (res, "," + e.InvalidRect.ToString ()); 453 //results.Add ("OnInvalidate," + e.InvalidRect.ToString ()); 454 } 455 456 //public ArrayList Results { 457 // get { return results; } 458 //} 459 460 } 461 462 public class MyLabel : Label 463 { 464 protected ArrayList results = new ArrayList (); MyLabel()465 public MyLabel () : base () 466 { } 467 OnAutoSizeChanged(EventArgs e)468 protected override void OnAutoSizeChanged (EventArgs e) 469 { 470 results.Add ("OnAutoSizeChanged"); 471 base.OnAutoSizeChanged (e); 472 } 473 OnBackgroundImageChanged(EventArgs e)474 protected override void OnBackgroundImageChanged (EventArgs e) 475 { 476 results.Add ("OnBackgroundImageChanged"); 477 base.OnBackgroundImageChanged (e); 478 } 479 OnImeModeChanged(EventArgs e)480 protected override void OnImeModeChanged (EventArgs e) 481 { 482 results.Add ("OnImeModeChanged"); 483 base.OnImeModeChanged (e); 484 } 485 OnKeyDown(KeyEventArgs e)486 protected override void OnKeyDown (KeyEventArgs e) 487 { 488 results.Add ("OnKeyDown,"+(char)e.KeyValue); 489 base.OnKeyDown (e); 490 } 491 OnKeyPress(KeyPressEventArgs e)492 protected override void OnKeyPress (KeyPressEventArgs e) 493 { 494 results.Add ("OnKeyPress,"+e.KeyChar.ToString ()); 495 base.OnKeyPress (e); 496 } 497 OnKeyUp(KeyEventArgs e)498 protected override void OnKeyUp (KeyEventArgs e) 499 { 500 results.Add ("OnKeyUp,"+(char)e.KeyValue); 501 base.OnKeyUp (e); 502 } 503 OnHandleCreated(EventArgs e)504 protected override void OnHandleCreated (EventArgs e) 505 { 506 results.Add ("OnHandleCreated"); 507 base.OnHandleCreated (e); 508 } 509 OnBindingContextChanged(EventArgs e)510 protected override void OnBindingContextChanged (EventArgs e) 511 { 512 results.Add ("OnBindingContextChanged"); 513 base.OnBindingContextChanged (e); 514 } 515 OnInvalidated(InvalidateEventArgs e)516 protected override void OnInvalidated (InvalidateEventArgs e) 517 { 518 results.Add("OnInvalidated"); 519 base.OnInvalidated (e); 520 } 521 OnResize(EventArgs e)522 protected override void OnResize (EventArgs e) 523 { 524 results.Add("OnResize"); 525 base.OnResize (e); 526 } 527 OnSizeChanged(EventArgs e)528 protected override void OnSizeChanged (EventArgs e) 529 { 530 results.Add("OnSizeChanged"); 531 base.OnSizeChanged (e); 532 } 533 OnLayout(LayoutEventArgs e)534 protected override void OnLayout (LayoutEventArgs e) 535 { 536 results.Add("OnLayout"); 537 base.OnLayout (e); 538 } 539 OnVisibleChanged(EventArgs e)540 protected override void OnVisibleChanged (EventArgs e) 541 { 542 results.Add("OnVisibleChanged"); 543 base.OnVisibleChanged (e); 544 } 545 OnPaint(PaintEventArgs e)546 protected override void OnPaint (PaintEventArgs e) 547 { 548 results.Add("OnPaint"); 549 base.OnPaint (e); 550 } 551 KeyPressA()552 public void KeyPressA() 553 { 554 Message m; 555 556 m = new Message(); 557 558 m.Msg = (int)WndMsg.WM_KEYDOWN; 559 m.HWnd = this.Handle; 560 m.WParam = (IntPtr)0x41; 561 m.LParam = (IntPtr)0x1e0001; 562 this.WndProc(ref m); 563 564 m.Msg = (int)WndMsg.WM_CHAR; 565 m.HWnd = this.Handle; 566 m.WParam = (IntPtr)0x61; 567 m.LParam = (IntPtr)0x1e0001; 568 this.WndProc(ref m); 569 570 m.Msg = (int)WndMsg.WM_KEYUP; 571 m.HWnd = this.Handle; 572 m.WParam = (IntPtr)0x41; 573 m.LParam = (IntPtr)unchecked((int)0xC01e0001); 574 this.WndProc(ref m); 575 } 576 KeyDownA()577 public void KeyDownA() 578 { 579 Message m; 580 581 m = new Message(); 582 583 m.Msg = (int)WndMsg.WM_KEYDOWN; 584 m.HWnd = this.Handle; 585 m.WParam = (IntPtr)0x41; 586 m.LParam = (IntPtr)0x1e0001; 587 this.WndProc(ref m); 588 589 m.Msg = (int)WndMsg.WM_CHAR; 590 m.HWnd = this.Handle; 591 m.WParam = (IntPtr)0x61; 592 m.LParam = (IntPtr)0x1e0001; 593 this.WndProc(ref m); 594 } 595 KeyUpA()596 public void KeyUpA() 597 { 598 Message m; 599 600 m = new Message(); 601 602 m.Msg = (int)WndMsg.WM_KEYUP; 603 m.HWnd = this.Handle; 604 m.WParam = (IntPtr)0x41; 605 m.LParam = (IntPtr)unchecked((int)0xC01e0001); 606 this.WndProc(ref m); 607 } 608 609 public ArrayList Results { 610 get { return results; } 611 } 612 } 613 614 [TestFixture] 615 [Ignore("Comparisons too strict")] 616 public class LabelTestEventsOrder : TestHelper 617 { ArrayListToString(ArrayList arrlist)618 public string [] ArrayListToString (ArrayList arrlist) 619 { 620 string [] retval = new string [arrlist.Count]; 621 for (int i = 0; i < arrlist.Count; i++) 622 retval[i] = (string)arrlist[i]; 623 return retval; 624 } 625 626 //private void OrderedAssert(string[] wanted, ArrayList found) { 627 // int last_target; 628 // bool seen; 629 // 630 // last_target = 0; 631 // 632 // for (int i = 0; i < wanted.Length; i++) { 633 // seen = false; 634 // for (int j = last_target; j < found.Count; j++) { 635 // if (wanted[i] == (string)found[j]) { 636 // seen = true; 637 // last_target = j + 1; 638 // break; 639 // } 640 // } 641 // 642 // if (!seen) { 643 // Console.WriteLine("Needed {0}", wanted[i]); 644 // } 645 // } 646 //} 647 PrintList(string name, ArrayList list)648 public void PrintList(string name, ArrayList list) { 649 Console.WriteLine("{0}", name); 650 for (int i = 0; i < list.Count; i++) { 651 Console.WriteLine(" {0}", list[i]); 652 } 653 Console.WriteLine(""); 654 } 655 656 657 [Test] CreateEventsOrder()658 public void CreateEventsOrder () 659 { 660 string[] EventsWanted = { 661 "OnHandleCreated", 662 "OnBindingContextChanged", 663 "OnBindingContextChanged" 664 }; 665 Form myform = new Form (); 666 myform.ShowInTaskbar = false; 667 myform.Visible = true; 668 MyLabel l = new MyLabel (); 669 myform.Controls.Add (l); 670 671 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 672 myform.Dispose(); 673 } 674 675 [Test] SizeChangedEventsOrder()676 public void SizeChangedEventsOrder () 677 { 678 string[] EventsWanted = { 679 "OnHandleCreated", 680 "OnBindingContextChanged", 681 "OnBindingContextChanged", 682 "OnSizeChanged", 683 "OnResize", 684 "OnInvalidated", 685 "OnLayout" 686 }; 687 Form myform = new Form (); 688 myform.ShowInTaskbar = false; 689 myform.Visible = true; 690 MyLabel l = new MyLabel (); 691 myform.Controls.Add (l); 692 l.Size = new Size (150, 20); 693 694 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 695 myform.Dispose(); 696 } 697 698 [Test] AutoSizeChangedEventsOrder()699 public void AutoSizeChangedEventsOrder () 700 { 701 string[] EventsWanted = { 702 "OnHandleCreated", 703 "OnBindingContextChanged", 704 "OnBindingContextChanged", 705 "OnSizeChanged", 706 "OnResize", 707 "OnInvalidated", 708 "OnLayout", 709 "OnAutoSizeChanged" 710 }; 711 Form myform = new Form (); 712 myform.ShowInTaskbar = false; 713 myform.Visible = true; 714 MyLabel l = new MyLabel (); 715 myform.Controls.Add (l); 716 l.AutoSize = true; 717 718 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 719 myform.Dispose(); 720 } 721 722 [Test] BackgroundImageChangedEventsOrder()723 public void BackgroundImageChangedEventsOrder () 724 { 725 string[] EventsWanted = { 726 "OnHandleCreated", 727 "OnBindingContextChanged", 728 "OnBindingContextChanged", 729 "OnBackgroundImageChanged", 730 "OnInvalidated" 731 }; 732 Form myform = new Form (); 733 myform.ShowInTaskbar = false; 734 myform.Visible = true; 735 MyLabel l = new MyLabel (); 736 myform.Controls.Add (l); 737 l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png"); 738 739 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 740 myform.Dispose(); 741 } 742 743 [Test] ImeModeChangedChangedEventsOrder()744 public void ImeModeChangedChangedEventsOrder () 745 { 746 string[] EventsWanted = { 747 "OnHandleCreated", 748 "OnBindingContextChanged", 749 "OnBindingContextChanged", 750 "OnImeModeChanged" 751 }; 752 Form myform = new Form (); 753 myform.ShowInTaskbar = false; 754 myform.Visible = true; 755 MyLabel l = new MyLabel (); 756 myform.Controls.Add (l); 757 l.ImeMode = ImeMode.Katakana; 758 759 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 760 myform.Dispose(); 761 } 762 763 [Test] KeyPressEventsOrder()764 public void KeyPressEventsOrder () 765 { 766 string[] EventsWanted = { 767 "OnHandleCreated", 768 "OnBindingContextChanged", 769 "OnBindingContextChanged", 770 "OnKeyDown,A", 771 "OnKeyPress,a", 772 "OnKeyUp,A" 773 }; 774 Form myform = new Form (); 775 myform.ShowInTaskbar = false; 776 myform.Visible = true; 777 MyLabel l = new MyLabel (); 778 myform.Controls.Add (l); 779 l.KeyPressA (); 780 781 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 782 myform.Dispose(); 783 } 784 785 [Test] TabStopChangedEventsOrder()786 public void TabStopChangedEventsOrder () 787 { 788 string[] EventsWanted = { 789 "OnHandleCreated", 790 "OnBindingContextChanged", 791 "OnBindingContextChanged" 792 }; 793 Form myform = new Form (); 794 myform.ShowInTaskbar = false; 795 myform.Visible = true; 796 MyLabel l = new MyLabel (); 797 myform.Controls.Add (l); 798 l.TabStop = true; 799 PrintList("TabStopChanged", l.Results); 800 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 801 myform.Dispose(); 802 } 803 804 [Test] TextAlignChangedEventsOrder()805 public void TextAlignChangedEventsOrder () 806 { 807 string[] EventsWanted = { 808 "OnHandleCreated", 809 "OnBindingContextChanged", 810 "OnBindingContextChanged", 811 "OnInvalidated" 812 }; 813 Form myform = new Form (); 814 myform.ShowInTaskbar = false; 815 myform.Visible = true; 816 MyLabel l = new MyLabel (); 817 myform.Controls.Add (l); 818 l.TextAlign = ContentAlignment.TopRight; 819 820 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 821 myform.Dispose(); 822 } 823 824 [Test] InvalidateEventsOrder()825 public void InvalidateEventsOrder () 826 { 827 Rectangle rect = new Rectangle (new Point (0,0), new Size (2, 2)); 828 829 Form myform = new Form (); 830 myform.ShowInTaskbar = false; 831 myform.Visible = true; 832 MyLabelInvalidate l = new MyLabelInvalidate (); 833 myform.Controls.Add (l); 834 l.TextAlign = ContentAlignment.TopRight; 835 836 string [] EventsWanted = { 837 "OnHandleCreated", 838 "OnBindingContextChanged", 839 "OnBindingContextChanged", 840 "OnInvalidated,{X=0,Y=0,Width="+l.Size.Width+",Height="+l.Size.Height+"}", 841 "OnInvalidated," + rect.ToString () 842 }; 843 844 l.Invalidate (rect); 845 846 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 847 myform.Dispose(); 848 } 849 850 [Test] PaintEventsOrder()851 public void PaintEventsOrder () 852 { 853 string[] EventsWanted = { 854 "OnHandleCreated", 855 "OnBindingContextChanged", 856 "OnBindingContextChanged", 857 "OnInvalidated", 858 "OnInvalidated", 859 "OnPaint" 860 }; 861 Form myform = new Form (); 862 myform.ShowInTaskbar = false; 863 myform.Visible = true; 864 MyLabel l = new MyLabel (); 865 myform.Controls.Add (l); 866 l.TextAlign = ContentAlignment.TopRight; 867 l.Refresh (); 868 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 869 myform.Dispose(); 870 } 871 872 } 873 874 public class MyLabel2 : Label 875 { 876 protected ArrayList results = new ArrayList (); MyLabel2()877 public MyLabel2 () : base () 878 { 879 this.AutoSizeChanged += new EventHandler (AutoSizeChanged_Handler); 880 this.HandleCreated += new EventHandler (HandleCreated_Handler); 881 this.BindingContextChanged += new EventHandler (BindingContextChanged_Handler); 882 this.BackgroundImageChanged += new EventHandler (BackgroundImageChanged_Handler); 883 this.ImeModeChanged += new EventHandler (ImeModeChanged_Handler); 884 this.KeyDown += new KeyEventHandler (KeyDown_Handler); 885 this.KeyPress += new KeyPressEventHandler (KeyPress_Handler); 886 this.KeyUp += new KeyEventHandler (KeyUp_Handler); 887 this.Invalidated += new InvalidateEventHandler (Invalidated_Handler); 888 this.Resize += new EventHandler (Resize_Handler); 889 this.SizeChanged += new EventHandler (SizeChanged_Handler); 890 this.Layout += new LayoutEventHandler (Layout_Handler); 891 this.VisibleChanged += new EventHandler (VisibleChanged_Handler); 892 this.Paint += new PaintEventHandler (Paint_Handler); 893 } 894 AutoSizeChanged_Handler(object sender, EventArgs e)895 protected void AutoSizeChanged_Handler (object sender, EventArgs e) 896 { 897 results.Add ("AutoSizeChanged"); 898 } 899 BackgroundImageChanged_Handler(object sender, EventArgs e)900 protected void BackgroundImageChanged_Handler (object sender, EventArgs e) 901 { 902 results.Add ("BackgroundImageChanged"); 903 } 904 ImeModeChanged_Handler(object sender, EventArgs e)905 protected void ImeModeChanged_Handler (object sender, EventArgs e) 906 { 907 results.Add ("ImeModeChanged"); 908 } 909 KeyDown_Handler(object sender, KeyEventArgs e)910 protected void KeyDown_Handler (object sender, KeyEventArgs e) 911 { 912 results.Add ("KeyDown,"+(char)e.KeyValue); 913 } 914 KeyPress_Handler(object sender, KeyPressEventArgs e)915 protected void KeyPress_Handler (object sender, KeyPressEventArgs e) 916 { 917 results.Add ("KeyPress,"+e.KeyChar.ToString ()); 918 } 919 KeyUp_Handler(object sender, KeyEventArgs e)920 protected void KeyUp_Handler (object sender, KeyEventArgs e) 921 { 922 results.Add ("KeyUp,"+(char)e.KeyValue); 923 } 924 HandleCreated_Handler(object sender, EventArgs e)925 protected void HandleCreated_Handler (object sender, EventArgs e) 926 { 927 results.Add ("HandleCreated"); 928 } 929 BindingContextChanged_Handler(object sender, EventArgs e)930 protected void BindingContextChanged_Handler (object sender, EventArgs e) 931 { 932 results.Add ("BindingContextChanged"); 933 } 934 Invalidated_Handler(object sender, InvalidateEventArgs e)935 protected void Invalidated_Handler (object sender, InvalidateEventArgs e) 936 { 937 results.Add("Invalidated"); 938 } 939 Resize_Handler(object sender, EventArgs e)940 protected void Resize_Handler (object sender, EventArgs e) 941 { 942 results.Add("Resize"); 943 } 944 SizeChanged_Handler(object sender, EventArgs e)945 protected void SizeChanged_Handler (object sender, EventArgs e) 946 { 947 results.Add("SizeChanged"); 948 } 949 Layout_Handler(object sender, LayoutEventArgs e)950 protected void Layout_Handler (object sender, LayoutEventArgs e) 951 { 952 results.Add("Layout"); 953 } 954 VisibleChanged_Handler(object sender, EventArgs e)955 protected void VisibleChanged_Handler (object sender, EventArgs e) 956 { 957 results.Add("VisibleChanged"); 958 } 959 Paint_Handler(object sender, PaintEventArgs e)960 protected void Paint_Handler (object sender, PaintEventArgs e) 961 { 962 results.Add("Paint"); 963 } 964 KeyPressA()965 public void KeyPressA() 966 { 967 Message m; 968 969 m = new Message(); 970 971 m.Msg = (int)WndMsg.WM_KEYDOWN; 972 m.HWnd = this.Handle; 973 m.WParam = (IntPtr)0x41; 974 m.LParam = (IntPtr)0x1e0001; 975 this.WndProc(ref m); 976 977 m.Msg = (int)WndMsg.WM_CHAR; 978 m.HWnd = this.Handle; 979 m.WParam = (IntPtr)0x61; 980 m.LParam = (IntPtr)0x1e0001; 981 this.WndProc(ref m); 982 983 m.Msg = (int)WndMsg.WM_KEYUP; 984 m.HWnd = this.Handle; 985 m.WParam = (IntPtr)0x41; 986 m.LParam = (IntPtr)unchecked((int)0xC01e0001); 987 this.WndProc(ref m); 988 } 989 KeyDownA()990 public void KeyDownA() 991 { 992 Message m; 993 994 m = new Message(); 995 996 m.Msg = (int)WndMsg.WM_KEYDOWN; 997 m.HWnd = this.Handle; 998 m.WParam = (IntPtr)0x41; 999 m.LParam = (IntPtr)0x1e0001; 1000 this.WndProc(ref m); 1001 1002 m.Msg = (int)WndMsg.WM_CHAR; 1003 m.HWnd = this.Handle; 1004 m.WParam = (IntPtr)0x61; 1005 m.LParam = (IntPtr)0x1e0001; 1006 this.WndProc(ref m); 1007 } 1008 KeyUpA()1009 public void KeyUpA() 1010 { 1011 Message m; 1012 1013 m = new Message(); 1014 1015 m.Msg = (int)WndMsg.WM_KEYUP; 1016 m.HWnd = this.Handle; 1017 m.WParam = (IntPtr)0x41; 1018 m.LParam = (IntPtr)unchecked((int)0xC01e0001); 1019 this.WndProc(ref m); 1020 } 1021 1022 public ArrayList Results { 1023 get { return results; } 1024 } 1025 } 1026 1027 [TestFixture] 1028 [Ignore("Comparisons too strict")] 1029 public class LabelTestEventsOrder2 : TestHelper 1030 { ArrayListToString(ArrayList arrlist)1031 public string [] ArrayListToString (ArrayList arrlist) 1032 { 1033 string [] retval = new string [arrlist.Count]; 1034 for (int i = 0; i < arrlist.Count; i++) 1035 retval[i] = (string)arrlist[i]; 1036 return retval; 1037 } 1038 1039 [Test] CreateEventsOrder()1040 public void CreateEventsOrder () 1041 { 1042 string[] EventsWanted = { 1043 "HandleCreated", 1044 "BindingContextChanged", 1045 "BindingContextChanged" 1046 }; 1047 Form myform = new Form (); 1048 myform.ShowInTaskbar = false; 1049 myform.Visible = true; 1050 MyLabel2 l = new MyLabel2 (); 1051 myform.Controls.Add (l); 1052 1053 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 1054 myform.Dispose(); 1055 } 1056 1057 [Test] SizeChangedEventsOrder()1058 public void SizeChangedEventsOrder () 1059 { 1060 string[] EventsWanted = { 1061 "HandleCreated", 1062 "BindingContextChanged", 1063 "BindingContextChanged", 1064 "Invalidated", 1065 "Layout", 1066 "Resize", 1067 "SizeChanged" 1068 }; 1069 Form myform = new Form (); 1070 myform.ShowInTaskbar = false; 1071 myform.Visible = true; 1072 MyLabel2 l = new MyLabel2 (); 1073 myform.Controls.Add (l); 1074 l.Size = new Size (150, 20); 1075 1076 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 1077 myform.Dispose(); 1078 } 1079 1080 [Test] AutoSizeChangedEventsOrder()1081 public void AutoSizeChangedEventsOrder () 1082 { 1083 string[] EventsWanted = { 1084 "HandleCreated", 1085 "BindingContextChanged", 1086 "BindingContextChanged", 1087 "Invalidated", 1088 "Layout", 1089 "Resize", 1090 "SizeChanged", 1091 "AutoSizeChanged" 1092 }; 1093 Form myform = new Form (); 1094 myform.ShowInTaskbar = false; 1095 myform.Visible = true; 1096 MyLabel2 l = new MyLabel2 (); 1097 myform.Controls.Add (l); 1098 l.AutoSize = true; 1099 1100 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 1101 myform.Dispose(); 1102 } 1103 1104 [Test] BackgroundImageChangedEventsOrder()1105 public void BackgroundImageChangedEventsOrder () 1106 { 1107 string[] EventsWanted = { 1108 "HandleCreated", 1109 "BindingContextChanged", 1110 "BindingContextChanged", 1111 "Invalidated", 1112 "BackgroundImageChanged" 1113 }; 1114 Form myform = new Form (); 1115 myform.ShowInTaskbar = false; 1116 myform.Visible = true; 1117 MyLabel2 l = new MyLabel2 (); 1118 myform.Controls.Add (l); 1119 l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png"); 1120 1121 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 1122 myform.Dispose(); 1123 } 1124 1125 [Test] ImeModeChangedChangedEventsOrder()1126 public void ImeModeChangedChangedEventsOrder () 1127 { 1128 string[] EventsWanted = { 1129 "HandleCreated", 1130 "BindingContextChanged", 1131 "BindingContextChanged", 1132 "ImeModeChanged" 1133 }; 1134 Form myform = new Form (); 1135 myform.ShowInTaskbar = false; 1136 myform.Visible = true; 1137 MyLabel2 l = new MyLabel2 (); 1138 myform.Controls.Add (l); 1139 l.ImeMode = ImeMode.Katakana; 1140 1141 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 1142 myform.Dispose(); 1143 } 1144 1145 [Test] KeyPressEventsOrder()1146 public void KeyPressEventsOrder () 1147 { 1148 string[] EventsWanted = { 1149 "HandleCreated", 1150 "BindingContextChanged", 1151 "BindingContextChanged", 1152 "KeyDown,A", 1153 "KeyPress,a", 1154 "KeyUp,A" 1155 }; 1156 Form myform = new Form (); 1157 myform.ShowInTaskbar = false; 1158 myform.Visible = true; 1159 MyLabel2 l = new MyLabel2 (); 1160 myform.Controls.Add (l); 1161 l.KeyPressA (); 1162 1163 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 1164 myform.Dispose(); 1165 } 1166 1167 [Test] TabStopChangedEventsOrder()1168 public void TabStopChangedEventsOrder () 1169 { 1170 string[] EventsWanted = { 1171 "HandleCreated", 1172 "BindingContextChanged", 1173 "BindingContextChanged" 1174 }; 1175 Form myform = new Form (); 1176 myform.ShowInTaskbar = false; 1177 myform.Visible = true; 1178 MyLabel2 l = new MyLabel2 (); 1179 myform.Controls.Add (l); 1180 l.TabStop = true; 1181 1182 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 1183 myform.Dispose(); 1184 } 1185 1186 [Test] TextAlignChangedEventsOrder()1187 public void TextAlignChangedEventsOrder () 1188 { 1189 string[] EventsWanted = { 1190 "HandleCreated", 1191 "BindingContextChanged", 1192 "BindingContextChanged", 1193 "Invalidated" 1194 }; 1195 Form myform = new Form (); 1196 myform.ShowInTaskbar = false; 1197 myform.Visible = true; 1198 MyLabel2 l = new MyLabel2 (); 1199 myform.Controls.Add (l); 1200 l.TextAlign = ContentAlignment.TopRight; 1201 1202 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 1203 myform.Dispose(); 1204 } 1205 1206 [Test] PaintEventsOrder()1207 public void PaintEventsOrder () 1208 { 1209 string[] EventsWanted = { 1210 "HandleCreated", 1211 "BindingContextChanged", 1212 "BindingContextChanged", 1213 "Invalidated", 1214 "Invalidated", 1215 "Paint" 1216 }; 1217 Form myform = new Form (); 1218 myform.ShowInTaskbar = false; 1219 myform.Visible = true; 1220 MyLabel2 l = new MyLabel2 (); 1221 myform.Controls.Add (l); 1222 l.TextAlign = ContentAlignment.TopRight; 1223 l.Refresh (); 1224 Assert.AreEqual (EventsWanted, ArrayListToString (l.Results)); 1225 myform.Dispose(); 1226 } 1227 1228 } 1229 1230 } 1231