public static void Assert_EnqueueSingleProducerBounded(IEventQueueStorageStrategy <TestEvent> strategy, int maxEventCount) { /* PRECONDITION */ Debug.Assert(strategy != null); Debug.Assert(maxEventCount >= 0); Debug.Assert(strategy.IsClosed); /* GIVEN */ var expectedEventCount = (maxEventCount < maxEvents) ? maxEventCount : maxEvents; var producer = new TestProducer(strategy); var consumer = new TestConsumer(strategy); using var produceEvent = new ManualResetEvent(false); using var consumeEvent = new ManualResetEvent(false); /* WHEN */ strategy.Open(); Assert.IsTrue(!strategy.IsClosed); consumer.Consume((@event, num) => num < expectedEventCount, result => result.EventSuccess(consumeEvent)); producer.Produce(num => num < maxEvents, result => result.EventSuccess(produceEvent)); /* THEN */ Assert.IsTrue(produceEvent.WaitOne(maxWaitTime), "Producer did not complete successfully"); Assert.IsTrue(consumeEvent.WaitOne(maxWaitTime), "Consumer did not complete successfully"); }
public static void Assert_EnqueueSingleProducerUnbounded(IEventQueueStorageStrategy <TestEvent> strategy) { /* PRECONDITION */ Debug.Assert(strategy != null); Debug.Assert(strategy.IsClosed); /* GIVEN */ strategy.Open(); var producer = new TestProducer(strategy); var consumer = new TestConsumer(strategy); using var produceEvent = new ManualResetEvent(false); using var consumeEvent = new ManualResetEvent(false); /* WHEN */ consumer.Consume((@event, num) => num < maxEvents, result => result.EventSuccess(consumeEvent)); producer.Produce(num => num < maxEvents, result => result.EventSuccess(produceEvent)); /* THEN */ Assert.IsTrue(produceEvent.WaitOne(maxWaitTime), "Producer did not finish in time"); Assert.IsTrue(consumeEvent.WaitOne(maxWaitTime), "Consumer did not receive events in time"); }