System.Threading.Tests.SynchronizationContextTests.WaitTest C# (CSharp) Method

WaitTest() private method

private WaitTest ( ) : void
return void
        public static void WaitTest()
        {
            var tsc = new TestSynchronizationContext();
            Assert.Throws<ArgumentNullException>(() => tsc.Wait(null, false, 0));

            var e = new ManualResetEvent(false);
            IntPtr eventHandle = e.SafeWaitHandle.DangerousGetHandle();
            var handles = new IntPtr[] { eventHandle, eventHandle };
            Assert.Equal(WaitHandle.WaitTimeout, tsc.Wait(handles, false, 0));
            Assert.Throws<DuplicateWaitObjectException>(() => tsc.Wait(handles, true, 0));

            var e2 = new ManualResetEvent(false);
            handles = new IntPtr[] { eventHandle, e2.SafeWaitHandle.DangerousGetHandle() };
            Assert.Equal(WaitHandle.WaitTimeout, tsc.Wait(handles, false, 0));
            Assert.Equal(WaitHandle.WaitTimeout, tsc.Wait(handles, true, 0));

            e.Set();
            Assert.Equal(0, tsc.Wait(handles, false, 0));
            Assert.Equal(WaitHandle.WaitTimeout, tsc.Wait(handles, true, 0));

            e2.Set();
            Assert.Equal(0, tsc.Wait(handles, false, 0));
            Assert.Equal(0, tsc.Wait(handles, true, 0));
        }