public void Dispose() { var count = 0; var us = new CompletableSubject(); var to = CompletableSource.Defer(() => { if (count++ < 5) { return(CompletableSource.Empty()); } return(us); }) .Repeat() .Test(); to.AssertEmpty(); Assert.True(us.HasObserver()); to.Dispose(); Assert.False(us.HasObserver()); Assert.AreEqual(6, count); }
public void Predicate_Dispose() { var count = 0; var us = new CompletableSubject(); var to = CompletableSource.Defer(() => { if (count++ < 5) { return(CompletableSource.Error(new InvalidOperationException())); } return(us); }) .Retry((e, c) => true) .Test(); to.AssertEmpty(); Assert.True(us.HasObserver()); to.Dispose(); Assert.False(us.HasObserver()); Assert.AreEqual(6, count); }
public void Supplier_Crash() { var c = CompletableSource.Defer(() => { throw new InvalidOperationException(); }); c.Test().AssertFailure(typeof(InvalidOperationException)); }
public void Retry() { var count = 0; CompletableSource.Defer(() => { if (++count < 5) { return(CompletableSource.Error(new InvalidOperationException())); } return(CompletableSource.Empty()); }) .RetryWhen(v => v) .Test() .AssertResult(); }
public void Basic() { var count = 0; var c = CompletableSource.Defer(() => { count++; return(CompletableSource.Empty()); }); for (int i = 0; i < 100; i++) { Assert.AreEqual(i, count); c.Test().AssertResult(); Assert.AreEqual(i + 1, count); } }