public void DoesNotAllowMoreThanMaxParallelismToContinue() { var manager = new ParallelOperationsManager(3); var operation1 = manager.TryBegin(); var operation2 = manager.TryBegin(); var operation3 = manager.TryBegin(); var operation4 = manager.TryBegin(); Assert.That(operation1.CanContinue(), Is.True); Assert.That(operation2.CanContinue(), Is.True); Assert.That(operation3.CanContinue(), Is.True); Assert.That(operation4.CanContinue(), Is.False); }
public void ReleasesOperationAsExpected() { var manager = new ParallelOperationsManager(3); var operation1 = manager.TryBegin(); var operation2 = manager.TryBegin(); var operation3 = manager.TryBegin(); operation1.Dispose(); var operation4 = manager.TryBegin(); var operation5 = manager.TryBegin(); Assert.That(operation1.CanContinue(), Is.True); Assert.That(operation2.CanContinue(), Is.True); Assert.That(operation3.CanContinue(), Is.True); Assert.That(operation4.CanContinue(), Is.True); Assert.That(operation5.CanContinue(), Is.False); }
public void ReleasingOperationThatCouldNotContinueDoesNotAffectAnything() { var manager = new ParallelOperationsManager(2); var op1 = manager.TryBegin(); var op2 = manager.TryBegin(); var op3 = manager.TryBegin(); var op4 = manager.TryBegin(); op1.Dispose(); op2.Dispose(); op3.Dispose(); op4.Dispose(); var op5 = manager.TryBegin(); var op6 = manager.TryBegin(); var op7 = manager.TryBegin(); Assert.That(op5.CanContinue(), Is.True); Assert.That(op6.CanContinue(), Is.True); Assert.That(op7.CanContinue(), Is.False); }