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.ShowInTaskbar = false;
62 f1.HandleDestroyed += new EventHandler (form_handle_destroyed);
64 ctx = new ApplicationContext (f1);
65 ctx.ThreadExit += new EventHandler (thread_exit);
68 f1.DoDestroyHandle ();
70 Assert.AreEqual (true, reached_form_handle_destroyed, "3");
71 Assert.AreEqual (1, thread_exit_count, "4");
75 public void TestEventOrdering2 ()
77 thread_exit_count = 0;
78 reached_form_handle_destroyed = false;
80 MyForm f1 = new MyForm ();
81 f1.ShowInTaskbar = false;
83 ctx = new ApplicationContext (f1);
84 ctx.ThreadExit += new EventHandler (thread_exit);
86 f1.HandleDestroyed += new EventHandler (form_handle_destroyed2);
89 f1.DoDestroyHandle ();
90 Assert.AreEqual (true, reached_form_handle_destroyed, "3");
91 Assert.AreEqual (1, thread_exit_count, "4");
95 public void ThreadExitTest ()
97 thread_exit_count = 0;
99 MyForm f1 = new MyForm ();
100 f1.ShowInTaskbar = false;
101 ctx = new ApplicationContext (f1);
102 ctx.ThreadExit += new EventHandler (thread_exit);
104 Assert.AreEqual (f1, ctx.MainForm, "1");
105 f1.ShowInTaskbar = false;
108 Assert.AreEqual (f1, ctx.MainForm, "2");
109 Assert.AreEqual (1, thread_exit_count, "3");
112 ctx = new ApplicationContext (f1);
113 ctx.ThreadExit += new EventHandler (thread_exit);
114 f1.ShowInTaskbar = false;
116 f1.DoDestroyHandle ();
117 Assert.AreEqual (f1, ctx.MainForm, "4");
118 Assert.AreEqual (2, thread_exit_count, "5");