+2009-10-22 Sebastien Pouliot <sebastien@ximian.com>
+
+ * corlib_test.dll.sources: Add System/WeakReferenceTest and
+ System.Threading/EventWaitHandleTest.cs
+
2009-10-21 Sebastien Pouliot <sebastien@ximian.com>
* corlib_test.dll.sources: Add System.Threading/WaitHandleTest.cs
-2009-10-22 Sebastien Pouliot <sebastien@ximian.com>
+2009-10-22 Sebastien Pouliot <sebastien@ximian.com>
+ * EventWaitHandle.cs: Add validation on the EventResetMode
+ parameter used in the constructors
* Monitor.cs: Fix validations for TryEnter and Wait. Reduce
duplicated code between overloads.
{
Handle = handle;
}
+
+ private bool IsManualReset (EventResetMode mode)
+ {
+ if ((mode < EventResetMode.AutoReset) || (mode > EventResetMode.ManualReset))
+ throw new ArgumentException ("mode");
+ return (mode == EventResetMode.ManualReset);
+ }
public EventWaitHandle (bool initialState, EventResetMode mode)
{
bool created;
-
- Handle = NativeEventCalls.CreateEvent_internal ((mode == EventResetMode.ManualReset), initialState, null, out created);
+ bool manual = IsManualReset (mode);
+ Handle = NativeEventCalls.CreateEvent_internal (manual, initialState, null, out created);
}
public EventWaitHandle (bool initialState, EventResetMode mode,
string name)
{
bool created;
-
- Handle = NativeEventCalls.CreateEvent_internal ((mode == EventResetMode.ManualReset), initialState, name, out created);
+ bool manual = IsManualReset (mode);
+ Handle = NativeEventCalls.CreateEvent_internal (manual, initialState, name, out created);
}
public EventWaitHandle (bool initialState, EventResetMode mode,
string name, out bool createdNew)
{
- Handle = NativeEventCalls.CreateEvent_internal ((mode == EventResetMode.ManualReset), initialState, name, out createdNew);
+ bool manual = IsManualReset (mode);
+ Handle = NativeEventCalls.CreateEvent_internal (manual, initialState, name, out createdNew);
}
#if !NET_2_1
[MonoTODO ("Implement access control")]
string name, out bool createdNew,
EventWaitHandleSecurity eventSecurity)
{
- Handle = NativeEventCalls.CreateEvent_internal ((mode == EventResetMode.ManualReset), initialState, name, out createdNew);
+ bool manual = IsManualReset (mode);
+ Handle = NativeEventCalls.CreateEvent_internal (manual, initialState, name, out createdNew);
}
[MonoTODO]
-2009-10-22 Sebastien Pouliot <sebastien@ximian.com>
+2009-10-22 Sebastien Pouliot <sebastien@ximian.com>
+ * EventWaitHandleTest.cs: New. Test case for EventResetMode
+ validation
* MonitorTest.cs: Mark existing tests as "NotWorking" since they
fail in MS FX2 (maybe they worked in 1.x?). Add more test cases
to validate the TryEnter and Wait overloaded methods.
--- /dev/null
+//
+// EventWaitHandleTest.cs - NUnit Test Cases for EventWaitHandle
+//
+// Author:
+// Sebastien Pouliot (sebastien@ximian.com)
+//
+// Copyright (C) 2009 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_2_0
+
+using System;
+using System.Threading;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Threading {
+
+ [TestFixture]
+ public class EventWaitHandleTest {
+
+ [Test]
+ [ExpectedException (typeof (ArgumentException))]
+ public void EventWaitHandle_InvalidEventResetMode ()
+ {
+ new EventWaitHandle (true, (EventResetMode) Int32.MinValue);
+ }
+ }
+}
+
+#endif
+
+2009-10-22 Sebastien Pouliot <sebastien@ximian.com>
+
+ * WeakReferenceTest.cs: New. Basic test cases
+
2009-10-06 Jonathan Chambers <joncham@gmail.com>
* StringTest.cs (Contains): Add test for Contains using
an Ordinal compare. Bug #535425.
-
2009-09-24 Zoltan Varga <vargaz@gmail.com>
* TypeTest.cs: Add a test for missing.
--- /dev/null
+//
+// WeakReferenceTest.cs - NUnit Test Cases for WeakReference
+//
+// Author:
+// Sebastien Pouliot (sebastien@ximian.com)
+//
+// Copyright (C) 2009 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+using NUnit.Framework;
+
+namespace MonoTests.System {
+
+ [TestFixture]
+ public class WeakReferenceTest {
+
+ [Test]
+ public void WeakReference_Object_Null ()
+ {
+ WeakReference wr = new WeakReference (null);
+ Assert.IsFalse (wr.IsAlive, "IsAlive");
+ Assert.IsNull (wr.Target, "Target");
+ Assert.IsFalse (wr.TrackResurrection, "TrackResurrection");
+ }
+
+ [Test]
+ public void WeakReference_Object_Null_TrackResurrection_True ()
+ {
+ WeakReference wr = new WeakReference (null, true);
+ Assert.IsFalse (wr.IsAlive, "IsAlive");
+ Assert.IsNull (wr.Target, "Target");
+ Assert.IsTrue (wr.TrackResurrection, "TrackResurrection");
+ }
+
+ [Test]
+ public void WeakReference_Object_Null_TrackResurrection_False ()
+ {
+ WeakReference wr = new WeakReference (null, false);
+ Assert.IsFalse (wr.IsAlive, "IsAlive");
+ Assert.IsNull (wr.Target, "Target");
+ Assert.IsFalse (wr.TrackResurrection, "TrackResurrection");
+ }
+
+ [Test]
+ public void WeakReference_Object ()
+ {
+ using (Stream s = Stream.Null) {
+ WeakReference wr = new WeakReference (s);
+ Assert.IsTrue (wr.IsAlive, "IsAlive");
+ Assert.AreSame (s, wr.Target, "Target");
+ Assert.IsFalse (wr.TrackResurrection, "TrackResurrection");
+ }
+ }
+
+ [Test]
+ public void WeakReference_Object_TrackResurrection_True ()
+ {
+ using (Stream s = Stream.Null) {
+ WeakReference wr = new WeakReference (s, true);
+ Assert.IsTrue (wr.IsAlive, "IsAlive");
+ Assert.AreSame (s, wr.Target, "Target");
+ Assert.IsTrue (wr.TrackResurrection, "TrackResurrection");
+ }
+ }
+
+ [Test]
+ public void WeakReference_Object_TrackResurrection_False ()
+ {
+ using (Stream s = Stream.Null) {
+ WeakReference wr = new WeakReference (s, false);
+ Assert.IsTrue (wr.IsAlive, "IsAlive");
+ Assert.AreSame (s, wr.Target, "Target");
+ Assert.IsFalse (wr.TrackResurrection, "TrackResurrection");
+ }
+ }
+ }
+}
+
System.Text/UTF32EncodingTest.cs
System.Threading/AutoResetEventTest.cs
System.Threading/CompressedStackTest.cs
+System.Threading/EventWaitHandleTest.cs
System.Threading/ExecutionContextTest.cs
System.Threading/MonitorTest.cs
System.Threading/MutexTest.cs
System/UIntPtrTest.cs
System/VersionTest.cs
System/ValueTypeTest.cs
+System/WeakReferenceTest.cs
System/ActivatorCas.cs
System/AppDomainCas.cs
System/BadImageFormatExceptionCas.cs