ProgressBarTest.cs 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314
  1. //
  2. // ProgressBarTest.cs: Test cases for ProgressBar.
  3. //
  4. // Author:
  5. // Ritvik Mayank ([email protected])
  6. //
  7. // (C) 2005 Novell, Inc. (http://www.novell.com)
  8. //
  9. using System;
  10. using System.Windows.Forms;
  11. using System.Drawing;
  12. using System.Reflection;
  13. using NUnit.Framework;
  14. namespace MonoTests.System.Windows.Forms
  15. {
  16. [TestFixture]
  17. public class ProgressBarTest : TestHelper
  18. {
  19. [Test]
  20. public void ProgressBarPropertyTest ()
  21. {
  22. ProgressBar myProgressBar = new ProgressBar ();
  23. // A
  24. Assert.AreEqual (false, myProgressBar.AllowDrop, "#A1");
  25. // B
  26. Assert.AreEqual ("Control", myProgressBar.BackColor.Name, "#B1");
  27. Assert.AreEqual (null, myProgressBar.BackgroundImage, "#B3");
  28. string gif = "M.gif";
  29. myProgressBar.BackgroundImage = Image.FromFile (gif);
  30. // comparing image objects fails on MS .Net so using Size property
  31. Assert.AreEqual (Image.FromFile(gif, true).Size, myProgressBar.BackgroundImage.Size, "#B4");
  32. // F
  33. Assert.AreEqual (FontStyle.Regular, myProgressBar.Font.Style, "#F2");
  34. // M
  35. Assert.AreEqual (100, myProgressBar.Maximum, "#M1");
  36. Assert.AreEqual (0, myProgressBar.Minimum, "#M2");
  37. // R
  38. Assert.AreEqual (RightToLeft.No, myProgressBar.RightToLeft, "#R1");
  39. // S
  40. Assert.AreEqual (10, myProgressBar.Step, "#S1");
  41. // T
  42. Assert.AreEqual ("", myProgressBar.Text, "#T1");
  43. myProgressBar.Text = "New ProgressBar";
  44. Assert.AreEqual ("New ProgressBar", myProgressBar.Text, "#T2");
  45. // V
  46. Assert.AreEqual (0, myProgressBar.Value, "#V1");
  47. }
  48. [Test]
  49. public void ForeColorTest ()
  50. {
  51. ProgressBar progressBar = new ProgressBar ();
  52. #if NET_2_0
  53. Assert.AreEqual (SystemColors.Highlight, progressBar.ForeColor, "#A1");
  54. #else
  55. Assert.AreEqual (SystemColors.ControlText, progressBar.ForeColor, "#A1");
  56. #endif
  57. progressBar.ForeColor = Color.Red;
  58. Assert.AreEqual (Color.Red, progressBar.ForeColor, "#A2");
  59. progressBar.ForeColor = Color.White;
  60. Assert.AreEqual (Color.White, progressBar.ForeColor, "#A3");
  61. Form form = new Form ();
  62. form.ShowInTaskbar = false;
  63. form.Controls.Add (progressBar);
  64. form.Show ();
  65. Assert.AreEqual (Color.White, progressBar.ForeColor, "#B1");
  66. progressBar.ForeColor = Color.Red;
  67. Assert.AreEqual (Color.Red, progressBar.ForeColor, "#B2");
  68. progressBar.ForeColor = Color.Red;
  69. Assert.AreEqual (Color.Red, progressBar.ForeColor, "#B3");
  70. progressBar.ForeColor = Color.Blue;
  71. Assert.AreEqual (Color.Blue, progressBar.ForeColor, "#B4");
  72. form.Close ();
  73. }
  74. [Test]
  75. public void ResetForeColor ()
  76. {
  77. ProgressBar progressBar = new ProgressBar ();
  78. progressBar.ForeColor = Color.Red;
  79. progressBar.ResetForeColor ();
  80. #if NET_2_0
  81. Assert.AreEqual (SystemColors.Highlight, progressBar.ForeColor);
  82. #else
  83. Assert.AreEqual (SystemColors.ControlText, progressBar.ForeColor);
  84. #endif
  85. }
  86. [Test]
  87. #if NET_2_0
  88. [ExpectedException (typeof (ArgumentOutOfRangeException))]
  89. #else
  90. [ExpectedException (typeof (ArgumentException))]
  91. #endif
  92. public void ValueTest ()
  93. {
  94. ProgressBar myProgressBar = new ProgressBar ();
  95. myProgressBar.Value = -1;
  96. myProgressBar.Value = 100;
  97. }
  98. [Test]
  99. public void MinMax()
  100. {
  101. Type expectedArgExType;
  102. #if NET_2_0
  103. expectedArgExType = typeof (ArgumentOutOfRangeException);
  104. #else
  105. expectedArgExType = typeof (ArgumentException);
  106. #endif
  107. //
  108. ProgressBar c = new ProgressBar ();
  109. Assert.AreEqual (0, c.Minimum, "default_min");
  110. Assert.AreEqual (100, c.Maximum, "default_max");
  111. Assert.AreEqual (0, c.Value, "default_value");
  112. //----
  113. try {
  114. c.Minimum = -1;
  115. Assert.Fail ("should have thrown -- Min-1");
  116. } catch (ArgumentException ex) {
  117. // MSDN says ArgumentException, but really its *subtype* ArgumentOutOfRangeException.
  118. // Actually it changed in FX2.
  119. Assert.AreEqual (expectedArgExType, ex.GetType (), "Typeof Min-1");
  120. #if NET_2_0
  121. Assert.AreEqual ("Minimum", ex.ParamName, "ParamName Min-1"); // (culture insensitive).
  122. #endif
  123. }
  124. try {
  125. c.Maximum = -1;
  126. Assert.Fail ("should have thrown -- Max-1");
  127. } catch (ArgumentException ex) {
  128. Assert.AreEqual (expectedArgExType, ex.GetType (), "Typeof Max-1");
  129. #if NET_2_0
  130. Assert.AreEqual ("Maximum", ex.ParamName, "ParamName Max-1"); // (culture insensitive).
  131. #endif
  132. }
  133. Assert.AreEqual (0, c.Minimum, "after Min/Max-1_min");
  134. Assert.AreEqual (100, c.Maximum, "after Min/Max-1_max");
  135. Assert.AreEqual (0, c.Value, "after Min/Max-1_value");
  136. //
  137. // What happens when Min/Max is set respectively above/below the current Value
  138. // and Max/Min values.
  139. c.Minimum = 200;
  140. Assert.AreEqual (200, c.Minimum, "200L_min");
  141. Assert.AreEqual (200, c.Maximum, "200L_max");
  142. Assert.AreEqual (200, c.Value, "200L_value");
  143. //
  144. c.Minimum = 50;
  145. Assert.AreEqual (50, c.Minimum, "50L_min");
  146. Assert.AreEqual (200, c.Maximum, "50L_max");
  147. Assert.AreEqual (200, c.Value, "50L_value");
  148. //
  149. c.Maximum = 30;
  150. Assert.AreEqual (30, c.Minimum, "30T_min");
  151. Assert.AreEqual (30, c.Maximum, "30T_max");
  152. Assert.AreEqual (30, c.Value, "30T_value");
  153. //
  154. // What happens when Value is set outside the Min/Max ranges.
  155. c.Maximum = 50;
  156. Assert.AreEqual (30, c.Minimum, "50T_min");
  157. Assert.AreEqual (50, c.Maximum, "50T_max");
  158. c.Value = 45;
  159. Assert.AreEqual (45, c.Value, "50T_value");
  160. try {
  161. c.Value = 29;
  162. Assert.Fail ("should have thrown -- 29");
  163. } catch (ArgumentException ex) {
  164. Assert.AreEqual (expectedArgExType, ex.GetType (), "Typeof 29");
  165. #if NET_2_0
  166. Assert.AreEqual ("Value", ex.ParamName, "ParamName 29");
  167. #endif
  168. }
  169. Assert.AreEqual (45, c.Value, "after 29_value");
  170. try {
  171. c.Value = 51;
  172. Assert.Fail ("should have thrown -- 51");
  173. } catch (ArgumentException ex) {
  174. Assert.AreEqual (expectedArgExType, ex.GetType (), "Typeof 51");
  175. #if NET_2_0
  176. Assert.AreEqual ("Value", ex.ParamName, "ParamName 151");
  177. #endif
  178. }
  179. Assert.AreEqual (45, c.Value, "after 51_value");
  180. }
  181. [Test]
  182. public void PerformStepAndIncrement ()
  183. {
  184. ProgressBar c = new ProgressBar ();
  185. //
  186. c.Value = 10;
  187. c.Step = 30;
  188. Assert.AreEqual (10, c.Value, "StepAt30_Init");
  189. c.PerformStep ();
  190. Assert.AreEqual (40, c.Value, "StepAt30_1");
  191. c.PerformStep ();
  192. Assert.AreEqual (70, c.Value, "StepAt30_2");
  193. //
  194. c.Value = 0;
  195. c.Step = 20;
  196. Assert.AreEqual (0, c.Value, "StepAt20_Init");
  197. //
  198. c.PerformStep ();
  199. Assert.AreEqual (20, c.Value, "StepAt20_1");
  200. c.PerformStep ();
  201. Assert.AreEqual (40, c.Value, "StepAt20_2");
  202. c.PerformStep ();
  203. Assert.AreEqual (60, c.Value, "StepAt20_3");
  204. c.PerformStep ();
  205. Assert.AreEqual (80, c.Value, "StepAt20_4");
  206. c.PerformStep ();
  207. Assert.AreEqual (100, c.Value, "StepAt20_5");
  208. c.PerformStep ();
  209. Assert.AreEqual (100, c.Value, "StepAt20_6x");
  210. c.PerformStep ();
  211. Assert.AreEqual (100, c.Value, "StepAt20_7x");
  212. //
  213. c.Step = -20;
  214. Assert.AreEqual (100, c.Value, "StepAt2Neg0_Init");
  215. c.PerformStep ();
  216. Assert.AreEqual (80, c.Value, "StepAtNeg20_1");
  217. c.PerformStep ();
  218. Assert.AreEqual (60, c.Value, "StepAtNeg20_2");
  219. //
  220. c.Step = -40;
  221. Assert.AreEqual (60, c.Value, "StepAt2Neg40_Init");
  222. c.PerformStep ();
  223. Assert.AreEqual (20, c.Value, "StepAtNeg40_1");
  224. c.PerformStep ();
  225. Assert.AreEqual (0, c.Value, "StepAtNeg40_2");
  226. c.PerformStep ();
  227. Assert.AreEqual (0, c.Value, "StepAtNeg40_2");
  228. //
  229. c.Increment (30);
  230. Assert.AreEqual (30, c.Value, "Increment30_1");
  231. c.Increment (30);
  232. Assert.AreEqual (60, c.Value, "Increment30_2");
  233. c.Increment (30);
  234. Assert.AreEqual (90, c.Value, "Increment30_3");
  235. c.Increment (30);
  236. Assert.AreEqual (100, c.Value, "Increment30_4x");
  237. }
  238. #if NET_2_0
  239. [Test]
  240. public void Styles ()
  241. {
  242. ProgressBar c = new ProgressBar ();
  243. //--
  244. Assert.AreEqual(ProgressBarStyle.Blocks, c.Style, "orig=blocks");
  245. //--
  246. c.Style = ProgressBarStyle.Continuous;
  247. //--
  248. c.Style = ProgressBarStyle.Marquee;
  249. // Increment and PerformStep are documented to fail in Marquee style.
  250. try {
  251. c.Increment (5);
  252. Assert.Fail ("should have thrown -- Increment");
  253. } catch (InvalidOperationException) {
  254. }
  255. try {
  256. c.PerformStep ();
  257. Assert.Fail ("should have thrown -- PerformStep ");
  258. } catch (InvalidOperationException) {
  259. }
  260. // What about the other value-related properties? No fail apparently!
  261. c.Value = 20;
  262. c.Minimum = 5;
  263. c.Maximum = 95;
  264. //--
  265. // Now undefined style values...
  266. try {
  267. c.Style = (ProgressBarStyle)4;
  268. Assert.Fail("should have thrown -- bad style4");
  269. } catch (global::System.ComponentModel.InvalidEnumArgumentException ex) {
  270. //Console.WriteLine(ex.Message);
  271. Assert.AreEqual(typeof(global::System.ComponentModel.InvalidEnumArgumentException), ex.GetType (), "Typeof bad style4");
  272. Assert.AreEqual("value", ex.ParamName, "ParamName bad style 4");
  273. }
  274. try {
  275. c.Style = (ProgressBarStyle)99;
  276. Assert.Fail("should have thrown -- bad style99");
  277. } catch (global::System.ComponentModel.InvalidEnumArgumentException ex) {
  278. Assert.AreEqual (typeof(global::System.ComponentModel.InvalidEnumArgumentException), ex.GetType (), "Typeof bad style99");
  279. Assert.AreEqual ("value", ex.ParamName, "ParamName bad style 99");
  280. }
  281. }
  282. #endif
  283. [Test]
  284. public void ToStringMethodTest ()
  285. {
  286. ProgressBar myProgressBar = new ProgressBar ();
  287. myProgressBar.Text = "New ProgressBar";
  288. Assert.AreEqual ("System.Windows.Forms.ProgressBar, Minimum: 0, Maximum: 100, Value: 0", myProgressBar.ToString (), "#T3");
  289. }
  290. // [MonoTODO("Add test for method Increment (Visual Test)")]
  291. // [MonoTODO("Add test for method PerformStep (Visual Test)")]
  292. }
  293. }