public void Publish_Error() { var count = 0; var source = ObservableSource.Defer(() => { count++; return(ObservableSource.Range(1, 5).ConcatError(new InvalidOperationException())); }) .Publish() .RefCount(); Assert.AreEqual(0, count); source.Test() .AssertFailure(typeof(InvalidOperationException), 1, 2, 3, 4, 5); Assert.AreEqual(1, count); source.Test() .AssertFailure(typeof(InvalidOperationException), 1, 2, 3, 4, 5); Assert.AreEqual(2, count); }
public void Replay_Basic() { var count = 0; var source = ObservableSource.Defer(() => { count++; return(ObservableSource.Range(1, 5)); }) .Replay() .RefCount(); Assert.AreEqual(0, count); var to0 = source.Test(); Assert.AreEqual(1, count); to0.AssertResult(1, 2, 3, 4, 5); Assert.AreEqual(1, count); var to = source.Test(); Assert.AreEqual(2, count); to.AssertResult(1, 2, 3, 4, 5); Assert.AreEqual(2, count); }
public void Basic() { var count = 0; var source = ObservableSource.Defer(() => ObservableSource.Just(++count)); for (int i = 0; i < 10; i++) { source.Test().AssertResult(i + 1); } Assert.AreEqual(10, count); }
public void Retry() { var count = 0; ObservableSource.Defer(() => { var o = ObservableSource.Just(1); if (++count < 5) { o = o.ConcatError(new InvalidOperationException()); } return(o); }) .RetryWhen(v => v) .Test() .AssertResult(1, 1, 1, 1, 1); }
public void Publish_Min_Observers() { var count = 0; var source = ObservableSource.Defer(() => { count++; return(ObservableSource.Range(1, 5)); }) .Publish() .RefCount(2); Assert.AreEqual(0, count); var to1 = source.Test(); Assert.AreEqual(0, count); var to2 = source.Test(); Assert.AreEqual(1, count); to1.AssertResult(1, 2, 3, 4, 5); to2.AssertResult(1, 2, 3, 4, 5); var to3 = source.Test(); Assert.AreEqual(1, count); var to4 = source.Test(); Assert.AreEqual(2, count); to3.AssertResult(1, 2, 3, 4, 5); to4.AssertResult(1, 2, 3, 4, 5); }
public void AutoConnect_TwoConsumers() { int called = 0; var source = ObservableSource.Defer(() => { called++; return(ObservableSource.Range(1, 5)); }) .Replay() .AutoConnect(2); Assert.AreEqual(0, called); var list0 = new List <int>(); source.Subscribe(v => list0.Add(v)); Assert.AreEqual(0, called); Assert.AreEqual(0, list0.Count); var list = source.Test(); Assert.AreEqual(1, called); list.AssertResult(1, 2, 3, 4, 5); Assert.AreEqual(new List <int>() { 1, 2, 3, 4, 5 }, list0); list = source.Test(); Assert.AreEqual(1, called); list.AssertResult(1, 2, 3, 4, 5); }
public void AutoConnect_Immediately() { int called = 0; var source = ObservableSource.Defer(() => { called++; return(ObservableSource.Range(1, 5)); }) .Replay() .AutoConnect(0); Assert.AreEqual(1, called); var list = source.Test(); Assert.AreEqual(1, called); list.AssertResult(1, 2, 3, 4, 5); list = source.Test(); Assert.AreEqual(1, called); list.AssertResult(1, 2, 3, 4, 5); }