LabelTest.cs 27 KB

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