[mono-config] use right type for result of strlen
[mono.git] / mcs / class / System.Windows.Forms / Test / System.Windows.Forms / TrackBarTest.cs
1 //
2 // TrackBarTest.cs: Test cases for TrackBar.
3 //
4 // Author:
5 //   Ritvik Mayank (mritvik@novell.com)
6 //
7 // (C) 2005 Novell, Inc. (http://www.novell.com)
8 //
9
10 using System;
11 using System.Windows.Forms;
12 using System.Drawing;
13 using System.Reflection;
14 using NUnit.Framework;
15
16 namespace MonoTests.System.Windows.Forms
17 {
18         [TestFixture]
19         public class TrackBarBaseTest : TestHelper
20         {
21                 [Test]
22                 public void TrackBarPropertyTest ()
23                 {
24                         TrackBar myTrackBar = new TrackBar ();
25                         
26                         // A
27                         Assert.AreEqual (true, myTrackBar.AutoSize, "#A1");
28
29                         // L
30                         Assert.AreEqual (5, myTrackBar.LargeChange, "#L1");
31                         
32                         // M
33                         Assert.AreEqual (10, myTrackBar.Maximum, "#M1");
34                         Assert.AreEqual (0, myTrackBar.Minimum, "#M2");
35                         
36                         // O
37                         Assert.AreEqual (Orientation.Horizontal, myTrackBar.Orientation, "#O1");
38                                 
39                         // S
40                         Assert.AreEqual (1, myTrackBar.SmallChange, "#S1");
41
42                         // T
43                         Assert.AreEqual (1, myTrackBar.TickFrequency, "#T1");
44                         Assert.AreEqual (TickStyle.BottomRight, myTrackBar.TickStyle, "#T2");
45                         Assert.AreEqual ("", myTrackBar.Text, "#T3");
46                         myTrackBar.Text = "New TrackBar";
47                         Assert.AreEqual ("New TrackBar", myTrackBar.Text, "#T4");
48
49                         // V
50                         Assert.AreEqual (0, myTrackBar.Value, "#V1");
51                 }
52                 
53                 [Test]
54                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
55                 public void LargeChangeTest ()
56                 {
57                         TrackBar myTrackBar = new TrackBar ();
58                         myTrackBar.LargeChange = -1;
59                 }
60
61                 [Test]
62                 [ExpectedException (typeof (ArgumentOutOfRangeException))]
63                 public void SmallChangeTest ()
64                 {
65                         TrackBar myTrackBar = new TrackBar ();
66                         myTrackBar.SmallChange = -1;
67                 }
68
69                 [Test]
70                 public void SetRangeTest () 
71                 {
72                         TrackBar myTrackBar = new TrackBar ();
73                         myTrackBar.SetRange (2,9);
74                         Assert.AreEqual (9, myTrackBar.Maximum, "#setM1");
75                         Assert.AreEqual (2, myTrackBar.Minimum, "#setM2");
76                 }
77
78                 [Test]
79                 public void ToStringMethodTest () 
80                 {
81                         TrackBar myTrackBar = new TrackBar ();
82                         myTrackBar.Text = "New TrackBar";
83                         Assert.AreEqual ("System.Windows.Forms.TrackBar, Minimum: 0, Maximum: 10, Value: 0", myTrackBar.ToString (), "#T3");
84                 }
85
86                 [Test]
87                 public void OrientationSizeTest ()
88                 {       
89                         IntPtr handle;
90                         int width;
91                         int height ;
92                         int default_height = 45;
93                         int default_height2 = 42;
94
95                         using (TrackBar myTrackBar = new TrackBar()) {
96                                 width = myTrackBar.Width;
97                                 height = myTrackBar.Height;
98                                 myTrackBar.Orientation = Orientation.Vertical;
99                                 Assert.AreEqual(width, myTrackBar.Width, "#OS1");
100                                 Assert.AreEqual(height, myTrackBar.Height, "#OS2");
101                         }
102                         
103                         using (Form myForm = new Form()) {
104                                 using ( TrackBar myTrackBar = new TrackBar()) {
105                                         width = myTrackBar.Width;
106                                         height = myTrackBar.Height;
107                                         myForm.Controls.Add(myTrackBar);
108                                         handle = myTrackBar.Handle; // causes the handle to be created.
109                                         myTrackBar.Orientation = Orientation.Vertical;
110                                         AreEqual(default_height, default_height2, myTrackBar.Width,  "#OS3");
111                                         Assert.AreEqual(width, myTrackBar.Height, "#OS4");
112                                 }
113                         }
114
115                         using (Form myForm = new Form()) {
116                                 using ( TrackBar myTrackBar = new TrackBar()) {
117                                         myForm.Controls.Add(myTrackBar);
118                                         handle = myTrackBar.Handle; // causes the handle to be created.
119                                         myTrackBar.Width = 200;
120                                         myTrackBar.Orientation = Orientation.Vertical;
121                                         Assert.AreEqual(200, myTrackBar.Height, "#OS5");
122                                 }
123                         }
124                         Assert.AreEqual(handle, handle, "Removes warning");
125                 }
126         
127                 private void AreEqual(int expected1, int expected2, int real, string name)
128                 {
129                         // This is needed since the default size vary between XP theme and W2K theme.
130                         if (real != expected1 && real != expected2) {
131                                 Assert.Fail("{3}: Expected <{0}> or <{1}>, but was <{2}>", expected1, expected2, real, name);
132                         }
133                 }
134
135                 [Test]
136                 [Category ("NotWorking")]
137                 public void SizeTestSettingOrientation ()
138                 {
139                         IntPtr handle;
140                         int default_height = 45;
141                         int default_height2 = 42;
142
143                         using (TrackBar myTrackBar = new TrackBar()) {
144                                 myTrackBar.Width = 200;
145                                 myTrackBar.Height = 250;
146                                 myTrackBar.Orientation = Orientation.Vertical;
147                                 Assert.AreEqual(200, myTrackBar.Width, "#SIZE03");
148                                 AreEqual(default_height, default_height2, myTrackBar.Height, "#SIZE04");
149                         }
150
151                         using (TrackBar myTrackBar = new TrackBar()) {
152                                 myTrackBar.AutoSize = false;
153                                 myTrackBar.Width = 200;
154                                 myTrackBar.Height = 250;
155                                 myTrackBar.Orientation = Orientation.Vertical;
156                                 Assert.AreEqual(200, myTrackBar.Width, "#SIZE07");
157                                 Assert.AreEqual(250, myTrackBar.Height, "#SIZE08");
158                         }
159
160                         using (TrackBar myTrackBar = new TrackBar()) {
161                                 myTrackBar.Width = 200;
162                                 myTrackBar.Height = 250;
163                                 myTrackBar.AutoSize = false;
164                                 myTrackBar.Orientation = Orientation.Vertical;
165                                 Assert.AreEqual(200, myTrackBar.Width, "#SIZE11");
166                                 AreEqual(default_height, default_height2, myTrackBar.Height, "#SIZE12");
167                         }
168
169                         using (TrackBar myTrackBar = new TrackBar()) {
170                                 using (Form myForm = new Form()) {
171                                         myForm.Controls.Add(myTrackBar);
172                                         myTrackBar.Width = 200;
173                                         myTrackBar.Height = 250;
174                                         myTrackBar.Orientation = Orientation.Vertical;
175                                         handle = myTrackBar.Handle;
176                                         
177                                         AreEqual(default_height, default_height2, myTrackBar.Width, "#SIZE17");
178                                         AreEqual(default_height, default_height2, myTrackBar.Height, "#SIZE18");
179                                 }
180                         }
181
182                         using (TrackBar myTrackBar = new TrackBar()) {
183                                 using (Form myForm = new Form()) {
184                                         myForm.Controls.Add(myTrackBar);
185                                         myTrackBar.Width = 200;
186                                         myTrackBar.Height = 250;
187                                         myTrackBar.Orientation = Orientation.Vertical;
188                                         handle = myTrackBar.Handle;
189                                         
190                                         AreEqual(default_height, default_height2, myTrackBar.Width, "#SIZE19");
191                                         AreEqual(default_height, default_height2, myTrackBar.Height, "#SIZE20");
192                                 }
193                         }
194
195                         using (TrackBar myTrackBar = new TrackBar()) {
196                                 using (Form myForm = new Form()) {
197                                         myForm.Controls.Add(myTrackBar);
198                                         myTrackBar.Width = 200;
199                                         myTrackBar.Height = 250;
200                                         myTrackBar.Orientation = Orientation.Vertical;
201                                         handle = myTrackBar.Handle;
202                                         
203                                         myTrackBar.Orientation = Orientation.Horizontal;
204                                         
205                                         AreEqual(default_height, default_height2, myTrackBar.Width, "#SIZE23");
206                                         AreEqual(default_height, default_height2, myTrackBar.Height, "#SIZE24");
207                                 }
208                         }
209
210                         using (TrackBar myTrackBar = new TrackBar()) {
211                                 myTrackBar.AutoSize = false;
212                                 myTrackBar.Height = 50;
213                                 myTrackBar.Width = 80;
214                                 myTrackBar.Orientation = Orientation.Vertical;
215                                 myTrackBar.Width = 100;
216                                 
217                                 Assert.AreEqual(50, myTrackBar.Height, "#SIZE2_1");
218                                 Assert.AreEqual(100, myTrackBar.Width, "#SIZE2_2");
219                                 
220                                 using (Form myForm = new Form()){
221                                         myForm.Controls.Add(myTrackBar);
222                                         myForm.Show();
223                                         
224                                         Assert.AreEqual(50, myTrackBar.Height, "#SIZE2_3");
225                                         Assert.AreEqual(100, myTrackBar.Width, "#SIZE2_4");
226                                 }
227                         }
228
229                         Assert.AreEqual(handle, handle, "Removes warning");
230                 }
231
232                 [Test]
233                 public void SizeTest ()
234                 {
235                         IntPtr handle;
236                         int default_height = 45;
237                         int default_height2 = 42;
238                         
239                         using (TrackBar myTrackBar = new TrackBar()) {
240                                 myTrackBar.Width = 200;
241                                 myTrackBar.Height = 250;
242                                 Assert.AreEqual(200, myTrackBar.Width, "#SIZE01");
243                                 AreEqual(default_height, default_height2, myTrackBar.Height, "#SIZE02");
244                         }
245                         
246                         using (TrackBar myTrackBar = new TrackBar()) {
247                                 myTrackBar.AutoSize = false;
248                                 myTrackBar.Width = 200;
249                                 myTrackBar.Height = 250;
250                                 Assert.AreEqual(200, myTrackBar.Width, "#SIZE05");
251                                 Assert.AreEqual(250, myTrackBar.Height, "#SIZE06");
252                         }
253
254                         using (TrackBar myTrackBar = new TrackBar()) {
255                                 myTrackBar.Width = 200;
256                                 myTrackBar.Height = 250;
257                                 myTrackBar.AutoSize = false;
258                                 Assert.AreEqual(200, myTrackBar.Width, "#SIZE09");
259                                 AreEqual(default_height, default_height2, myTrackBar.Height, "#SIZE10");
260                         }
261
262                         using (TrackBar myTrackBar = new TrackBar()) {
263                                 using (Form myForm = new Form()) {
264                                         myForm.Controls.Add(myTrackBar);
265                                         myTrackBar.Width = 200;
266                                         myTrackBar.Height = 250;
267                                         myTrackBar.Orientation = Orientation.Vertical;
268                                         myTrackBar.Orientation = Orientation.Horizontal;
269                                         handle = myTrackBar.Handle;
270                                         
271                                         Assert.AreEqual(200, myTrackBar.Width, "#SIZE21");
272                                         AreEqual(default_height, default_height2, myTrackBar.Height, "#SIZE22");
273                                 }
274                         }
275
276                         Assert.AreEqual(handle, handle, "Removes warning");
277                 }
278
279                 [Test]
280                 public void EventsTest ()
281                 {
282                         TrackBar trackbar = new TrackBar ();
283                         trackbar.Maximum = 10;
284                         trackbar.Minimum = 1;
285                         trackbar.LargeChange = 2;
286
287                         trackbar.ValueChanged += new EventHandler (trackbar_ValueChanged);
288                         trackbar.Scroll += new EventHandler (trackbar_Scroll);
289
290                         trackbar.Value = 6;
291                         Assert.AreEqual ("ValueChanged=6;", event_log, "#A1");
292                 }
293
294                 string event_log;
295
296                 void trackbar_Scroll (object sender, EventArgs e)
297                 {
298                         event_log += "Scroll=" + ((TrackBar)sender).Value + ";";
299                 }
300
301                 void trackbar_ValueChanged (object sender, EventArgs e)
302                 {
303                         event_log += "ValueChanged=" + ((TrackBar)sender).Value + ";";
304                 }
305         }
306 }
307