public void Should_result_in_an_exception() { var action = MockRepository.GenerateMock<Action>(); var queue = new ThreadPoolActionQueue(2, 0); queue.Enqueue(action); queue.Enqueue(action); try { queue.Enqueue(action); Assert.Fail("Should have thrown an exception"); } catch (ActionQueueException ex) { ex.Message.Contains("Insufficient").ShouldBeTrue(); } }
public void Should_prevent_new_actions_from_being_queued() { ActionQueue queue = new ThreadPoolActionQueue(); var called = new Future<bool>(); queue.StopAcceptingActions(); Assert.Throws<ActionQueueException>(() => queue.Enqueue(() => called.Complete(true))); queue.ExecuteAll(10.Seconds()); called.IsAvailable().ShouldBeFalse(); }
public void Should_result_in_no_waiting_actions_in_the_queue() { TraceLogProvider.Configure(LogLevel.Debug); ActionQueue queue = new ThreadPoolActionQueue(); queue.Enqueue(() => Thread.Sleep(1000)); var called = new Future<bool>(); queue.Enqueue(() => called.Complete(true)); queue.ExecuteAll(8.Seconds()); called.IsAvailable().ShouldBeTrue(); }