Ejemplo n.º 1
0
        public void Spread()
        {
            var chan1 = new Chan<int>();
            var chan2 = new Chan<int>();
            var chan3 = new Chan<int>();

            var source = new Chan<int>();

            var tasks = new Task[4];

            tasks[0] =
                source.Spread(new[] { chan1, chan2, chan3 });

            source
                .Send(Enumerable.Range(0, 10))
                .ContinueWith(t => source.Close());

            var cnt1 = 0;
            tasks[1] =
                chan1.ForEach(item => cnt1++);

            var cnt2 = 0;
            tasks[2] =
                chan2.ForEach(item => cnt2++);

            var cnt3 = 0;
            tasks[3] =
                chan3.ForEach(item => cnt3++);

            if (!Task.WaitAll(tasks, TimeSpan.FromSeconds(10)))
            {
                Assert.Fail();
            }

            Assert.AreEqual(30, cnt1 + cnt2 + cnt3);
        }
Ejemplo n.º 2
0
        public void Forward()
        {
            var source = new Chan<int>();
            var target = new Chan<int>();

            var tasks =
                new Task[2];

            tasks[0] =
                source.Forward(target);

            source
                .Send(Enumerable.Range(0, 10))
                .ContinueWith(t => source.Close());

            var cnt = 0;
            tasks[1] =
                target.ForEach(item => cnt++);

            if (!Task.WaitAll(tasks, TimeSpan.FromSeconds(10)))
            {
                Assert.Fail();
            }
        }
Ejemplo n.º 3
0
        public void SendReceive()
        {
            var chan = new Chan<int>();

            chan
                .Send(Enumerable.Range(0, 10))
                .ContinueWith(t => chan.Close());

            var cnt = 0;
            var collection =
                chan.ForEach(item => cnt++);

            if (!collection.Wait(TimeSpan.FromSeconds(10)))
            {
                Assert.Fail();
            }

            Assert.AreEqual(10, cnt);
        }