public void AdquiresTheLockDuringTheExecutionAndReleaseItAtTheEnd()
            {
                var @event  = new AutoResetEvent(false);
                var context = new SynchronizationContext();

                Assert.IsFalse(context.IsLockAcquired);
                context.Enqueue(() => Assert.IsTrue(context.IsLockAcquired), (sender, args) => @event.Set());
                @event.WaitOne();
                Assert.IsFalse(context.IsLockAcquired);
            }
            public void AdquiresTheLockDuringTheExecutionAndReleaseItAtTheEndAndReturnAValue()
            {
                var @event  = new AutoResetEvent(false);
                var context = new SynchronizationContext();

                Assert.IsFalse(context.IsLockAcquired);
                int expected = new Random().Next(50, 100);
                int result   = 0;

                context.Enqueue(() =>
                {
                    Assert.IsTrue(context.IsLockAcquired);
                    return(expected);
                }, (sender, args) =>
                {
                    result = (int)args.Result;
                    @event.Set();
                });
                @event.WaitOne();
                Assert.IsFalse(context.IsLockAcquired);
                Assert.AreEqual(expected, result);
            }
 public void AdquiresTheLockDuringTheExecutionAndReleaseItAtTheEnd()
 {
     var @event = new AutoResetEvent(false);
     var context = new SynchronizationContext();
     Assert.IsFalse(context.IsLockAcquired);
     context.Enqueue(() => Assert.IsTrue(context.IsLockAcquired), (sender, args) => @event.Set());
     @event.WaitOne();
     Assert.IsFalse(context.IsLockAcquired);
 }
 public void AdquiresTheLockDuringTheExecutionAndReleaseItAtTheEndAndReturnAValue()
 {
     var @event = new AutoResetEvent(false);
     var context = new SynchronizationContext();
     Assert.IsFalse(context.IsLockAcquired);
     int expected = new Random().Next(50, 100);
     int result = 0;
     context.Enqueue(() =>
     {
         Assert.IsTrue(context.IsLockAcquired);
         return expected;
     }, (sender, args) =>
         {
             result = (int)args.Result;
             @event.Set();
         });
     @event.WaitOne();
     Assert.IsFalse(context.IsLockAcquired);
     Assert.AreEqual(expected, result);
 }