public void Enter_EnterTwoTimesDisposeTwoTime_IsNotBusy()
        {
            var monitor = new SimpleMonitor();

            monitor.Enter();
            monitor.Enter();
            monitor.Dispose();
            monitor.Dispose();

            Assert.False(monitor.Busy);
        }
        public void Dispose_should_not_decrement_counter_if_counter_is_zeroed()
        {
            var monitor = new SimpleMonitor();

            monitor.Dispose();

            monitor.Counter.Should().Be(0);
        }
        public void Enter_DisposeAfter_IsNotBusy()
        {
            var monitor = new SimpleMonitor();

            monitor.Enter();
            monitor.Dispose();

            Assert.False(monitor.Busy);
        }
        public void Dispose_shoud_decrement_counter()
        {
            var monitor = new SimpleMonitor();

            monitor.Set();

            monitor.Dispose();

            monitor.Counter.Should().Be(0);
        }
        public void Enter_EnterTwoTimesDisposeOneTime_IsBusy()
        {
            var monitor = new SimpleMonitor();

            monitor.Enter();
            monitor.Enter();
            monitor.Dispose();

            Assert.True(monitor.Busy);
        }