public void RemoveParticipantsAsync_Underflow_ThrowsException() { var barrier = new AsyncBarrier(2); barrier.SignalAndWaitAsync(); AssertEx.ThrowsException <InvalidOperationException>(() => barrier.RemoveParticipantsAsync(2)); }
public void RemoveZeroParticipants_DoesNothing() { var barrier = new AsyncBarrier(1); Assert.AreEqual(1, barrier.ParticipantCount); barrier.RemoveParticipantsAsync(0); Assert.AreEqual(1, barrier.ParticipantCount); }
public void RemoveParticipantsAsync_LastParticipant_CompletesPhase() { AsyncContext.Run(async() => { var barrier = new AsyncBarrier(1); Assert.AreEqual(0, barrier.CurrentPhaseNumber); Assert.AreEqual(1, barrier.ParticipantCount); Assert.AreEqual(1, barrier.ParticipantsRemaining); await barrier.RemoveParticipantsAsync(1); Assert.AreEqual(1, barrier.CurrentPhaseNumber); Assert.AreEqual(0, barrier.ParticipantCount); Assert.AreEqual(0, barrier.ParticipantsRemaining); }); }
public void AddParticipants_FromZero_IncreasesParticipantsForCurrentPhase() { AsyncContext.Run(async() => { var barrier = new AsyncBarrier(1); Assert.AreEqual(0, barrier.CurrentPhaseNumber); Assert.AreEqual(1, barrier.ParticipantCount); Assert.AreEqual(1, barrier.ParticipantsRemaining); await barrier.RemoveParticipantsAsync(); Assert.AreEqual(1, barrier.CurrentPhaseNumber); Assert.AreEqual(0, barrier.ParticipantCount); Assert.AreEqual(0, barrier.ParticipantsRemaining); barrier.AddParticipants(); Assert.AreEqual(1, barrier.CurrentPhaseNumber); Assert.AreEqual(1, barrier.ParticipantCount); Assert.AreEqual(1, barrier.ParticipantsRemaining); }); }