コード例 #1
0
        public void TwoInstanceDependentMethodsInvoked_Exception()
        {
            SingleThreadedMethodsObject o1 = new SingleThreadedMethodsObject();
            Barrier barrier = new Barrier(2);

            TestHelpers.InvokeSimultaneouslyAndWait(() => o1.InstanceDependentMethod(barrier), () => o1.InstanceDependentMethod2(barrier));
        }
コード例 #2
0
        public void TwoInstanceDependentMethodsInvoked_Exception()
        {
            SingleThreadedMethodsObject o1 = new SingleThreadedMethodsObject();
            Barrier barrier = new Barrier(2);

            TestHelpers.InvokeSimultaneouslyAndWait(() => o1.InstanceDependentMethod(barrier), () => o1.InstanceDependentMethod2(barrier));
        }
コード例 #3
0
        public void MethodsInvokedOnSeparateObjects_NoException()
        {
            SingleThreadedMethodsObject o1 = new SingleThreadedMethodsObject();
            SingleThreadedMethodsObject o2 = new SingleThreadedMethodsObject();

            TestHelpers.InvokeSimultaneouslyAndWait(() => o1.InstanceDependentMethod(new Barrier(1)), () => o2.InstanceDependentMethod(new Barrier(1)));
        }
コード例 #4
0
        public void MethodThrowsException_MonitorProperlyReleased()
        {
            SingleThreadedMethodsObject o1 = new SingleThreadedMethodsObject();
            var manualResetEvent           = new ManualResetEvent(false);

            TestHelpers.InvokeSimultaneouslyAndWait(() =>
            {
                TestHelpers.Swallow <NotSupportedException>(o1.Exception);
                manualResetEvent.Set();
            },
                                                    () =>
            {
                manualResetEvent.WaitOne();
                TestHelpers.Swallow <NotSupportedException>(o1.Exception);
            });
            manualResetEvent.Reset();
            TestHelpers.InvokeSimultaneouslyAndWait(() => { TestHelpers.Swallow <NotSupportedException>(o1.Exception); manualResetEvent.Set(); },
                                                    () =>
            {
                manualResetEvent.WaitOne();
                TestHelpers.Swallow <NotSupportedException>(() => o1.InstanceDependentMethod(new Barrier(1)));
            });
        }
コード例 #5
0
        public void PrivateThreadSafeMethod_InvokedFromTwoThreads_DoesNotThrow()
        {
            SingleThreadedMethodsObject o = new SingleThreadedMethodsObject();

            TestHelpers.InvokeSimultaneouslyAndWait(o.ThreadSafeMethodInvokingThreadSafePrivateMethod, o.ThreadSafeMethodInvokingThreadSafePrivateMethod);
        }
コード例 #6
0
 public void MethodThrowsException_MonitorProperlyReleased()
 {
     SingleThreadedMethodsObject o1 = new SingleThreadedMethodsObject();
     var manualResetEvent = new ManualResetEvent(false);
     TestHelpers.InvokeSimultaneouslyAndWait(() =>
                                                  {
                                                      TestHelpers.Swallow<NotSupportedException>(o1.Exception);
                                                      manualResetEvent.Set();
                                                  },
                                              () =>
                                              {
                                                  manualResetEvent.WaitOne();
                                                  TestHelpers.Swallow<NotSupportedException>(o1.Exception);
                                              });
     manualResetEvent.Reset();
     TestHelpers.InvokeSimultaneouslyAndWait(() => { TestHelpers.Swallow<NotSupportedException>(o1.Exception); manualResetEvent.Set(); },
                                              () =>
                                              {
                                                  manualResetEvent.WaitOne();
                                                  TestHelpers.Swallow<NotSupportedException>(() => o1.InstanceDependentMethod(new Barrier(1)));
                                              });
 }
コード例 #7
0
 public void MethodsInvokedOnSeparateObjects_NoException()
 {
     SingleThreadedMethodsObject o1 = new SingleThreadedMethodsObject();
     SingleThreadedMethodsObject o2 = new SingleThreadedMethodsObject();
     TestHelpers.InvokeSimultaneouslyAndWait(() => o1.InstanceDependentMethod(new Barrier(1)), () => o2.InstanceDependentMethod(new Barrier(1)));
 }
コード例 #8
0
 public void PrivateThreadSafeMethod_InvokedFromTwoThreads_DoesNotThrow()
 {
     SingleThreadedMethodsObject o = new SingleThreadedMethodsObject();
     TestHelpers.InvokeSimultaneouslyAndWait(o.ThreadSafeMethodInvokingThreadSafePrivateMethod, o.ThreadSafeMethodInvokingThreadSafePrivateMethod);
 }