public bool PosTest1()
    {
        bool retVal = true;

        TestLibrary.TestFramework.BeginScenario("PosTest1: Call Ctor to construct a new instance of WaitHandle");

        try
        {
            TestWaitHandle handle = new TestWaitHandle();

            if (handle == null)
            {
                TestLibrary.TestFramework.LogError("001.1", "Calling Ctor to construct a new instance of WaitHandle returns a null reference");
                retVal = false;
            }
        }
        catch (Exception e)
        {
            TestLibrary.TestFramework.LogError("001.0", "Unexpected exception: " + e);
            TestLibrary.TestFramework.LogInformation(e.StackTrace);
            retVal = false;
        }

        return retVal;
    }
 public static void SafeWaitHandle()
 {
     var eventWaitHandle = new ManualResetEvent(false);
     var eventSafeWaitHandle = eventWaitHandle.SafeWaitHandle;
     var testWaitHandle = new TestWaitHandle();
     testWaitHandle.SafeWaitHandle = eventSafeWaitHandle;
     Assert.False(testWaitHandle.WaitOne(0));
     eventWaitHandle.Set();
     Assert.True(testWaitHandle.WaitOne(0));
     testWaitHandle.SafeWaitHandle = null;
     Assert.Throws<ObjectDisposedException>(() => testWaitHandle.WaitOne(0));
 }
        public static void SafeWaitHandle()
        {
            var eventWaitHandle     = new ManualResetEvent(false);
            var eventSafeWaitHandle = eventWaitHandle.SafeWaitHandle;
            var testWaitHandle      = new TestWaitHandle();

            testWaitHandle.SafeWaitHandle = eventSafeWaitHandle;
            Assert.False(testWaitHandle.WaitOne(0));
            eventWaitHandle.Set();
            Assert.True(testWaitHandle.WaitOne(0));
            testWaitHandle.SafeWaitHandle = null;
            Assert.Throws <ObjectDisposedException>(() => testWaitHandle.WaitOne(0));
        }
Exemple #4
0
        public void WaitHandle_Handle()
        {
            var eventWaitHandle    = new ManualResetEvent(false);
            var eventRawWaitHandle = eventWaitHandle.Handle;
            var testWaitHandle     = new TestWaitHandle();

            testWaitHandle.Handle = eventRawWaitHandle;
            Assert.IsFalse(testWaitHandle.WaitOne(0));
            eventWaitHandle.Set();
            Assert.IsTrue(testWaitHandle.WaitOne(0));
            testWaitHandle.ClearHandle();
            AssertExtensions.Throws <ObjectDisposedException>(() => testWaitHandle.WaitOne(0));
        }
        public static void SafeWaitHandleViaExtension()
        {
            ManualResetEvent eventWaitHandle     = new ManualResetEvent(false);
            SafeWaitHandle   eventSafeWaitHandle = eventWaitHandle.GetSafeWaitHandle();
            TestWaitHandle   testWaitHandle      = new TestWaitHandle();

            testWaitHandle.SetSafeWaitHandle(eventSafeWaitHandle);
            Assert.False(testWaitHandle.WaitOne(0));
            eventWaitHandle.Set();
            Assert.True(testWaitHandle.WaitOne(0));
            testWaitHandle.SetSafeWaitHandle(null);
            Assert.Throws <ObjectDisposedException>(() => testWaitHandle.WaitOne(0));
        }
Exemple #6
0
        public static void SignalAndWait_InvalidArgs()
        {
            var toSignal = new ManualResetEvent(false);
            var toWaitOn = new ManualResetEvent(true);

            Assert.Throws <ArgumentNullException>(() => WaitHandle.SignalAndWait(null, toWaitOn));
            Assert.False(toSignal.WaitOne(0));
            Assert.Throws <ArgumentNullException>(() => WaitHandle.SignalAndWait(toSignal, null));
            Assert.False(toSignal.WaitOne(0));

            Assert.Throws <ArgumentOutOfRangeException>(() => WaitHandle.SignalAndWait(toSignal, toWaitOn, -2, false));
            Assert.False(toSignal.WaitOne(0));
            Assert.True(WaitHandle.SignalAndWait(toSignal, toWaitOn, -1, false));
            Assert.True(toSignal.WaitOne(0));
            toSignal.Reset();

            var invalidWh = new TestWaitHandle();

            Assert.Throws <ObjectDisposedException>(() => WaitHandle.SignalAndWait(invalidWh, toWaitOn));
            Assert.False(toSignal.WaitOne(0));
            Assert.Throws <ObjectDisposedException>(() => WaitHandle.SignalAndWait(toSignal, invalidWh));
            Assert.False(toSignal.WaitOne(0));
        }
Exemple #7
0
 public static void DisposeVirtual_ThroughDispose()
 {
     var wh = new TestWaitHandle();
     wh.Dispose();
     Assert.True(wh.WasExplicitlyDisposed);
 }
        [PlatformSpecific(TestPlatforms.Windows)] // other platforms don't support SignalAndWait
        public static void SignalAndWait_InvalidArgs()
        {
            var toSignal = new ManualResetEvent(false);
            var toWaitOn = new ManualResetEvent(true);

            Assert.Throws<ArgumentNullException>(() => WaitHandle.SignalAndWait(null, toWaitOn));
            Assert.False(toSignal.WaitOne(0));
            Assert.Throws<ArgumentNullException>(() => WaitHandle.SignalAndWait(toSignal, null));
            Assert.False(toSignal.WaitOne(0));

            Assert.Throws<ArgumentOutOfRangeException>(() => WaitHandle.SignalAndWait(toSignal, toWaitOn, -2, false));
            Assert.False(toSignal.WaitOne(0));
            Assert.True(WaitHandle.SignalAndWait(toSignal, toWaitOn, -1, false));
            Assert.True(toSignal.WaitOne(0));
            toSignal.Reset();

            var invalidWh = new TestWaitHandle();
            Assert.Throws<ObjectDisposedException>(() => WaitHandle.SignalAndWait(invalidWh, toWaitOn));
            Assert.False(toSignal.WaitOne(0));
            Assert.Throws<ObjectDisposedException>(() => WaitHandle.SignalAndWait(toSignal, invalidWh));
            Assert.False(toSignal.WaitOne(0));
        }