ApplicationContextTest.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. //
  2. // ApplicationContextTest.cs
  3. //
  4. // Author:
  5. // Chris Toshok ([email protected])
  6. //
  7. // (C) 2006 Novell, Inc. (http://www.novell.com)
  8. //
  9. using System;
  10. using System.ComponentModel;
  11. using System.Windows.Forms;
  12. using System.Drawing;
  13. using System.Reflection;
  14. using NUnit.Framework;
  15. namespace MonoTests.System.Windows.Forms
  16. {
  17. class MyForm : Form
  18. {
  19. public void DoDestroyHandle ()
  20. {
  21. DestroyHandle();
  22. }
  23. }
  24. [TestFixture]
  25. public class ApplicationContextTest
  26. {
  27. ApplicationContext ctx;
  28. int thread_exit_count;
  29. bool reached_form_handle_destroyed;
  30. void thread_exit (object sender, EventArgs e)
  31. {
  32. thread_exit_count++;
  33. }
  34. void form_handle_destroyed (object sender, EventArgs e)
  35. {
  36. Assert.AreEqual (0, thread_exit_count, "1");
  37. Assert.AreEqual (sender, ctx.MainForm, "2");
  38. reached_form_handle_destroyed = true;
  39. }
  40. void form_handle_destroyed2 (object sender, EventArgs e)
  41. {
  42. Assert.AreEqual (1, thread_exit_count, "1");
  43. Assert.AreEqual (sender, ctx.MainForm, "2");
  44. reached_form_handle_destroyed = true;
  45. }
  46. [Test]
  47. public void TestEventOrdering ()
  48. {
  49. thread_exit_count = 0;
  50. reached_form_handle_destroyed = false;
  51. MyForm f1 = new MyForm ();
  52. f1.ShowInTaskbar = false;
  53. f1.HandleDestroyed += new EventHandler (form_handle_destroyed);
  54. ctx = new ApplicationContext (f1);
  55. ctx.ThreadExit += new EventHandler (thread_exit);
  56. f1.Show ();
  57. f1.DoDestroyHandle ();
  58. Assert.AreEqual (true, reached_form_handle_destroyed, "3");
  59. Assert.AreEqual (1, thread_exit_count, "4");
  60. }
  61. [Test]
  62. public void TestEventOrdering2 ()
  63. {
  64. thread_exit_count = 0;
  65. reached_form_handle_destroyed = false;
  66. MyForm f1 = new MyForm ();
  67. f1.ShowInTaskbar = false;
  68. ctx = new ApplicationContext (f1);
  69. ctx.ThreadExit += new EventHandler (thread_exit);
  70. f1.HandleDestroyed += new EventHandler (form_handle_destroyed2);
  71. f1.Show ();
  72. f1.DoDestroyHandle ();
  73. Assert.AreEqual (true, reached_form_handle_destroyed, "3");
  74. Assert.AreEqual (1, thread_exit_count, "4");
  75. }
  76. [Test]
  77. public void ThreadExitTest ()
  78. {
  79. thread_exit_count = 0;
  80. MyForm f1 = new MyForm ();
  81. f1.ShowInTaskbar = false;
  82. ctx = new ApplicationContext (f1);
  83. ctx.ThreadExit += new EventHandler (thread_exit);
  84. Assert.AreEqual (f1, ctx.MainForm, "1");
  85. f1.ShowInTaskbar = false;
  86. f1.Show ();
  87. f1.Dispose ();
  88. Assert.AreEqual (f1, ctx.MainForm, "2");
  89. Assert.AreEqual (1, thread_exit_count, "3");
  90. f1 = new MyForm ();
  91. ctx = new ApplicationContext (f1);
  92. ctx.ThreadExit += new EventHandler (thread_exit);
  93. f1.ShowInTaskbar = false;
  94. f1.Show ();
  95. f1.DoDestroyHandle ();
  96. Assert.AreEqual (f1, ctx.MainForm, "4");
  97. Assert.AreEqual (2, thread_exit_count, "5");
  98. }
  99. }
  100. }