public async Task WaitsIfNoSpaceAvailible() { using var s = new SemaphoreWrapper(1); await s.EnterQueue().OrTimeout(); var waitingTask = s.EnterQueue(); Assert.False(waitingTask.IsCompleted); s.LeaveQueue(); await waitingTask.OrTimeout(); }
public void DoesNotWaitIfSpaceAvailible() { using var s = new SemaphoreWrapper(2); var t1 = s.EnterQueue(); Assert.True(t1.IsCompleted); var t2 = s.EnterQueue(); Assert.True(t2.IsCompleted); var t3 = s.EnterQueue(); Assert.False(t3.IsCompleted); }
public async Task IsEncapsulated() { using var s1 = new SemaphoreWrapper(1); using var s2 = new SemaphoreWrapper(1); await s1.EnterQueue().OrTimeout(); await s2.EnterQueue().OrTimeout(); }
public async Task TracksQueueLength() { using var s = new SemaphoreWrapper(1); Assert.Equal(1, s.Count); await s.EnterQueue().OrTimeout(); Assert.Equal(0, s.Count); s.LeaveQueue(); Assert.Equal(1, s.Count); }