1 
2 using System;
3 using NUnit.Framework;
4 using System.Windows.Forms;
5 using System.Drawing;
6 using System.Threading;
7 
8 namespace MonoTests.System.Windows.Forms
9 {
10 	[TestFixture]
11 	public class EventClass : TestHelper
12 	{
13 		static bool eventhandled = false;
Event_Handler1(object sender, EventArgs e)14 		public static void Event_Handler1 (object sender, EventArgs e)
15 		{
16 			eventhandled = true;
17 		}
18 
19 		[Test]
BackColorChangedTest()20 		public void BackColorChangedTest ()
21 		{
22 			Control c = new Control ();
23 			// Test BackColorChanged Event
24 			c.BackColorChanged += new EventHandler (Event_Handler1);
25 			c.BackColor = Color.Black;
26 			Assert.AreEqual (true, eventhandled, "#A1");
27 
28 		}
29 
30 		[Test]
BgrndImageChangedTest()31 		public void BgrndImageChangedTest ()
32 		{
33 			Control c = new Control ();
34 			// Test BackgroundImageChanged Event
35 			c.BackgroundImageChanged += new EventHandler (Event_Handler1);
36 			string abc = "M.gif";
37 			eventhandled = false;
38 			c.BackgroundImage = Image.FromFile (abc);
39 			Assert.AreEqual (true, eventhandled, "#A2");
40 		}
41 
42 		[Test]
BindingContextChangedTest()43 		public void BindingContextChangedTest ()
44 		{
45 			Control c = new Control ();
46 			// Test BindingContextChanged Event
47 			c.BindingContextChanged += new EventHandler (Event_Handler1);
48 			BindingContext bcG1 = new BindingContext ();
49 			eventhandled = false;
50 			c.BindingContext = bcG1;
51 			Assert.AreEqual (true, eventhandled, "#A3");
52 
53 		}
54 
55 		[Test]
CausesValidationChangedTest()56 		public void CausesValidationChangedTest ()
57 		{
58 			Control c = new Control ();
59 			// Test CausesValidationChanged Event
60 			c.CausesValidationChanged += new EventHandler (Event_Handler1);
61 			eventhandled = false;
62 			c.CausesValidation = false;
63 			Assert.AreEqual (true, eventhandled, "#A4");
64 
65 		}
66 
67 		[Test]
CursorChangedTest()68 		public void CursorChangedTest ()
69 		{
70 			Control c = new Control ();
71 			// Test CursorChanged Event
72 			c.CursorChanged += new EventHandler (Event_Handler1);
73 			eventhandled = false;
74 			c.Cursor = Cursors.Hand;
75 			Assert.AreEqual (true, eventhandled, "#A6");
76 		}
77 
78 		[Test]
DisposedTest()79 		public void DisposedTest ()
80 		{
81 			Control c = new Control ();
82 			// Test Disposed Event
83 			c.Disposed += new EventHandler (Event_Handler1);
84 			eventhandled = false;
85 			c.Dispose ();
86 			Assert.AreEqual (true, eventhandled, "#A7");
87 		}
88 
89 		[Test]
DockChangedTest()90 		public void DockChangedTest ()
91 		{
92 			Control c = new Control ();
93 			// Test DockChanged Event
94 			c.DockChanged += new EventHandler (Event_Handler1);
95 			eventhandled = false;
96 			c.Dock = DockStyle.Bottom;
97 			Assert.AreEqual (true, eventhandled, "#A8");
98 		}
99 
100 		[Test]
EnabledChangedTest()101 		public void EnabledChangedTest ()
102 		{
103 			Control c = new Control ();
104 			// Test EnabledChanged Event
105 			c.EnabledChanged += new EventHandler (Event_Handler1);
106 			eventhandled = false;
107 			c.Enabled = false;
108 			Assert.AreEqual (true, eventhandled, "#A9");
109 		}
110 
111 		[Test]
FontChangedTest()112 		public void FontChangedTest ()
113 		{
114 			Control c = new Control ();
115 			// Test FontChanged Event
116 			c.FontChanged += new EventHandler (Event_Handler1);
117 			eventhandled = false;
118 			c.Font = new Font (c.Font, FontStyle.Bold);
119 			Assert.AreEqual (true, eventhandled, "#A11");
120 		}
121 
122 		[Test]
ForeColorChangedTest()123 		public void ForeColorChangedTest ()
124 		{
125 			Control c = new Control ();
126 			// Test ForeColorChanged Event
127 			c.ForeColorChanged += new EventHandler (Event_Handler1);
128 			eventhandled = false;
129 			c.ForeColor = Color.Red;
130 			Assert.AreEqual (true, eventhandled, "#A12");
131 		}
132 
133 		[Test]
HandleCreatedTest()134 		public void HandleCreatedTest ()
135 		{
136 			Control c = new Control ();
137 			// Test HandleCreated Event
138 			c.HandleCreated += new EventHandler (Event_Handler1);
139 			eventhandled = false;
140 			c.Handle.GetType ();
141 			Assert.AreEqual (true, eventhandled, "#A15");
142 		}
143 
144 		[Test]
ImeModeChangedTest()145 		public void ImeModeChangedTest ()
146 		{
147 			Control c = new Control ();
148 			// Test ImeModeChanged Event
149 			c.ImeModeChanged += new EventHandler (Event_Handler1);
150 			eventhandled = false;
151 			c.ImeMode = ImeMode.Off;
152 			Assert.AreEqual (true, eventhandled, "#A19");
153 		}
154 
155 		[Test]
LocationChangedTest()156 		public void LocationChangedTest ()
157 		{
158 			Control c = new Control ();
159 			// Test LocationChanged Event
160 			c.LocationChanged += new EventHandler (Event_Handler1);
161 			eventhandled = false;
162 			c.Left = 20;
163 			Assert.AreEqual (true, eventhandled, "#A20");
164 		}
165 
166 		[Test]
ResizeTest()167 		public void ResizeTest ()
168 		{
169 			Control c = new Control ();
170 			// Test Resize Event
171 			c.Resize += new EventHandler (Event_Handler1);
172 			eventhandled = false;
173 			c.Height = 20;
174 			Assert.AreEqual (true, eventhandled, "#A22");
175 		}
176 
177 		[Test]
RightToLeftChangedTest()178 		public void RightToLeftChangedTest ()
179 		{
180 			Control c = new Control ();
181 			// Test RightToLeftChanged Event
182 			c.RightToLeftChanged += new EventHandler (Event_Handler1);
183 			eventhandled = false;
184 			c.RightToLeft = RightToLeft.Yes;
185 			Assert.AreEqual (true, eventhandled, "#A23");
186 		}
187 
188 		[Test]
SizeChangedTest()189 		public void SizeChangedTest ()
190 		{
191 			Control c = new Control ();
192 			// Test SizeChanged Event
193 			c.SizeChanged += new EventHandler (Event_Handler1);
194 			eventhandled = false;
195 			c.Height = 80;
196 			Assert.AreEqual (true, eventhandled, "#A24");
197 		}
198 
199 		[Test]
TabIndexChangedTest()200 		public void TabIndexChangedTest ()
201 		{
202 			Control c = new Control ();
203 			// Test TabIndexChanged Event
204 			c.TabIndexChanged += new EventHandler (Event_Handler1);
205 			eventhandled = false;
206 			c.TabIndex = 1;
207 			Assert.AreEqual (true, eventhandled, "#A27");
208 		}
209 
210 		[Test]
TabStopChangedTest()211 		public void TabStopChangedTest ()
212 		{
213 			Control c = new Control ();
214 			// Test TabStopChanged Event
215 			c.TabStopChanged += new EventHandler (Event_Handler1);
216 			eventhandled = false;
217 			c.TabStop = false;
218 			Assert.AreEqual (true, eventhandled, "#A28");
219 		}
220 
221 		[Test]
TextChangedTest()222 		public void TextChangedTest ()
223 		{
224 			Control c = new Control ();
225 			// Test TextChanged Event
226 			c.TextChanged += new EventHandler (Event_Handler1);
227 			eventhandled = false;
228 			c.Text = "some Text";
229 			Assert.AreEqual (true, eventhandled, "#A29");
230 		}
231 
232 		[Test]
VisibleChangedTest()233 		public void VisibleChangedTest ()
234 		{
235 			Control c = new Control ();
236 			// Test VisibleChanged Event
237 			c.VisibleChanged += new EventHandler (Event_Handler1);
238 			eventhandled = false;
239 			c.Visible = false;
240 			Assert.AreEqual (true, eventhandled, "#A30");
241 		}
242 	}
243 
244 
245 	[TestFixture]
246 	public class LayoutEventClass
247 	{
248 		static bool eventhandled = false;
LayoutEvent(object sender, LayoutEventArgs e)249 		public static void LayoutEvent (object sender, LayoutEventArgs e)
250 		{
251 			eventhandled = true;
252 		}
253 
254 		[Test]
LayoutTest()255 		public void LayoutTest ()
256 		{
257 			Control c = new Control ();
258 			c.Layout += new LayoutEventHandler (LayoutEvent);
259 			eventhandled = false;
260 			c.Visible = true;
261 			c.Height = 100;
262 			Assert.AreEqual (true, eventhandled, "#D1");
263 		}
264 
265 		int event_count;
266 		int resize_event;
267 		int size_changed_event;
268 		int layout_event;
269 
resize(object sender, EventArgs e)270 		void resize (object sender, EventArgs e)
271 		{
272 			resize_event = ++event_count;
273 		}
274 
layout(object sender, LayoutEventArgs le)275 		void layout (object sender, LayoutEventArgs le)
276 		{
277 			layout_event = ++event_count;
278 		}
279 
size_changed(object sender, EventArgs e)280 		void size_changed (object sender, EventArgs e)
281 		{
282 			size_changed_event = ++event_count;
283 		}
284 
285 		[Test]
LayoutResizeTest()286 		public void LayoutResizeTest ()
287 		{
288 			Control c = new Control ();
289 			c.Layout += new LayoutEventHandler (layout);
290 			c.Resize += new EventHandler (resize);
291 			c.SizeChanged += new EventHandler (size_changed);
292 			c.Size = new Size (100, 100);
293 			Assert.AreEqual (1, layout_event, "1");
294 			Assert.AreEqual (2, resize_event, "2");
295 			Assert.AreEqual (3, size_changed_event, "3");
296 		}
297 	}
298 
299 	[TestFixture]
300 	public class ControlAddRemoveEventClass
301 	{
302 		static bool eventhandled = false;
ControlEvent(object sender, ControlEventArgs e)303 		public static void ControlEvent (object sender, ControlEventArgs e)
304 		{
305 			eventhandled = true;
306 		}
307 
308 		[Test]
ControlAddedTest()309 		public void ControlAddedTest ()
310 		{
311 			Control c = new Control ();
312 			c.ControlAdded += new ControlEventHandler (ControlEvent);
313 			TextBox TB = new TextBox ();
314 			eventhandled = false;
315 			c.Controls.Add (TB);
316 			Assert.AreEqual (true, eventhandled, "#F1");
317 		}
318 
319 		[Test]
ControlRemovedTest()320 		public void ControlRemovedTest ()
321 		{
322 			Control c = new Control ();
323 			c.ControlRemoved += new ControlEventHandler (ControlEvent);
324 			TextBox TB = new TextBox ();
325 			c.Controls.Add (TB);
326 			eventhandled = false;
327 			c.Controls.Remove (TB);
328 			Assert.AreEqual (true, eventhandled, "#F2");
329 		}
330 	}
331 
332 	[TestFixture]
333 	public class ControlRefresh : TestHelper
334 	{
335 		[SetUp]
SetUp()336 		protected override void SetUp () {
337 			invalidated = 0;
338 			base.SetUp ();
339 		}
340 
341 		[Test]
HandleNotCreated()342 		public void HandleNotCreated ()
343 		{
344 			Control c = new Control ();
345 			c.Invalidated += new InvalidateEventHandler (Control_Invalidated);
346 
347 			c.Visible = true;
348 			c.Refresh ();
349 			Assert.AreEqual (0, invalidated, "#1");
350 
351 			c.Visible = false;
352 			c.Refresh ();
353 			Assert.AreEqual (0, invalidated, "#2");
354 		}
355 
356 		[Test]
357 		[Category ("NotWorking")]
Visible()358 		public void Visible ()
359 		{
360 			Control c = new Control ();
361 			c.Invalidated += new InvalidateEventHandler (Control_Invalidated);
362 			c.Visible = true;
363 
364 			Form form = new Form ();
365 			form.ShowInTaskbar = false;
366 			form.Controls.Add (c);
367 
368 			form.Show ();
369 			Assert.AreEqual (0, invalidated, "#1");
370 
371 			c.Refresh ();
372 			Assert.AreEqual (1, invalidated, "#2");
373 
374 			form.Refresh ();
375 			Assert.AreEqual (1, invalidated, "#3");
376 		}
377 
378 		[Test]
NotVisible()379 		public void NotVisible ()
380 		{
381 			Control c = new Control ();
382 			c.Invalidated += new InvalidateEventHandler (Control_Invalidated);
383 			c.Visible = false;
384 
385 			Form form = new Form ();
386 			form.ShowInTaskbar = false;
387 			form.Controls.Add (c);
388 
389 			form.Show ();
390 			Assert.AreEqual (0, invalidated, "#1");
391 
392 			c.Refresh ();
393 			Assert.AreEqual (0, invalidated, "#2");
394 
395 			form.Refresh ();
396 			Assert.AreEqual (0, invalidated, "#3");
397 
398 			form.Close ();
399 		}
400 
Control_Invalidated(object sender, InvalidateEventArgs e)401 		private void Control_Invalidated (object sender, InvalidateEventArgs e)
402 		{
403 			invalidated++;
404 		}
405 
406 		private int invalidated;
407 	}
408 }
409