public void SameFactory() { ISemaphoreFactory factory = new NamedSemaphoreFactory(_semaphoreName); var expected = factory.GetSemaphore <Person>(); var actual = factory.GetSemaphore <Person>(); Assert.NotNull(expected); Assert.Equal(expected, actual); }
public void DiffFactories() { using var expectedSemaphore = new Semaphore(1, 1, _semaphoreName); ISemaphoreFactory factory = new NamedSemaphoreFactory(_semaphoreName); var createdSemaphore = factory.GetSemaphore <Person>(); Assert.NotNull(createdSemaphore); // wait two seconds then releases the semaphore Task.Run(async() => { await Task.Delay(2000); createdSemaphore.Release(); }); // lock the semaphore and wait until four seconds to release expectedSemaphore.WaitOne(); var released = expectedSemaphore.WaitOne(4000); Assert.True(released); }