public void EnumerableProgressor() { var source = new[] { 0, 1, 2, 3, 4, 5 }; var progresor = new Progressor <int>(source); int indexA = 0; int indexB = 0; progresor.SubscribeAction ( value => { Assert.AreEqual(value, indexB); indexB++; } ); int item; while (progresor.TryTake(out item)) { Assert.AreEqual(item, indexA); indexA++; } Assert.AreEqual(6, indexA); Assert.AreEqual(indexA, indexB); }
public void PrefaceProgressor() { var preface = new[] { 0, 1, 2, 3, 4, 5 }; var source = new Progressor <int>(new[] { 6, 7, 8, 9 }); var progresor = new Progressor <int>(preface, source); var indexA = 0; var indexB = 0; progresor.SubscribeAction ( value => { Assert.AreEqual(value, indexB); indexB++; } ); int item; while (progresor.TryTake(out item)) { Assert.AreEqual(item, indexA); indexA++; } Assert.AreEqual(10, indexA); Assert.AreEqual(indexA, indexB); }
public void ObservableProgressor() { var source = new Progressor <int>(new[] { 0, 1, 2, 3, 4, 5 }); var progresor = new Progressor <int>((IObservable <int>)source); source.AsEnumerable().Consume(); var indexA = 0; var indexB = 0; progresor.SubscribeAction ( value => { Assert.AreEqual(value, indexB); indexB++; } ); int item; while (progresor.TryTake(out item)) { Assert.AreEqual(item, indexA); indexA++; } Assert.AreEqual(6, indexA); Assert.AreEqual(indexA, indexB); }
public void ObservableProgressorWithPause() { var source = new SlowObservable <int>(new[] { 0, 1, 2, 3, 4, 5 }); var progresor = new Progressor <int>(source); Assert.IsFalse(progresor.IsClosed); int indexA = 0; int indexB = 0; progresor.SubscribeAction ( value => { Assert.AreEqual(value, indexB); indexB++; } ); int item; while (progresor.TryTake(out item)) { Assert.AreEqual(item, indexA); indexA++; } Assert.AreEqual(0, indexA); Assert.AreEqual(indexA, indexB); Assert.IsFalse(progresor.IsClosed); source.Show(); while (indexA < 6) { while (progresor.TryTake(out item)) { Assert.AreEqual(item, indexA); indexA++; } } Assert.AreEqual(indexA, indexB); Assert.IsFalse(progresor.IsClosed); source.Close(); Assert.IsFalse(progresor.IsClosed); Assert.IsFalse(progresor.TryTake(out item)); Assert.IsTrue(progresor.IsClosed); }
public void TryTakeProgressor() { var source = new Queue <int>(); source.Enqueue(0); source.Enqueue(1); source.Enqueue(2); source.Enqueue(3); source.Enqueue(4); source.Enqueue(5); var progresor = new Progressor <int> ( (out int value) => { try { value = source.Dequeue(); return(true); } catch (Exception) { value = 0; return(false); } }, false ); int indexA = 0; int indexB = 0; progresor.SubscribeAction ( value => { Assert.AreEqual(value, indexB); indexB++; } ); int item; while (progresor.TryTake(out item)) { Assert.AreEqual(item, indexA); indexA++; } Assert.AreEqual(6, indexA); Assert.AreEqual(indexA, indexB); }
public void EnumerableProgressor() { var source = new[] { 0, 1, 2, 3, 4, 5 }; var progresor = new Progressor<int>(source); int indexA = 0; int indexB = 0; progresor.SubscribeAction ( value => { Assert.AreEqual(value, indexB); indexB++; } ); int item; while (progresor.TryTake(out item)) { Assert.AreEqual(item, indexA); indexA++; } Assert.AreEqual(6, indexA); Assert.AreEqual(indexA, indexB); }
public void TryTakeProgressor() { var source = new Queue<int>(); source.Enqueue(0); source.Enqueue(1); source.Enqueue(2); source.Enqueue(3); source.Enqueue(4); source.Enqueue(5); var progresor = new Progressor<int> ( (out int value) => { try { value = source.Dequeue(); return true; } catch (Exception) { value = 0; return false; } }, false ); int indexA = 0; int indexB = 0; progresor.SubscribeAction ( value => { Assert.AreEqual(value, indexB); indexB++; } ); int item; while (progresor.TryTake(out item)) { Assert.AreEqual(item, indexA); indexA++; } Assert.AreEqual(6, indexA); Assert.AreEqual(indexA, indexB); }