LabelTest.cs 30 KB

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