2
0

ButtonTest.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. //
  2. // Copyright (c) 2005-2006 Novell, Inc.
  3. //
  4. // Authors:
  5. // Ritvik Mayank ([email protected])
  6. // Sebastien Pouliot <[email protected]>
  7. //
  8. using System;
  9. using System.Windows.Forms;
  10. using System.Drawing;
  11. using NUnit.Framework;
  12. namespace MonoTests.System.Windows.Forms
  13. {
  14. [TestFixture]
  15. public class ButtonTest : TestHelper
  16. {
  17. [Test]
  18. public void Constructor ()
  19. {
  20. Button b = new Button ();
  21. Assert.AreEqual (SystemColors.Control, b.BackColor, "A4");
  22. Assert.AreEqual (FlatStyle.Standard, b.FlatStyle, "A6");
  23. Assert.AreEqual (null, b.Image, "A7");
  24. Assert.AreEqual (ContentAlignment.MiddleCenter, b.ImageAlign, "A8");
  25. Assert.AreEqual (-1, b.ImageIndex, "A9");
  26. Assert.AreEqual (null, b.ImageList, "A11");
  27. Assert.AreEqual (ImeMode.Disable, b.ImeMode, "A12");
  28. Assert.AreEqual (string.Empty, b.Text, "A13");
  29. Assert.AreEqual (ContentAlignment.MiddleCenter, b.TextAlign, "A14");
  30. #if NET_2_0
  31. Assert.AreEqual (false, b.AutoEllipsis, "A1");
  32. Assert.AreEqual (false, b.AutoSize, "A2");
  33. Assert.AreEqual (string.Empty, b.ImageKey, "A10");
  34. Assert.AreEqual (TextImageRelation.Overlay, b.TextImageRelation, "A15");
  35. Assert.AreEqual (true, b.UseCompatibleTextRendering, "A16");
  36. Assert.AreEqual (true, b.UseMnemonic, "A17");
  37. Assert.AreEqual (true, b.UseVisualStyleBackColor, "A18");
  38. #endif
  39. }
  40. #if NET_2_0
  41. [Test]
  42. public void FlatButtonAppearanceTest ()
  43. {
  44. Button B1 = new Button ();
  45. FlatButtonAppearance flatApp = B1.FlatAppearance;
  46. Assert.AreEqual (Color.Empty, flatApp.BorderColor, "#A1");
  47. Assert.AreEqual (1, flatApp.BorderSize, "#A2");
  48. Assert.AreEqual (Color.Empty, flatApp.CheckedBackColor, "#A3");
  49. Assert.AreEqual (Color.Empty, flatApp.MouseDownBackColor, "#A4");
  50. Assert.AreEqual (Color.Empty, flatApp.MouseOverBackColor, "#A5");
  51. flatApp.BorderColor = Color.Blue;
  52. Assert.AreEqual (Color.Blue, flatApp.BorderColor, "#B1");
  53. flatApp.BorderSize = 10;
  54. Assert.AreEqual (10, flatApp.BorderSize, "#B2");
  55. flatApp.CheckedBackColor = Color.Blue;
  56. Assert.AreEqual (Color.Blue, flatApp.CheckedBackColor, "#B3");
  57. flatApp.MouseDownBackColor = Color.Blue;
  58. Assert.AreEqual (Color.Blue, flatApp.MouseDownBackColor, "#B4");
  59. flatApp.MouseOverBackColor = Color.Blue;
  60. Assert.AreEqual (Color.Blue, flatApp.MouseOverBackColor, "#B5");
  61. }
  62. [Test]
  63. [ExpectedException(typeof(ArgumentOutOfRangeException))]
  64. public void FlatButtonAppearanceExceptionTest ()
  65. {
  66. Button B1 = new Button ();
  67. FlatButtonAppearance flatApp = B1.FlatAppearance;
  68. flatApp.BorderSize = -1;
  69. }
  70. [Test]
  71. [ExpectedException (typeof (NotSupportedException))]
  72. public void FlatButtonAppearanceBorderColor ()
  73. {
  74. Button B1 = new Button ();
  75. FlatButtonAppearance flatApp = B1.FlatAppearance;
  76. flatApp.BorderColor = Color.Transparent;
  77. }
  78. [Test]
  79. public void BehaviorAutoSize ()
  80. {
  81. if (TestHelper.RunningOnUnix)
  82. Assert.Ignore ("Depends on font measurements, corresponds to windows");
  83. Form f = new Form ();
  84. f.ShowInTaskbar = false;
  85. f.Show ();
  86. Image i = new Bitmap (20, 20);
  87. String s = "My test string";
  88. Button b = new Button ();
  89. Size s_size = TextRenderer.MeasureText (s, new Button ().Font);
  90. b.UseCompatibleTextRendering = false;
  91. b.AutoSize = true;
  92. b.AutoSizeMode = AutoSizeMode.GrowAndShrink;
  93. b.Text = s;
  94. f.Controls.Add (b);
  95. // Text only
  96. b.TextImageRelation = TextImageRelation.Overlay;
  97. Assert.AreEqual (new Size (s_size.Width + 10, s_size.Height + 10), b.Size, "A1");
  98. b.TextImageRelation = TextImageRelation.ImageAboveText;
  99. Assert.AreEqual (new Size (s_size.Width + 10, s_size.Height + 10), b.Size, "A2");
  100. b.TextImageRelation = TextImageRelation.ImageBeforeText;
  101. Assert.AreEqual (new Size (s_size.Width + 10, s_size.Height + 10), b.Size, "A3");
  102. b.TextImageRelation = TextImageRelation.TextAboveImage;
  103. Assert.AreEqual (new Size (s_size.Width + 10, s_size.Height + 10), b.Size, "A4");
  104. b.TextImageRelation = TextImageRelation.TextBeforeImage;
  105. Assert.AreEqual (new Size (s_size.Width + 10, s_size.Height + 10), b.Size, "A5");
  106. // Text and Image
  107. b.Image = i;
  108. b.TextImageRelation = TextImageRelation.Overlay;
  109. Assert.AreEqual (new Size (s_size.Width + 10, i.Height + 6), b.Size, "A6");
  110. b.TextImageRelation = TextImageRelation.ImageAboveText;
  111. Assert.AreEqual (new Size (s_size.Width + 10, s_size.Height + i.Height + 10), b.Size, "A7");
  112. b.TextImageRelation = TextImageRelation.ImageBeforeText;
  113. Assert.AreEqual (new Size (s_size.Width + i.Width + 10, i.Height + 6), b.Size, "A8");
  114. b.TextImageRelation = TextImageRelation.TextAboveImage;
  115. Assert.AreEqual (new Size (s_size.Width + 10, s_size.Height + i.Height + 10), b.Size, "A9");
  116. b.TextImageRelation = TextImageRelation.TextBeforeImage;
  117. Assert.AreEqual (new Size (s_size.Width + i.Width + 10, i.Height + 6), b.Size, "A10");
  118. // Image only
  119. b.Text = string.Empty;
  120. b.TextImageRelation = TextImageRelation.Overlay;
  121. Assert.AreEqual (new Size (i.Height + 6, i.Height + 6), b.Size, "A11");
  122. b.TextImageRelation = TextImageRelation.ImageAboveText;
  123. Assert.AreEqual (new Size (i.Height + 6, i.Height + 6), b.Size, "A12");
  124. b.TextImageRelation = TextImageRelation.ImageBeforeText;
  125. Assert.AreEqual (new Size (i.Height + 6, i.Height + 6), b.Size, "A13");
  126. b.TextImageRelation = TextImageRelation.TextAboveImage;
  127. Assert.AreEqual (new Size (i.Height + 6, i.Height + 6), b.Size, "A14");
  128. b.TextImageRelation = TextImageRelation.TextBeforeImage;
  129. Assert.AreEqual (new Size (i.Height + 6, i.Height + 6), b.Size, "A15");
  130. // Neither
  131. b.Image = null;
  132. b.TextImageRelation = TextImageRelation.Overlay;
  133. Assert.AreEqual (new Size (6, 6), b.Size, "A16");
  134. b.TextImageRelation = TextImageRelation.ImageAboveText;
  135. Assert.AreEqual (new Size (6, 6), b.Size, "A17");
  136. b.TextImageRelation = TextImageRelation.ImageBeforeText;
  137. Assert.AreEqual (new Size (6, 6), b.Size, "A18");
  138. b.TextImageRelation = TextImageRelation.TextAboveImage;
  139. Assert.AreEqual (new Size (6, 6), b.Size, "A19");
  140. b.TextImageRelation = TextImageRelation.TextBeforeImage;
  141. Assert.AreEqual (new Size (6, 6), b.Size, "A20");
  142. // Padding
  143. b.Padding = new Padding (5, 10, 15, 20);
  144. Assert.AreEqual (new Size (6 + b.Padding.Horizontal, 6 + b.Padding.Vertical), b.Size, "A21");
  145. f.Dispose ();
  146. }
  147. [Test]
  148. public void BehaviorImageList ()
  149. {
  150. // Basically, this shows that whichever of [Image|ImageIndex|ImageKey]
  151. // is set last resets the others to their default state
  152. Button b = new Button ();
  153. Bitmap i1 = new Bitmap (16, 16);
  154. i1.SetPixel (0, 0, Color.Blue);
  155. Bitmap i2 = new Bitmap (16, 16);
  156. i2.SetPixel (0, 0, Color.Red);
  157. Bitmap i3 = new Bitmap (16, 16);
  158. i3.SetPixel (0, 0, Color.Green);
  159. Assert.AreEqual (null, b.Image, "D1");
  160. Assert.AreEqual (-1, b.ImageIndex, "D2");
  161. Assert.AreEqual (string.Empty, b.ImageKey, "D3");
  162. ImageList il = new ImageList ();
  163. il.Images.Add ("i2", i2);
  164. il.Images.Add ("i3", i3);
  165. b.ImageList = il;
  166. b.ImageKey = "i3";
  167. Assert.AreEqual (-1, b.ImageIndex, "D4");
  168. Assert.AreEqual ("i3", b.ImageKey, "D5");
  169. Assert.AreEqual (i3.GetPixel (0, 0), (b.Image as Bitmap).GetPixel (0, 0), "D6");
  170. b.ImageIndex = 0;
  171. Assert.AreEqual (0, b.ImageIndex, "D7");
  172. Assert.AreEqual (string.Empty, b.ImageKey, "D8");
  173. Assert.AreEqual (i2.GetPixel (0, 0), (b.Image as Bitmap).GetPixel (0, 0), "D9");
  174. // Also, Image is not cached, changing the underlying ImageList image is reflected
  175. il.Images[0] = i1;
  176. Assert.AreEqual (i1.GetPixel (0, 0), (b.Image as Bitmap).GetPixel (0, 0), "D16");
  177. // Note: setting Image resets ImageList to null
  178. b.Image = i1;
  179. Assert.AreEqual (-1, b.ImageIndex, "D10");
  180. Assert.AreEqual (string.Empty, b.ImageKey, "D11");
  181. Assert.AreEqual (i1.GetPixel (0, 0), (b.Image as Bitmap).GetPixel (0, 0), "D12");
  182. Assert.AreEqual (null, b.ImageList, "D12-2");
  183. b.Image = null;
  184. Assert.AreEqual (null, b.Image, "D13");
  185. Assert.AreEqual (-1, b.ImageIndex, "D14");
  186. Assert.AreEqual (string.Empty, b.ImageKey, "D15");
  187. }
  188. #endif
  189. [Test]
  190. public void ImageTest ()
  191. {
  192. Button B1 = new Button ();
  193. B1.Visible = true;
  194. B1.Image = Image.FromFile ("M.gif");
  195. Assert.AreEqual (ContentAlignment.MiddleCenter, B1.ImageAlign, "#2");
  196. }
  197. [Test]
  198. public void ImageListTest ()
  199. {
  200. Button B1 = new Button ();
  201. B1.Image = Image.FromFile ("M.gif");
  202. Assert.AreEqual (null, B1.ImageList, "#3a");
  203. B1 = new Button ();
  204. ImageList ImageList1 = new ImageList ();
  205. ImageList1.Images.Add(Image.FromFile ("M.gif"));
  206. ImageList1.Images.Add(Image.FromFile ("M.gif"));
  207. Assert.AreEqual (2, ImageList1.Images.Count, "#3b");
  208. B1.ImageList = ImageList1;
  209. Assert.AreEqual (-1, B1.ImageIndex, "#3c");
  210. B1 = new Button ();
  211. B1.ImageIndex = 1;
  212. B1.ImageList = ImageList1;
  213. Assert.AreEqual (1, B1.ImageIndex, "#3d");
  214. Assert.AreEqual (2, B1.ImageList.Images.Count, "#3e");
  215. Assert.AreEqual (16, B1.ImageList.ImageSize.Height, "#3f");
  216. Assert.AreEqual (16, B1.ImageList.ImageSize.Width, "#3g");
  217. }
  218. [Test]
  219. public void IMeModeTest ()
  220. {
  221. Button B1 = new Button ();
  222. Assert.AreEqual (ImeMode.Disable, B1.ImeMode, "#4a");
  223. B1.ImeMode = ImeMode.Off;
  224. Assert.AreEqual (ImeMode.Off, B1.ImeMode, "#4b");
  225. B1 = new Button ();
  226. Assert.AreEqual (ImeMode.Disable, ((Control)B1).ImeMode, "#4c");
  227. ((Control)B1).ImeMode = ImeMode.Off;
  228. Assert.AreEqual (ImeMode.Off, ((Control)B1).ImeMode, "#4d");
  229. Assert.AreEqual (ImeMode.Off, B1.ImeMode, "#4e");
  230. }
  231. [Test]
  232. public void TextAlignTest ()
  233. {
  234. Button B1 = new Button ();
  235. Assert.AreEqual (ContentAlignment.MiddleCenter, B1.TextAlign, "#5");
  236. }
  237. [Test]
  238. public void DialogResultTest ()
  239. {
  240. Form f = new Form ();
  241. f.ShowInTaskbar = false;
  242. Button B1 = new Button ();
  243. B1.Text = "DialogResult";
  244. B1.DialogResult = DialogResult.No;
  245. B1.TextAlign = ContentAlignment.BottomRight;
  246. B1.Visible = true;
  247. f.Controls.Add (B1);
  248. Assert.AreEqual (DialogResult.No, B1.DialogResult, "#6");
  249. f.Dispose();
  250. // check cancel button behavior
  251. f = new Form ();
  252. f.ShowInTaskbar = false;
  253. B1 = new Button ();
  254. f.CancelButton = B1;
  255. f.Controls.Add (B1);
  256. Assert.AreEqual (DialogResult.Cancel, B1.DialogResult, "#7");
  257. f.Dispose ();
  258. f = new Form ();
  259. f.ShowInTaskbar = false;
  260. B1 = new Button ();
  261. B1.DialogResult = DialogResult.No;
  262. f.CancelButton = B1;
  263. f.Controls.Add (B1);
  264. Assert.AreEqual (DialogResult.No, B1.DialogResult, "#8");
  265. f.Dispose ();
  266. f = new Form ();
  267. f.ShowInTaskbar = false;
  268. B1 = new Button ();
  269. B1.DialogResult = DialogResult.No;
  270. B1.DialogResult = DialogResult.None;
  271. f.CancelButton = B1;
  272. f.Controls.Add (B1);
  273. Assert.AreEqual (DialogResult.Cancel, B1.DialogResult, "#9");
  274. f.Dispose ();
  275. // check accept button behavior
  276. f = new Form ();
  277. f.ShowInTaskbar = false;
  278. B1 = new Button ();
  279. f.AcceptButton = B1;
  280. f.Controls.Add (B1);
  281. Assert.AreEqual (DialogResult.None, B1.DialogResult, "#10");
  282. f.Dispose ();
  283. f = new Form ();
  284. f.ShowInTaskbar = false;
  285. B1 = new Button ();
  286. B1.DialogResult = DialogResult.No;
  287. f.AcceptButton = B1;
  288. f.Controls.Add (B1);
  289. Assert.AreEqual (DialogResult.No, B1.DialogResult, "#11");
  290. f.Dispose ();
  291. f = new Form ();
  292. f.ShowInTaskbar = false;
  293. B1 = new Button ();
  294. B1.DialogResult = DialogResult.No;
  295. B1.DialogResult = DialogResult.None;
  296. f.AcceptButton = B1;
  297. f.Controls.Add (B1);
  298. Assert.AreEqual (DialogResult.None, B1.DialogResult, "#12");
  299. f.Dispose ();
  300. }
  301. [Test]
  302. public void PerformClickTest ()
  303. {
  304. Form f = new Form ();
  305. f.ShowInTaskbar = false;
  306. Button B1 = new Button ();
  307. B1.Text = "DialogResult";
  308. B1.Visible = true;
  309. f.Controls.Add (B1);
  310. B1.PerformClick ();
  311. Assert.AreEqual (DialogResult.None, B1.DialogResult, "#7");
  312. f.Dispose ();
  313. }
  314. [Test]
  315. public void ToStringTest ()
  316. {
  317. Button B1 = new Button ();
  318. Assert.AreEqual ("System.Windows.Forms.Button, Text: " , B1.ToString (), "#9");
  319. }
  320. }
  321. [TestFixture]
  322. public class ButtonInheritorTest : Button {
  323. [Test]
  324. public void DefaultImeModeTest ()
  325. {
  326. Assert.AreEqual (ImeMode.Disable, DefaultImeMode, "1");
  327. }
  328. [Test]
  329. [ExpectedException (typeof (ArgumentNullException))]
  330. public void Constructor_Null ()
  331. {
  332. new ButtonBaseAccessibleObject (null);
  333. }
  334. [Test]
  335. public void Constructor ()
  336. {
  337. ButtonBaseAccessibleObject bbao = new ButtonBaseAccessibleObject (this);
  338. Assert.IsNotNull (bbao.Owner, "Owner");
  339. Assert.IsTrue (Object.ReferenceEquals (this, bbao.Owner), "ReferenceEquals");
  340. Assert.AreEqual ("Press", bbao.DefaultAction, "DefaultAction");
  341. Assert.IsNull (bbao.Description, "Description");
  342. Assert.IsNull (bbao.Help, "Help");
  343. Assert.IsNull (bbao.Name, "Name");
  344. Assert.AreEqual (AccessibleRole.PushButton, bbao.Role, "Role");
  345. Assert.AreEqual (AccessibleStates.None, bbao.State, "State");
  346. }
  347. [Test]
  348. public void CreateAccessibilityInstanceTest ()
  349. {
  350. AccessibleObject ao = base.CreateAccessibilityInstance ();
  351. Button.ButtonBaseAccessibleObject bbao = (ao as Button.ButtonBaseAccessibleObject);
  352. Assert.IsNotNull (bbao, "ButtonBaseAccessibleObject");
  353. Assert.IsNotNull (bbao.Owner, "Owner");
  354. Assert.IsTrue (Object.ReferenceEquals (this, bbao.Owner), "ReferenceEquals");
  355. Assert.AreEqual ("Press", bbao.DefaultAction, "DefaultAction");
  356. Assert.IsNull (bbao.Description, "Description");
  357. Assert.IsNull (bbao.Help, "Help");
  358. Assert.IsNull (bbao.Name, "Name");
  359. Assert.AreEqual (AccessibleRole.PushButton, bbao.Role, "Role");
  360. Assert.AreEqual (AccessibleStates.None, bbao.State, "State");
  361. }
  362. }
  363. }