LabelTest.cs 28 KB

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