コード例 #1
0
ファイル: ProgressorTest.cs プロジェクト: pocketgems/Theraot
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: ProgressorTest.cs プロジェクト: pocketgems/Theraot
        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);
        }
コード例 #6
0
ファイル: ProgressorTest.cs プロジェクト: mesheets/Theraot-CF
 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);
 }
コード例 #7
0
ファイル: ProgressorTest.cs プロジェクト: mesheets/Theraot-CF
 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);
 }