LabelTest.cs 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098
  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. #if NET_2_0
  167. [Ignore ("AutoSize moved to Control in 2.0, Label.AutoSize needs to be reworked a bit.")]
  168. #endif
  169. [Test]
  170. public void AutoSizeChangedChangedTest ()
  171. {
  172. Form myform = new Form ();
  173. myform.ShowInTaskbar = false;
  174. myform.Visible = true;
  175. Label l = new Label ();
  176. l.Visible = true;
  177. myform.Controls.Add (l);
  178. l.AutoSizeChanged += new EventHandler (Label_EventHandler);
  179. l.AutoSize = true;
  180. Assert.AreEqual (true, eventhandled, "B4");
  181. eventhandled = false;
  182. myform.Dispose();
  183. }
  184. [Test]
  185. public void BackgroundImageChangedTest ()
  186. {
  187. Form myform = new Form ();
  188. myform.ShowInTaskbar = false;
  189. myform.Visible = true;
  190. Label l = new Label ();
  191. l.Visible = true;
  192. myform.Controls.Add (l);
  193. l.BackgroundImageChanged += new EventHandler (Label_EventHandler);
  194. l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");
  195. Assert.AreEqual (true, eventhandled, "B4");
  196. eventhandled = false;
  197. myform.Dispose();
  198. }
  199. [Test]
  200. public void ImeModeChangedTest ()
  201. {
  202. Form myform = new Form ();
  203. myform.ShowInTaskbar = false;
  204. myform.Visible = true;
  205. Label l = new Label ();
  206. l.Visible = true;
  207. myform.Controls.Add (l);
  208. l.ImeModeChanged += new EventHandler (Label_EventHandler);
  209. l.ImeMode = ImeMode.Katakana;
  210. Assert.AreEqual (true, eventhandled, "I16");
  211. eventhandled = false;
  212. myform.Dispose();
  213. }
  214. [Test]
  215. public void KeyDownTest ()
  216. {
  217. Form myform = new Form ();
  218. myform.ShowInTaskbar = false;
  219. myform.Visible = true;
  220. MyLabel l = new MyLabel ();
  221. l.Visible = true;
  222. myform.Controls.Add (l);
  223. l.KeyDown += new KeyEventHandler (Label_KeyDownEventHandler);
  224. l.KeyPressA ();
  225. Assert.AreEqual (true, eventhandled, "K1");
  226. eventhandled = false;
  227. myform.Dispose();
  228. }
  229. [Test]
  230. public void TabStopChangedTest ()
  231. {
  232. Form myform = new Form ();
  233. myform.ShowInTaskbar = false;
  234. myform.Visible = true;
  235. Label l = new Label ();
  236. l.Visible = true;
  237. myform.Controls.Add (l);
  238. l.TabStopChanged += new EventHandler (Label_EventHandler);
  239. l.TabStop = true;
  240. Assert.AreEqual (true, eventhandled, "T3");
  241. eventhandled = false;
  242. myform.Dispose();
  243. }
  244. [Test]
  245. public void TextAlignChangedTest ()
  246. {
  247. Form myform = new Form ();
  248. myform.ShowInTaskbar = false;
  249. myform.Visible = true;
  250. Label l = new Label ();
  251. l.Visible = true;
  252. myform.Controls.Add (l);
  253. l.TextAlignChanged += new EventHandler (Label_EventHandler);
  254. l.TextAlign = ContentAlignment.TopRight;
  255. Assert.AreEqual (true, eventhandled, "T4");
  256. eventhandled = false;
  257. myform.Dispose();
  258. }
  259. }
  260. public class MyLabelInvalidate : MyLabel
  261. {
  262. //protected ArrayList results = new ArrayList ();
  263. public MyLabelInvalidate () : base ()
  264. {}
  265. protected override void OnInvalidated (InvalidateEventArgs e)
  266. {
  267. base.OnInvalidated (e);
  268. string res = (string)results [results.Count - 1];
  269. results [results.Count - 1 ] = string.Concat (res, "," + e.InvalidRect.ToString ());
  270. //results.Add ("OnInvalidate," + e.InvalidRect.ToString ());
  271. }
  272. //public ArrayList Results {
  273. // get { return results; }
  274. //}
  275. }
  276. public class MyLabel : Label
  277. {
  278. protected ArrayList results = new ArrayList ();
  279. public MyLabel () : base ()
  280. { }
  281. protected override void OnAutoSizeChanged (EventArgs e)
  282. {
  283. results.Add ("OnAutoSizeChanged");
  284. base.OnAutoSizeChanged (e);
  285. }
  286. protected override void OnBackgroundImageChanged (EventArgs e)
  287. {
  288. results.Add ("OnBackgroundImageChanged");
  289. base.OnBackgroundImageChanged (e);
  290. }
  291. protected override void OnImeModeChanged (EventArgs e)
  292. {
  293. results.Add ("OnImeModeChanged");
  294. base.OnImeModeChanged (e);
  295. }
  296. protected override void OnKeyDown (KeyEventArgs e)
  297. {
  298. results.Add ("OnKeyDown,"+(char)e.KeyValue);
  299. base.OnKeyDown (e);
  300. }
  301. protected override void OnKeyPress (KeyPressEventArgs e)
  302. {
  303. results.Add ("OnKeyPress,"+e.KeyChar.ToString ());
  304. base.OnKeyPress (e);
  305. }
  306. protected override void OnKeyUp (KeyEventArgs e)
  307. {
  308. results.Add ("OnKeyUp,"+(char)e.KeyValue);
  309. base.OnKeyUp (e);
  310. }
  311. protected override void OnHandleCreated (EventArgs e)
  312. {
  313. results.Add ("OnHandleCreated");
  314. base.OnHandleCreated (e);
  315. }
  316. protected override void OnBindingContextChanged (EventArgs e)
  317. {
  318. results.Add ("OnBindingContextChanged");
  319. base.OnBindingContextChanged (e);
  320. }
  321. protected override void OnInvalidated (InvalidateEventArgs e)
  322. {
  323. results.Add("OnInvalidated");
  324. base.OnInvalidated (e);
  325. }
  326. protected override void OnResize (EventArgs e)
  327. {
  328. results.Add("OnResize");
  329. base.OnResize (e);
  330. }
  331. protected override void OnSizeChanged (EventArgs e)
  332. {
  333. results.Add("OnSizeChanged");
  334. base.OnSizeChanged (e);
  335. }
  336. protected override void OnLayout (LayoutEventArgs e)
  337. {
  338. results.Add("OnLayout");
  339. base.OnLayout (e);
  340. }
  341. protected override void OnVisibleChanged (EventArgs e)
  342. {
  343. results.Add("OnVisibleChanged");
  344. base.OnVisibleChanged (e);
  345. }
  346. protected override void OnPaint (PaintEventArgs e)
  347. {
  348. results.Add("OnPaint");
  349. base.OnPaint (e);
  350. }
  351. public void KeyPressA()
  352. {
  353. Message m;
  354. m = new Message();
  355. m.Msg = (int)WndMsg.WM_KEYDOWN;
  356. m.HWnd = this.Handle;
  357. m.WParam = (IntPtr)0x41;
  358. m.LParam = (IntPtr)0x1e0001;
  359. this.WndProc(ref m);
  360. m.Msg = (int)WndMsg.WM_CHAR;
  361. m.HWnd = this.Handle;
  362. m.WParam = (IntPtr)0x61;
  363. m.LParam = (IntPtr)0x1e0001;
  364. this.WndProc(ref m);
  365. m.Msg = (int)WndMsg.WM_KEYUP;
  366. m.HWnd = this.Handle;
  367. m.WParam = (IntPtr)0x41;
  368. m.LParam = (IntPtr)unchecked((int)0xC01e0001);
  369. this.WndProc(ref m);
  370. }
  371. public void KeyDownA()
  372. {
  373. Message m;
  374. m = new Message();
  375. m.Msg = (int)WndMsg.WM_KEYDOWN;
  376. m.HWnd = this.Handle;
  377. m.WParam = (IntPtr)0x41;
  378. m.LParam = (IntPtr)0x1e0001;
  379. this.WndProc(ref m);
  380. m.Msg = (int)WndMsg.WM_CHAR;
  381. m.HWnd = this.Handle;
  382. m.WParam = (IntPtr)0x61;
  383. m.LParam = (IntPtr)0x1e0001;
  384. this.WndProc(ref m);
  385. }
  386. public void KeyUpA()
  387. {
  388. Message m;
  389. m = new Message();
  390. m.Msg = (int)WndMsg.WM_KEYUP;
  391. m.HWnd = this.Handle;
  392. m.WParam = (IntPtr)0x41;
  393. m.LParam = (IntPtr)unchecked((int)0xC01e0001);
  394. this.WndProc(ref m);
  395. }
  396. public ArrayList Results {
  397. get { return results; }
  398. }
  399. }
  400. [TestFixture]
  401. [Ignore("Comparisons too strict")]
  402. public class LabelTestEventsOrder
  403. {
  404. public string [] ArrayListToString (ArrayList arrlist)
  405. {
  406. string [] retval = new string [arrlist.Count];
  407. for (int i = 0; i < arrlist.Count; i++)
  408. retval[i] = (string)arrlist[i];
  409. return retval;
  410. }
  411. private void OrderedAssert(string[] wanted, ArrayList found) {
  412. int last_target;
  413. bool seen;
  414. last_target = 0;
  415. for (int i = 0; i < wanted.Length; i++) {
  416. seen = false;
  417. for (int j = last_target; j < found.Count; j++) {
  418. if (wanted[i] == (string)found[j]) {
  419. seen = true;
  420. last_target = j + 1;
  421. break;
  422. }
  423. }
  424. if (!seen) {
  425. Console.WriteLine("Needed {0}", wanted[i]);
  426. }
  427. }
  428. }
  429. public void PrintList(string name, ArrayList list) {
  430. Console.WriteLine("{0}", name);
  431. for (int i = 0; i < list.Count; i++) {
  432. Console.WriteLine(" {0}", list[i]);
  433. }
  434. Console.WriteLine("");
  435. }
  436. [Test]
  437. public void CreateEventsOrder ()
  438. {
  439. string[] EventsWanted = {
  440. "OnHandleCreated",
  441. "OnBindingContextChanged",
  442. "OnBindingContextChanged"
  443. };
  444. Form myform = new Form ();
  445. myform.ShowInTaskbar = false;
  446. myform.Visible = true;
  447. MyLabel l = new MyLabel ();
  448. myform.Controls.Add (l);
  449. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  450. myform.Dispose();
  451. }
  452. [Test]
  453. public void SizeChangedEventsOrder ()
  454. {
  455. string[] EventsWanted = {
  456. "OnHandleCreated",
  457. "OnBindingContextChanged",
  458. "OnBindingContextChanged",
  459. "OnSizeChanged",
  460. "OnResize",
  461. "OnInvalidated",
  462. "OnLayout"
  463. };
  464. Form myform = new Form ();
  465. myform.ShowInTaskbar = false;
  466. myform.Visible = true;
  467. MyLabel l = new MyLabel ();
  468. myform.Controls.Add (l);
  469. l.Size = new Size (150, 20);
  470. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  471. myform.Dispose();
  472. }
  473. [Test]
  474. public void AutoSizeChangedEventsOrder ()
  475. {
  476. string[] EventsWanted = {
  477. "OnHandleCreated",
  478. "OnBindingContextChanged",
  479. "OnBindingContextChanged",
  480. "OnSizeChanged",
  481. "OnResize",
  482. "OnInvalidated",
  483. "OnLayout",
  484. "OnAutoSizeChanged"
  485. };
  486. Form myform = new Form ();
  487. myform.ShowInTaskbar = false;
  488. myform.Visible = true;
  489. MyLabel l = new MyLabel ();
  490. myform.Controls.Add (l);
  491. l.AutoSize = true;
  492. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  493. myform.Dispose();
  494. }
  495. [Test]
  496. public void BackgroundImageChangedEventsOrder ()
  497. {
  498. string[] EventsWanted = {
  499. "OnHandleCreated",
  500. "OnBindingContextChanged",
  501. "OnBindingContextChanged",
  502. "OnBackgroundImageChanged",
  503. "OnInvalidated"
  504. };
  505. Form myform = new Form ();
  506. myform.ShowInTaskbar = false;
  507. myform.Visible = true;
  508. MyLabel l = new MyLabel ();
  509. myform.Controls.Add (l);
  510. l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");
  511. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  512. myform.Dispose();
  513. }
  514. [Test]
  515. public void ImeModeChangedChangedEventsOrder ()
  516. {
  517. string[] EventsWanted = {
  518. "OnHandleCreated",
  519. "OnBindingContextChanged",
  520. "OnBindingContextChanged",
  521. "OnImeModeChanged"
  522. };
  523. Form myform = new Form ();
  524. myform.ShowInTaskbar = false;
  525. myform.Visible = true;
  526. MyLabel l = new MyLabel ();
  527. myform.Controls.Add (l);
  528. l.ImeMode = ImeMode.Katakana;
  529. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  530. myform.Dispose();
  531. }
  532. [Test]
  533. public void KeyPressEventsOrder ()
  534. {
  535. string[] EventsWanted = {
  536. "OnHandleCreated",
  537. "OnBindingContextChanged",
  538. "OnBindingContextChanged",
  539. "OnKeyDown,A",
  540. "OnKeyPress,a",
  541. "OnKeyUp,A"
  542. };
  543. Form myform = new Form ();
  544. myform.ShowInTaskbar = false;
  545. myform.Visible = true;
  546. MyLabel l = new MyLabel ();
  547. myform.Controls.Add (l);
  548. l.KeyPressA ();
  549. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  550. myform.Dispose();
  551. }
  552. [Test]
  553. public void TabStopChangedEventsOrder ()
  554. {
  555. string[] EventsWanted = {
  556. "OnHandleCreated",
  557. "OnBindingContextChanged",
  558. "OnBindingContextChanged"
  559. };
  560. Form myform = new Form ();
  561. myform.ShowInTaskbar = false;
  562. myform.Visible = true;
  563. MyLabel l = new MyLabel ();
  564. myform.Controls.Add (l);
  565. l.TabStop = true;
  566. PrintList("TabStopChanged", l.Results);
  567. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  568. myform.Dispose();
  569. }
  570. [Test]
  571. public void TextAlignChangedEventsOrder ()
  572. {
  573. string[] EventsWanted = {
  574. "OnHandleCreated",
  575. "OnBindingContextChanged",
  576. "OnBindingContextChanged",
  577. "OnInvalidated"
  578. };
  579. Form myform = new Form ();
  580. myform.ShowInTaskbar = false;
  581. myform.Visible = true;
  582. MyLabel l = new MyLabel ();
  583. myform.Controls.Add (l);
  584. l.TextAlign = ContentAlignment.TopRight;
  585. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  586. myform.Dispose();
  587. }
  588. [Test]
  589. public void InvalidateEventsOrder ()
  590. {
  591. Rectangle rect = new Rectangle (new Point (0,0), new Size (2, 2));
  592. Form myform = new Form ();
  593. myform.ShowInTaskbar = false;
  594. myform.Visible = true;
  595. MyLabelInvalidate l = new MyLabelInvalidate ();
  596. myform.Controls.Add (l);
  597. l.TextAlign = ContentAlignment.TopRight;
  598. string [] EventsWanted = {
  599. "OnHandleCreated",
  600. "OnBindingContextChanged",
  601. "OnBindingContextChanged",
  602. "OnInvalidated,{X=0,Y=0,Width="+l.Size.Width+",Height="+l.Size.Height+"}",
  603. "OnInvalidated," + rect.ToString ()
  604. };
  605. l.Invalidate (rect);
  606. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  607. myform.Dispose();
  608. }
  609. [Test]
  610. public void PaintEventsOrder ()
  611. {
  612. string[] EventsWanted = {
  613. "OnHandleCreated",
  614. "OnBindingContextChanged",
  615. "OnBindingContextChanged",
  616. "OnInvalidated",
  617. "OnInvalidated",
  618. "OnPaint"
  619. };
  620. Form myform = new Form ();
  621. myform.ShowInTaskbar = false;
  622. myform.Visible = true;
  623. MyLabel l = new MyLabel ();
  624. myform.Controls.Add (l);
  625. l.TextAlign = ContentAlignment.TopRight;
  626. l.Refresh ();
  627. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  628. myform.Dispose();
  629. }
  630. }
  631. public class MyLabel2 : Label
  632. {
  633. protected ArrayList results = new ArrayList ();
  634. public MyLabel2 () : base ()
  635. {
  636. this.AutoSizeChanged += new EventHandler (AutoSizeChanged_Handler);
  637. this.HandleCreated += new EventHandler (HandleCreated_Handler);
  638. this.BindingContextChanged += new EventHandler (BindingContextChanged_Handler);
  639. this.BackgroundImageChanged += new EventHandler (BackgroundImageChanged_Handler);
  640. this.ImeModeChanged += new EventHandler (ImeModeChanged_Handler);
  641. this.KeyDown += new KeyEventHandler (KeyDown_Handler);
  642. this.KeyPress += new KeyPressEventHandler (KeyPress_Handler);
  643. this.KeyUp += new KeyEventHandler (KeyUp_Handler);
  644. this.Invalidated += new InvalidateEventHandler (Invalidated_Handler);
  645. this.Resize += new EventHandler (Resize_Handler);
  646. this.SizeChanged += new EventHandler (SizeChanged_Handler);
  647. this.Layout += new LayoutEventHandler (Layout_Handler);
  648. this.VisibleChanged += new EventHandler (VisibleChanged_Handler);
  649. this.Paint += new PaintEventHandler (Paint_Handler);
  650. }
  651. protected void AutoSizeChanged_Handler (object sender, EventArgs e)
  652. {
  653. results.Add ("AutoSizeChanged");
  654. }
  655. protected void BackgroundImageChanged_Handler (object sender, EventArgs e)
  656. {
  657. results.Add ("BackgroundImageChanged");
  658. }
  659. protected void ImeModeChanged_Handler (object sender, EventArgs e)
  660. {
  661. results.Add ("ImeModeChanged");
  662. }
  663. protected void KeyDown_Handler (object sender, KeyEventArgs e)
  664. {
  665. results.Add ("KeyDown,"+(char)e.KeyValue);
  666. }
  667. protected void KeyPress_Handler (object sender, KeyPressEventArgs e)
  668. {
  669. results.Add ("KeyPress,"+e.KeyChar.ToString ());
  670. }
  671. protected void KeyUp_Handler (object sender, KeyEventArgs e)
  672. {
  673. results.Add ("KeyUp,"+(char)e.KeyValue);
  674. }
  675. protected void HandleCreated_Handler (object sender, EventArgs e)
  676. {
  677. results.Add ("HandleCreated");
  678. }
  679. protected void BindingContextChanged_Handler (object sender, EventArgs e)
  680. {
  681. results.Add ("BindingContextChanged");
  682. }
  683. protected void Invalidated_Handler (object sender, InvalidateEventArgs e)
  684. {
  685. results.Add("Invalidated");
  686. }
  687. protected void Resize_Handler (object sender, EventArgs e)
  688. {
  689. results.Add("Resize");
  690. }
  691. protected void SizeChanged_Handler (object sender, EventArgs e)
  692. {
  693. results.Add("SizeChanged");
  694. }
  695. protected void Layout_Handler (object sender, LayoutEventArgs e)
  696. {
  697. results.Add("Layout");
  698. }
  699. protected void VisibleChanged_Handler (object sender, EventArgs e)
  700. {
  701. results.Add("VisibleChanged");
  702. }
  703. protected void Paint_Handler (object sender, PaintEventArgs e)
  704. {
  705. results.Add("Paint");
  706. }
  707. public void KeyPressA()
  708. {
  709. Message m;
  710. m = new Message();
  711. m.Msg = (int)WndMsg.WM_KEYDOWN;
  712. m.HWnd = this.Handle;
  713. m.WParam = (IntPtr)0x41;
  714. m.LParam = (IntPtr)0x1e0001;
  715. this.WndProc(ref m);
  716. m.Msg = (int)WndMsg.WM_CHAR;
  717. m.HWnd = this.Handle;
  718. m.WParam = (IntPtr)0x61;
  719. m.LParam = (IntPtr)0x1e0001;
  720. this.WndProc(ref m);
  721. m.Msg = (int)WndMsg.WM_KEYUP;
  722. m.HWnd = this.Handle;
  723. m.WParam = (IntPtr)0x41;
  724. m.LParam = (IntPtr)unchecked((int)0xC01e0001);
  725. this.WndProc(ref m);
  726. }
  727. public void KeyDownA()
  728. {
  729. Message m;
  730. m = new Message();
  731. m.Msg = (int)WndMsg.WM_KEYDOWN;
  732. m.HWnd = this.Handle;
  733. m.WParam = (IntPtr)0x41;
  734. m.LParam = (IntPtr)0x1e0001;
  735. this.WndProc(ref m);
  736. m.Msg = (int)WndMsg.WM_CHAR;
  737. m.HWnd = this.Handle;
  738. m.WParam = (IntPtr)0x61;
  739. m.LParam = (IntPtr)0x1e0001;
  740. this.WndProc(ref m);
  741. }
  742. public void KeyUpA()
  743. {
  744. Message m;
  745. m = new Message();
  746. m.Msg = (int)WndMsg.WM_KEYUP;
  747. m.HWnd = this.Handle;
  748. m.WParam = (IntPtr)0x41;
  749. m.LParam = (IntPtr)unchecked((int)0xC01e0001);
  750. this.WndProc(ref m);
  751. }
  752. public ArrayList Results {
  753. get { return results; }
  754. }
  755. }
  756. [TestFixture]
  757. [Ignore("Comparisons too strict")]
  758. public class LabelTestEventsOrder2
  759. {
  760. public string [] ArrayListToString (ArrayList arrlist)
  761. {
  762. string [] retval = new string [arrlist.Count];
  763. for (int i = 0; i < arrlist.Count; i++)
  764. retval[i] = (string)arrlist[i];
  765. return retval;
  766. }
  767. [Test]
  768. public void CreateEventsOrder ()
  769. {
  770. string[] EventsWanted = {
  771. "HandleCreated",
  772. "BindingContextChanged",
  773. "BindingContextChanged"
  774. };
  775. Form myform = new Form ();
  776. myform.ShowInTaskbar = false;
  777. myform.Visible = true;
  778. MyLabel2 l = new MyLabel2 ();
  779. myform.Controls.Add (l);
  780. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  781. myform.Dispose();
  782. }
  783. [Test]
  784. public void SizeChangedEventsOrder ()
  785. {
  786. string[] EventsWanted = {
  787. "HandleCreated",
  788. "BindingContextChanged",
  789. "BindingContextChanged",
  790. "Invalidated",
  791. "Layout",
  792. "Resize",
  793. "SizeChanged"
  794. };
  795. Form myform = new Form ();
  796. myform.ShowInTaskbar = false;
  797. myform.Visible = true;
  798. MyLabel2 l = new MyLabel2 ();
  799. myform.Controls.Add (l);
  800. l.Size = new Size (150, 20);
  801. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  802. myform.Dispose();
  803. }
  804. [Test]
  805. public void AutoSizeChangedEventsOrder ()
  806. {
  807. string[] EventsWanted = {
  808. "HandleCreated",
  809. "BindingContextChanged",
  810. "BindingContextChanged",
  811. "Invalidated",
  812. "Layout",
  813. "Resize",
  814. "SizeChanged",
  815. "AutoSizeChanged"
  816. };
  817. Form myform = new Form ();
  818. myform.ShowInTaskbar = false;
  819. myform.Visible = true;
  820. MyLabel2 l = new MyLabel2 ();
  821. myform.Controls.Add (l);
  822. l.AutoSize = true;
  823. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  824. myform.Dispose();
  825. }
  826. [Test]
  827. public void BackgroundImageChangedEventsOrder ()
  828. {
  829. string[] EventsWanted = {
  830. "HandleCreated",
  831. "BindingContextChanged",
  832. "BindingContextChanged",
  833. "Invalidated",
  834. "BackgroundImageChanged"
  835. };
  836. Form myform = new Form ();
  837. myform.ShowInTaskbar = false;
  838. myform.Visible = true;
  839. MyLabel2 l = new MyLabel2 ();
  840. myform.Controls.Add (l);
  841. l.BackgroundImage = Image.FromFile ("Test/System.Windows.Forms/bitmaps/a.png");
  842. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  843. myform.Dispose();
  844. }
  845. [Test]
  846. public void ImeModeChangedChangedEventsOrder ()
  847. {
  848. string[] EventsWanted = {
  849. "HandleCreated",
  850. "BindingContextChanged",
  851. "BindingContextChanged",
  852. "ImeModeChanged"
  853. };
  854. Form myform = new Form ();
  855. myform.ShowInTaskbar = false;
  856. myform.Visible = true;
  857. MyLabel2 l = new MyLabel2 ();
  858. myform.Controls.Add (l);
  859. l.ImeMode = ImeMode.Katakana;
  860. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  861. myform.Dispose();
  862. }
  863. [Test]
  864. public void KeyPressEventsOrder ()
  865. {
  866. string[] EventsWanted = {
  867. "HandleCreated",
  868. "BindingContextChanged",
  869. "BindingContextChanged",
  870. "KeyDown,A",
  871. "KeyPress,a",
  872. "KeyUp,A"
  873. };
  874. Form myform = new Form ();
  875. myform.ShowInTaskbar = false;
  876. myform.Visible = true;
  877. MyLabel2 l = new MyLabel2 ();
  878. myform.Controls.Add (l);
  879. l.KeyPressA ();
  880. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  881. myform.Dispose();
  882. }
  883. [Test]
  884. public void TabStopChangedEventsOrder ()
  885. {
  886. string[] EventsWanted = {
  887. "HandleCreated",
  888. "BindingContextChanged",
  889. "BindingContextChanged"
  890. };
  891. Form myform = new Form ();
  892. myform.ShowInTaskbar = false;
  893. myform.Visible = true;
  894. MyLabel2 l = new MyLabel2 ();
  895. myform.Controls.Add (l);
  896. l.TabStop = true;
  897. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  898. myform.Dispose();
  899. }
  900. [Test]
  901. public void TextAlignChangedEventsOrder ()
  902. {
  903. string[] EventsWanted = {
  904. "HandleCreated",
  905. "BindingContextChanged",
  906. "BindingContextChanged",
  907. "Invalidated"
  908. };
  909. Form myform = new Form ();
  910. myform.ShowInTaskbar = false;
  911. myform.Visible = true;
  912. MyLabel2 l = new MyLabel2 ();
  913. myform.Controls.Add (l);
  914. l.TextAlign = ContentAlignment.TopRight;
  915. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  916. myform.Dispose();
  917. }
  918. [Test]
  919. public void PaintEventsOrder ()
  920. {
  921. string[] EventsWanted = {
  922. "HandleCreated",
  923. "BindingContextChanged",
  924. "BindingContextChanged",
  925. "Invalidated",
  926. "Invalidated",
  927. "Paint"
  928. };
  929. Form myform = new Form ();
  930. myform.ShowInTaskbar = false;
  931. myform.Visible = true;
  932. MyLabel2 l = new MyLabel2 ();
  933. myform.Controls.Add (l);
  934. l.TextAlign = ContentAlignment.TopRight;
  935. l.Refresh ();
  936. Assert.AreEqual (EventsWanted, ArrayListToString (l.Results));
  937. myform.Dispose();
  938. }
  939. }
  940. }