2 // ApplicationContextTest.cs
5 // Chris Toshok (toshok@ximian.com)
7 // (C) 2006 Novell, Inc. (http://www.novell.com)
11 using System.ComponentModel;
12 using System.Windows.Forms;
14 using System.Reflection;
15 using NUnit.Framework;
17 namespace MonoTests.System.Windows.Forms
21 public void DoDestroyHandle ()
29 public class ApplicationContextTest
31 ApplicationContext ctx;
32 int thread_exit_count;
33 bool reached_form_handle_destroyed;
35 void thread_exit (object sender, EventArgs e)
40 void form_handle_destroyed (object sender, EventArgs e)
42 Assert.AreEqual (0, thread_exit_count, "1");
43 Assert.AreEqual (sender, ctx.MainForm, "2");
44 reached_form_handle_destroyed = true;
47 void form_handle_destroyed2 (object sender, EventArgs e)
49 Assert.AreEqual (1, thread_exit_count, "1");
50 Assert.AreEqual (sender, ctx.MainForm, "2");
51 reached_form_handle_destroyed = true;
55 public void TestEventOrdering ()
57 thread_exit_count = 0;
58 reached_form_handle_destroyed = false;
60 MyForm f1 = new MyForm ();
61 f1.HandleDestroyed += new EventHandler (form_handle_destroyed);
63 ctx = new ApplicationContext (f1);
64 ctx.ThreadExit += new EventHandler (thread_exit);
67 f1.DoDestroyHandle ();
69 Assert.AreEqual (true, reached_form_handle_destroyed, "3");
70 Assert.AreEqual (1, thread_exit_count, "4");
74 public void TestEventOrdering2 ()
76 thread_exit_count = 0;
77 reached_form_handle_destroyed = false;
79 MyForm f1 = new MyForm ();
81 ctx = new ApplicationContext (f1);
82 ctx.ThreadExit += new EventHandler (thread_exit);
84 f1.HandleDestroyed += new EventHandler (form_handle_destroyed2);
87 f1.DoDestroyHandle ();
88 Assert.AreEqual (true, reached_form_handle_destroyed, "3");
89 Assert.AreEqual (1, thread_exit_count, "4");
93 public void ThreadExitTest ()
95 thread_exit_count = 0;
97 MyForm f1 = new MyForm ();
98 ctx = new ApplicationContext (f1);
99 ctx.ThreadExit += new EventHandler (thread_exit);
101 Assert.AreEqual (f1, ctx.MainForm, "1");
102 f1.ShowInTaskbar = false;
105 Assert.AreEqual (f1, ctx.MainForm, "2");
106 Assert.AreEqual (1, thread_exit_count, "3");
109 ctx = new ApplicationContext (f1);
110 ctx.ThreadExit += new EventHandler (thread_exit);
111 f1.ShowInTaskbar = false;
113 f1.DoDestroyHandle ();
114 Assert.AreEqual (f1, ctx.MainForm, "4");
115 Assert.AreEqual (2, thread_exit_count, "5");