LabelTest.cs 33 KB

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