@Test
public void Should_NotifyAndExecuteTask()
        throws Exception {

    ITaskProcessStrategy strategy = new LimitTrialCountStrategy(4,2);
    strategy.process(executionState);
    strategy.process(executionState);
    verify(executionState, times(2)).execute();
    verify(shutdownAwareTask, times(0)).notifyShuttingDown();
    strategy.process(executionState);
    strategy.process(executionState);
    verify(executionState, times(4)).execute();
    verify(shutdownAwareTask, times(2)).notifyShuttingDown();
    verify(shutdownAwareTask, times(0)).notifyIgnored();
    strategy.process(executionState);
    verify(executionState, times(4)).execute();
    verify(shutdownAwareTask, times(2)).notifyShuttingDown();
    verify(shutdownAwareTask, times(1)).notifyIgnored();
}