public void Retry_return_value_of_a_previously_failing_task_is_propogated_through() { var currentThreadScheduler = new CurrentThreadTaskScheduler(); var exceptionOccured = false; var triggerToNotThrowException = 2; var index = 0; Func<Task<int>> taskProvider = () => Task.Factory.StartNew(() => { index++; if (index <= triggerToNotThrowException) { throw new Exception("Problem"); } return index; }, currentThreadScheduler); taskProvider() .Retry(taskProvider, triggerToNotThrowException + 1, _ => true, currentThreadScheduler) .CatchAndHandle(ex => exceptionOccured = true, currentThreadScheduler); Assert.That(exceptionOccured, Is.False); Assert.That(index, Is.EqualTo(triggerToNotThrowException + 1)); }
public void Retry_return_value_of_a_previously_failing_task_is_propogated_through() { var currentThreadScheduler = new CurrentThreadTaskScheduler(); var exceptionOccured = false; var triggerToNotThrowException = 2; var index = 0; Func <Task <int> > taskProvider = () => Task.Factory.StartNew(() => { index++; if (index <= triggerToNotThrowException) { throw new Exception("Problem"); } return(index); }, currentThreadScheduler); taskProvider() .Retry(taskProvider, triggerToNotThrowException + 1, _ => true, currentThreadScheduler) .CatchAndHandle(ex => exceptionOccured = true, currentThreadScheduler); Assert.That(exceptionOccured, Is.False); Assert.That(index, Is.EqualTo(triggerToNotThrowException + 1)); }
public void when_no_exception_of_T_is_thrown_then_Catch_is_not_called() { var testScheduler = new CurrentThreadTaskScheduler(); var result = false; Task.Factory.StartNew(() => { }, testScheduler) .Catch <ArgumentNullException>(ex => result = true); Assert.That(result, Is.False); }
public void when_an_exception_is_not_thrown_then_Finally_is_called() { var testScheduler = new CurrentThreadTaskScheduler(); var result = false; Task.Factory.StartNew(() => { }, testScheduler) .Finally(() => result = true, testScheduler); Assert.That(result, Is.True); }
public void when_an_exception_is_thrown_then_Finally_is_called() { var testScheduler = new CurrentThreadTaskScheduler(); var result = false; Task.Factory.StartNew(() => { throw new ArgumentNullException(); }, testScheduler) .Finally(() => result = true, testScheduler); Assert.That(result, Is.True); }
public void when_event_fires_then_the_action_is_executed() { var testScheduler = new CurrentThreadTaskScheduler(); var stub = new StubClassWithEvent(); var result = false; EventAsync.FromEvent(eh => stub.NoPayload += eh, eh => stub.NoPayload -= eh) .Do(() => result = true, testScheduler); stub.FireNoPayloadEvent(); Assert.That(result, Is.True); }
public void when_payload_event_is_fired_twice_then_the_second_time_the_event_is_not_recieved() { var testScheduler = new CurrentThreadTaskScheduler(); var stub = new StubClassWithEvent(); var count = 0; EventAsync.FromEvent <DataEventArgs <Guid> >(eh => stub.Payload += eh, eh => stub.Payload -= eh) .Do(_ => count++, testScheduler); stub.FirePayloadEvent(Guid.NewGuid()); stub.FirePayloadEvent(Guid.NewGuid()); Assert.That(count, Is.EqualTo(1)); }
public void when_payload_event_is_fired_twice_then_the_second_time_the_event_is_not_recieved() { var testScheduler = new CurrentThreadTaskScheduler(); var stub = new StubClassWithEvent(); var count = 0; EventAsync.FromEvent<DataEventArgs<Guid>>(eh => stub.Payload += eh, eh => stub.Payload -= eh) .Do(_ => count++, testScheduler); stub.FirePayloadEvent(Guid.NewGuid()); stub.FirePayloadEvent(Guid.NewGuid()); Assert.That(count, Is.EqualTo(1)); }
public void Retry_exception_is_propogated_through() { var currentThreadScheduler = new CurrentThreadTaskScheduler(); var exceptionOccured = false; Func <Task <int> > taskProvider = () => Task.Factory.StartNew <int>(() => { throw new Exception("Problem"); }, currentThreadScheduler); taskProvider() .Retry(taskProvider, 3, _ => true, currentThreadScheduler) .CatchAndHandle(ex => exceptionOccured = true, currentThreadScheduler); Assert.That(exceptionOccured, Is.True); }
public void when_payload_event_fires_then_the_action_is_executed_and_the_payload_is_passed_through() { var testScheduler = new CurrentThreadTaskScheduler(); var stub = new StubClassWithEvent(); var result = Guid.Empty; EventAsync.FromEvent <DataEventArgs <Guid> >(eh => stub.Payload += eh, eh => stub.Payload -= eh) .Do(payload => result = payload.Value, testScheduler); var expected = Guid.NewGuid(); stub.FirePayloadEvent(expected); Assert.That(result.Equals(expected), Is.True); }
public void when_payload_event_fires_then_the_action_is_executed_and_the_payload_is_passed_through() { var testScheduler = new CurrentThreadTaskScheduler(); var stub = new StubClassWithEvent(); var result = Guid.Empty; EventAsync.FromEvent<DataEventArgs<Guid>>(eh => stub.Payload += eh, eh => stub.Payload -= eh) .Do(payload => result = payload.Value, testScheduler); var expected = Guid.NewGuid(); stub.FirePayloadEvent(expected); Assert.That(result.Equals(expected), Is.True); }
public void Retry_exception_is_propogated_through() { var currentThreadScheduler = new CurrentThreadTaskScheduler(); var exceptionOccured = false; Func<Task<int>> taskProvider = () => Task.Factory.StartNew<int>(() => { throw new Exception("Problem"); }, currentThreadScheduler); taskProvider() .Retry(taskProvider, 3, _ => true, currentThreadScheduler) .CatchAndHandle(ex => exceptionOccured = true, currentThreadScheduler); Assert.That(exceptionOccured, Is.True); }
public TestTaskScheduler() { TPL = new CurrentThreadTaskScheduler(); RX = new TestScheduler(); }
public CurrentThreadTaskSchedulerFactory() { _scheduler = new CurrentThreadTaskScheduler(); }
public void when_no_exception_of_T_is_thrown_then_Catch_is_not_called() { var testScheduler = new CurrentThreadTaskScheduler(); var result = false; Task.Factory.StartNew(() => { }, testScheduler) .Catch<ArgumentNullException>(ex => result = true); Assert.That(result, Is.False); }