2 // ProgressBarTest.cs: Test cases for ProgressBar.
5 // Ritvik Mayank (mritvik@novell.com)
7 // (C) 2005 Novell, Inc. (http://www.novell.com)
11 using System.Windows.Forms;
13 using System.Reflection;
14 using NUnit.Framework;
16 namespace MonoTests.System.Windows.Forms
19 public class ProgressBarTest : TestHelper
22 public void ProgressBarPropertyTest ()
24 ProgressBar myProgressBar = new ProgressBar ();
27 Assert.AreEqual (false, myProgressBar.AllowDrop, "#A1");
30 Assert.AreEqual ("Control", myProgressBar.BackColor.Name, "#B1");
31 Assert.AreEqual (null, myProgressBar.BackgroundImage, "#B3");
33 myProgressBar.BackgroundImage = Image.FromFile (gif);
34 // comparing image objects fails on MS .Net so using Size property
35 Assert.AreEqual (Image.FromFile(gif, true).Size, myProgressBar.BackgroundImage.Size, "#B4");
38 Assert.AreEqual (FontStyle.Regular, myProgressBar.Font.Style, "#F2");
41 Assert.AreEqual (100, myProgressBar.Maximum, "#M1");
42 Assert.AreEqual (0, myProgressBar.Minimum, "#M2");
45 Assert.AreEqual (RightToLeft.No, myProgressBar.RightToLeft, "#R1");
48 Assert.AreEqual (10, myProgressBar.Step, "#S1");
51 Assert.AreEqual ("", myProgressBar.Text, "#T1");
52 myProgressBar.Text = "New ProgressBar";
53 Assert.AreEqual ("New ProgressBar", myProgressBar.Text, "#T2");
56 Assert.AreEqual (0, myProgressBar.Value, "#V1");
60 public void ForeColorTest ()
62 ProgressBar progressBar = new ProgressBar ();
64 Assert.AreEqual (SystemColors.Highlight, progressBar.ForeColor, "#A1");
66 Assert.AreEqual (SystemColors.ControlText, progressBar.ForeColor, "#A1");
68 progressBar.ForeColor = Color.Red;
69 Assert.AreEqual (Color.Red, progressBar.ForeColor, "#A2");
70 progressBar.ForeColor = Color.White;
71 Assert.AreEqual (Color.White, progressBar.ForeColor, "#A3");
73 Form form = new Form ();
74 form.ShowInTaskbar = false;
75 form.Controls.Add (progressBar);
78 Assert.AreEqual (Color.White, progressBar.ForeColor, "#B1");
79 progressBar.ForeColor = Color.Red;
80 Assert.AreEqual (Color.Red, progressBar.ForeColor, "#B2");
81 progressBar.ForeColor = Color.Red;
82 Assert.AreEqual (Color.Red, progressBar.ForeColor, "#B3");
83 progressBar.ForeColor = Color.Blue;
84 Assert.AreEqual (Color.Blue, progressBar.ForeColor, "#B4");
90 public void ResetForeColor ()
92 ProgressBar progressBar = new ProgressBar ();
93 progressBar.ForeColor = Color.Red;
94 progressBar.ResetForeColor ();
96 Assert.AreEqual (SystemColors.Highlight, progressBar.ForeColor);
98 Assert.AreEqual (SystemColors.ControlText, progressBar.ForeColor);
104 [ExpectedException (typeof (ArgumentOutOfRangeException))]
106 [ExpectedException (typeof (ArgumentException))]
108 public void ValueTest ()
110 ProgressBar myProgressBar = new ProgressBar ();
111 myProgressBar.Value = -1;
112 myProgressBar.Value = 100;
118 Type expectedArgExType;
120 expectedArgExType = typeof (ArgumentOutOfRangeException);
122 expectedArgExType = typeof (ArgumentException);
125 ProgressBar c = new ProgressBar ();
126 Assert.AreEqual (0, c.Minimum, "default_min");
127 Assert.AreEqual (100, c.Maximum, "default_max");
128 Assert.AreEqual (0, c.Value, "default_value");
132 Assert.Fail ("should have thrown -- Min-1");
133 } catch (ArgumentException ex) {
134 // MSDN says ArgumentException, but really its *subtype* ArgumentOutOfRangeException.
135 // Actually it changed in FX2.
136 Assert.AreEqual (expectedArgExType, ex.GetType (), "Typeof Min-1");
138 Assert.AreEqual ("Minimum", ex.ParamName, "ParamName Min-1"); // (culture insensitive).
143 Assert.Fail ("should have thrown -- Max-1");
144 } catch (ArgumentException ex) {
145 Assert.AreEqual (expectedArgExType, ex.GetType (), "Typeof Max-1");
147 Assert.AreEqual ("Maximum", ex.ParamName, "ParamName Max-1"); // (culture insensitive).
150 Assert.AreEqual (0, c.Minimum, "after Min/Max-1_min");
151 Assert.AreEqual (100, c.Maximum, "after Min/Max-1_max");
152 Assert.AreEqual (0, c.Value, "after Min/Max-1_value");
154 // What happens when Min/Max is set respectively above/below the current Value
155 // and Max/Min values.
157 Assert.AreEqual (200, c.Minimum, "200L_min");
158 Assert.AreEqual (200, c.Maximum, "200L_max");
159 Assert.AreEqual (200, c.Value, "200L_value");
162 Assert.AreEqual (50, c.Minimum, "50L_min");
163 Assert.AreEqual (200, c.Maximum, "50L_max");
164 Assert.AreEqual (200, c.Value, "50L_value");
167 Assert.AreEqual (30, c.Minimum, "30T_min");
168 Assert.AreEqual (30, c.Maximum, "30T_max");
169 Assert.AreEqual (30, c.Value, "30T_value");
171 // What happens when Value is set outside the Min/Max ranges.
173 Assert.AreEqual (30, c.Minimum, "50T_min");
174 Assert.AreEqual (50, c.Maximum, "50T_max");
176 Assert.AreEqual (45, c.Value, "50T_value");
179 Assert.Fail ("should have thrown -- 29");
180 } catch (ArgumentException ex) {
181 Assert.AreEqual (expectedArgExType, ex.GetType (), "Typeof 29");
183 Assert.AreEqual ("Value", ex.ParamName, "ParamName 29");
186 Assert.AreEqual (45, c.Value, "after 29_value");
189 Assert.Fail ("should have thrown -- 51");
190 } catch (ArgumentException ex) {
191 Assert.AreEqual (expectedArgExType, ex.GetType (), "Typeof 51");
193 Assert.AreEqual ("Value", ex.ParamName, "ParamName 151");
196 Assert.AreEqual (45, c.Value, "after 51_value");
200 public void PerformStepAndIncrement ()
202 ProgressBar c = new ProgressBar ();
206 Assert.AreEqual (10, c.Value, "StepAt30_Init");
208 Assert.AreEqual (40, c.Value, "StepAt30_1");
210 Assert.AreEqual (70, c.Value, "StepAt30_2");
214 Assert.AreEqual (0, c.Value, "StepAt20_Init");
217 Assert.AreEqual (20, c.Value, "StepAt20_1");
219 Assert.AreEqual (40, c.Value, "StepAt20_2");
221 Assert.AreEqual (60, c.Value, "StepAt20_3");
223 Assert.AreEqual (80, c.Value, "StepAt20_4");
225 Assert.AreEqual (100, c.Value, "StepAt20_5");
227 Assert.AreEqual (100, c.Value, "StepAt20_6x");
229 Assert.AreEqual (100, c.Value, "StepAt20_7x");
232 Assert.AreEqual (100, c.Value, "StepAt2Neg0_Init");
234 Assert.AreEqual (80, c.Value, "StepAtNeg20_1");
236 Assert.AreEqual (60, c.Value, "StepAtNeg20_2");
239 Assert.AreEqual (60, c.Value, "StepAt2Neg40_Init");
241 Assert.AreEqual (20, c.Value, "StepAtNeg40_1");
243 Assert.AreEqual (0, c.Value, "StepAtNeg40_2");
245 Assert.AreEqual (0, c.Value, "StepAtNeg40_2");
248 Assert.AreEqual (30, c.Value, "Increment30_1");
250 Assert.AreEqual (60, c.Value, "Increment30_2");
252 Assert.AreEqual (90, c.Value, "Increment30_3");
254 Assert.AreEqual (100, c.Value, "Increment30_4x");
259 public void Styles ()
261 ProgressBar c = new ProgressBar ();
263 Assert.AreEqual(ProgressBarStyle.Blocks, c.Style, "orig=blocks");
265 c.Style = ProgressBarStyle.Continuous;
267 c.Style = ProgressBarStyle.Marquee;
268 // Increment and PerformStep are documented to fail in Marquee style.
271 Assert.Fail ("should have thrown -- Increment");
272 } catch (InvalidOperationException) {
276 Assert.Fail ("should have thrown -- PerformStep ");
277 } catch (InvalidOperationException) {
279 // What about the other value-related properties? No fail apparently!
284 // Now undefined style values...
286 c.Style = (ProgressBarStyle)4;
287 Assert.Fail("should have thrown -- bad style4");
288 } catch (global::System.ComponentModel.InvalidEnumArgumentException ex) {
289 //Console.WriteLine(ex.Message);
290 Assert.AreEqual(typeof(global::System.ComponentModel.InvalidEnumArgumentException), ex.GetType (), "Typeof bad style4");
291 Assert.AreEqual("value", ex.ParamName, "ParamName bad style 4");
294 c.Style = (ProgressBarStyle)99;
295 Assert.Fail("should have thrown -- bad style99");
296 } catch (global::System.ComponentModel.InvalidEnumArgumentException ex) {
297 Assert.AreEqual (typeof(global::System.ComponentModel.InvalidEnumArgumentException), ex.GetType (), "Typeof bad style99");
298 Assert.AreEqual ("value", ex.ParamName, "ParamName bad style 99");
304 public void ToStringMethodTest ()
306 ProgressBar myProgressBar = new ProgressBar ();
307 myProgressBar.Text = "New ProgressBar";
308 Assert.AreEqual ("System.Windows.Forms.ProgressBar, Minimum: 0, Maximum: 100, Value: 0", myProgressBar.ToString (), "#T3");
310 // [MonoTODO("Add test for method Increment (Visual Test)")]
311 // [MonoTODO("Add test for method PerformStep (Visual Test)")]