AutoResetEventTest.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. //
  2. // AutoResetEventTest.cs - NUnit test cases for System.Threading.AutoResetEvent
  3. //
  4. // Author:
  5. // Gonzalo Paniagua Javier ([email protected])
  6. // Gert Driesen <[email protected]>
  7. //
  8. // Copyright 2005 Novell, Inc (http://www.novell.com)
  9. // Copyright 2007 Gert Driesen
  10. //
  11. using NUnit.Framework;
  12. using System;
  13. using System.Threading;
  14. #if NET_2_0
  15. using Microsoft.Win32.SafeHandles;
  16. #endif
  17. namespace MonoTests.System.Threading
  18. {
  19. [TestFixture]
  20. public class AutoResetEventTest
  21. {
  22. [Test]
  23. public void MultipleSet ()
  24. {
  25. AutoResetEvent evt = new AutoResetEvent (true);
  26. Assert.IsTrue (evt.WaitOne (1000, false), "#1");
  27. evt.Set ();
  28. evt.Set ();
  29. Assert.IsTrue (evt.WaitOne (1000, false), "#2");
  30. Assert.IsFalse (evt.WaitOne (1000, false), "#3");
  31. }
  32. #if NET_2_0
  33. [Test] // bug #81529
  34. public void SafeWaitHandle ()
  35. {
  36. AutoResetEvent are1 = new AutoResetEvent (false);
  37. AutoResetEvent are2 = new AutoResetEvent (false);
  38. SafeWaitHandle swh1 = are1.SafeWaitHandle;
  39. SafeWaitHandle swh2 = are2.SafeWaitHandle;
  40. are1.SafeWaitHandle = are2.SafeWaitHandle;
  41. Assert.AreSame (are1.SafeWaitHandle, are2.SafeWaitHandle, "#1");
  42. Assert.AreEqual (are1.Handle, are2.Handle, "#2");
  43. Assert.IsFalse (are1.SafeWaitHandle.IsInvalid, "#3");
  44. Assert.IsFalse (are1.SafeWaitHandle.IsClosed, "#4");
  45. Assert.IsFalse (swh1.IsClosed, "#5");
  46. Assert.IsFalse (swh1.IsInvalid, "#6");
  47. swh1.Dispose ();
  48. are1.Close ();
  49. }
  50. [Test] // bug #81529
  51. public void SafeWaitHandle_Null ()
  52. {
  53. AutoResetEvent are1 = new AutoResetEvent (false);
  54. SafeWaitHandle swh1 = are1.SafeWaitHandle;
  55. are1.SafeWaitHandle = null;
  56. Assert.IsNotNull (are1.SafeWaitHandle, "#1");
  57. Assert.AreEqual (-1, (int) are1.Handle, "#2");
  58. Assert.IsTrue (are1.SafeWaitHandle.IsInvalid, "#3");
  59. Assert.IsFalse (are1.SafeWaitHandle.IsClosed, "#4");
  60. Assert.IsFalse (swh1.IsClosed, "#5");
  61. Assert.IsFalse (swh1.IsInvalid, "#6");
  62. }
  63. [Test] // bug #81529
  64. public void Handle_Valid ()
  65. {
  66. AutoResetEvent are1 = new AutoResetEvent (false);
  67. SafeWaitHandle swh1 = are1.SafeWaitHandle;
  68. Assert.IsFalse (swh1.IsClosed, "#1");
  69. Assert.IsFalse (swh1.IsInvalid, "#2");
  70. IntPtr dummyHandle = (IntPtr) 2;
  71. are1.Handle = dummyHandle;
  72. Assert.AreEqual (are1.Handle, dummyHandle, "#3");
  73. Assert.IsFalse (swh1.IsClosed, "#4");
  74. Assert.IsFalse (swh1.IsClosed, "#5");
  75. Assert.IsFalse (swh1.IsInvalid, "#6");
  76. Assert.IsFalse (are1.SafeWaitHandle.IsClosed, "#7");
  77. Assert.IsFalse (are1.SafeWaitHandle.IsInvalid, "#8");
  78. are1.Close ();
  79. swh1.Dispose ();
  80. }
  81. [Test] // bug #81529
  82. public void Handle_Invalid ()
  83. {
  84. AutoResetEvent are1 = new AutoResetEvent (false);
  85. SafeWaitHandle swh1 = are1.SafeWaitHandle;
  86. are1.Handle = (IntPtr) (-1);
  87. Assert.IsTrue (swh1 != are1.SafeWaitHandle, "#1");
  88. Assert.IsFalse (swh1.IsClosed, "#2");
  89. Assert.IsFalse (swh1.IsInvalid, "#3");
  90. Assert.IsFalse (are1.SafeWaitHandle.IsClosed, "#4");
  91. Assert.IsTrue (are1.SafeWaitHandle.IsInvalid, "#5");
  92. are1.Close ();
  93. swh1.Dispose ();
  94. }
  95. [Test] // bug #81529
  96. public void Handle_ZeroPtr ()
  97. {
  98. AutoResetEvent are1 = new AutoResetEvent (false);
  99. SafeWaitHandle swh1 = are1.SafeWaitHandle;
  100. are1.Handle = IntPtr.Zero;
  101. Assert.IsTrue (swh1 != are1.SafeWaitHandle, "#1");
  102. Assert.IsFalse (swh1.IsClosed, "#2");
  103. Assert.IsFalse (swh1.IsInvalid, "#3");
  104. Assert.IsFalse (are1.SafeWaitHandle.IsClosed, "#4");
  105. Assert.IsTrue (are1.SafeWaitHandle.IsInvalid, "#5");
  106. are1.Close ();
  107. swh1.Dispose ();
  108. }
  109. #endif
  110. }
  111. }