Пример #1
0
        public void Enumerable_Race_MaxConcurrent()
        {
            for (int k = 1; k < 4; k++)
            {
                for (int i = 0; i < TestHelper.RACE_LOOPS; i++)
                {
                    var cs1 = new CompletableSubject();
                    var cs2 = new CompletableSubject();

                    var to = CompletableSource.Merge(new List <ICompletableSource>()
                    {
                        cs1, cs2
                    }, maxConcurrency: k)
                             .Test();

                    TestHelper.Race(() =>
                    {
                        cs1.OnCompleted();
                    }, () =>
                    {
                        cs2.OnCompleted();
                    });

                    to.AssertResult();
                }
            }
        }
Пример #2
0
 public void Enumerable_MoveNext_Crash()
 {
     CompletableSource.Merge(
         new FailingEnumerable <ICompletableSource>(false, true, false)
         )
     .Test()
     .AssertFailure(typeof(InvalidOperationException));
 }
Пример #3
0
 public void Enumerable_GetEnumerable_Crash_Max_Concurrency()
 {
     CompletableSource.Merge(
         new FailingEnumerable <ICompletableSource>(true, false, false),
         maxConcurrency: 2
         )
     .Test()
     .AssertFailure(typeof(InvalidOperationException));
 }
Пример #4
0
        public void Array_Basic_Params()
        {
            var count  = 0;
            var source = CompletableSource.FromAction(() => count++);

            CompletableSource.Merge(source, source, source)
            .Test()
            .AssertResult();

            Assert.AreEqual(3, count);
        }
Пример #5
0
        public void Array_Basic_Delay_Errors()
        {
            var count  = 0;
            var source = CompletableSource.FromAction(() => count++);

            CompletableSource.Merge(true, new[] { source, source, source })
            .Test()
            .AssertResult();

            Assert.AreEqual(3, count);
        }
Пример #6
0
        public void Array_Error()
        {
            var count  = 0;
            var source = CompletableSource.FromAction(() => count++);
            var err    = CompletableSource.Error(new InvalidOperationException());

            CompletableSource.Merge(source, err, source)
            .Test()
            .AssertFailure(typeof(InvalidOperationException));

            Assert.AreEqual(1, count);
        }
Пример #7
0
        public void Array_Error_Delayed_Max_Concurrency()
        {
            for (int i = 1; i < 5; i++)
            {
                var count  = 0;
                var source = CompletableSource.FromAction(() => count++);
                var err    = CompletableSource.Error(new InvalidOperationException());

                CompletableSource.Merge(true, i, source, err, source)
                .Test()
                .AssertFailure(typeof(InvalidOperationException));

                Assert.AreEqual(2, count);
            }
        }
Пример #8
0
        public void Enumerable_Error_Delayed()
        {
            var count  = 0;
            var source = CompletableSource.FromAction(() => count++);
            var err    = CompletableSource.Error(new InvalidOperationException());

            CompletableSource.Merge(new List <ICompletableSource>()
            {
                source, err, source
            }, true)
            .Test()
            .AssertFailure(typeof(InvalidOperationException));

            Assert.AreEqual(2, count);
        }
Пример #9
0
        public void Array_Basic_Max_Concurrency_Delay_Errors()
        {
            for (int i = 1; i < 5; i++)
            {
                var count  = 0;
                var source = CompletableSource.FromAction(() => count++);

                CompletableSource.Merge(true, i, new[] { source, source, source })
                .Test()
                .WithTag("maxConcurrency=" + i)
                .AssertResult();

                Assert.AreEqual(3, count);
            }
        }
Пример #10
0
        public void Array_Dispose_Max_Concurrency()
        {
            var cs1 = new CompletableSubject();
            var cs2 = new CompletableSubject();

            var to = CompletableSource.Merge(2, cs1, cs2)
                     .Test();

            Assert.True(cs1.HasObserver());
            Assert.True(cs2.HasObserver());

            to.Dispose();

            Assert.False(cs1.HasObserver());
            Assert.False(cs2.HasObserver());
        }
Пример #11
0
        public void Enumerable_Basic_Delay_Errors()
        {
            var count  = 0;
            var source = CompletableSource.FromAction(() => count++);

            CompletableSource.Merge(
                new List <ICompletableSource>()
            {
                source, source, source
            }
                , true
                )
            .Test()
            .AssertResult();

            Assert.AreEqual(3, count);
        }
Пример #12
0
        public void Array_Error_Disposes_Other_Max_Concurrency()
        {
            var cs1 = new CompletableSubject();
            var cs2 = new CompletableSubject();

            var to = CompletableSource.Merge(2, cs1, cs2)
                     .Test();

            Assert.True(cs1.HasObserver());
            Assert.True(cs2.HasObserver());

            cs1.OnError(new InvalidOperationException());

            Assert.False(cs1.HasObserver());
            Assert.False(cs2.HasObserver());

            to.AssertFailure(typeof(InvalidOperationException));
        }
Пример #13
0
        public void Enumerable_Error_Max_Concurrency()
        {
            for (int i = 1; i < 5; i++)
            {
                var count  = 0;
                var source = CompletableSource.FromAction(() => count++);
                var err    = CompletableSource.Error(new InvalidOperationException());

                CompletableSource.Merge(new List <ICompletableSource>()
                {
                    source, err, source
                }, maxConcurrency: i)
                .Test()
                .AssertFailure(typeof(InvalidOperationException));

                Assert.AreEqual(1, count);
            }
        }
Пример #14
0
        public void Array_Race()
        {
            for (int i = 0; i < TestHelper.RACE_LOOPS; i++)
            {
                var cs1 = new CompletableSubject();
                var cs2 = new CompletableSubject();

                var to = CompletableSource.Merge(new [] { cs1, cs2 })
                         .Test();

                TestHelper.Race(() => {
                    cs1.OnCompleted();
                }, () => {
                    cs2.OnCompleted();
                });

                to.AssertResult();
            }
        }
Пример #15
0
        public void Enumerable_Dispose_Max_Concurrency()
        {
            var cs1 = new CompletableSubject();
            var cs2 = new CompletableSubject();

            var to = CompletableSource.Merge(new List <ICompletableSource>()
            {
                cs1, cs2
            }, maxConcurrency: 2)
                     .Test();

            Assert.True(cs1.HasObserver());
            Assert.True(cs2.HasObserver());

            to.Dispose();

            Assert.False(cs1.HasObserver());
            Assert.False(cs2.HasObserver());
        }
Пример #16
0
        public void Array_Max_Concurrency()
        {
            var cs1 = new CompletableSubject();
            var cs2 = new CompletableSubject();

            var to = CompletableSource.Merge(1, cs1, cs2)
                     .Test();

            Assert.True(cs1.HasObserver());
            Assert.False(cs2.HasObserver());

            cs1.OnCompleted();

            Assert.False(cs1.HasObserver());
            Assert.True(cs2.HasObserver());

            cs2.OnCompleted();

            to.AssertResult();
        }
Пример #17
0
        public void Enumerable_Error_Disposes_Other()
        {
            var cs1 = new CompletableSubject();
            var cs2 = new CompletableSubject();

            var to = CompletableSource.Merge(new List <ICompletableSource>()
            {
                cs1, cs2
            })
                     .Test();

            Assert.True(cs1.HasObserver());
            Assert.True(cs2.HasObserver());

            cs1.OnError(new InvalidOperationException());

            Assert.False(cs1.HasObserver());
            Assert.False(cs2.HasObserver());

            to.AssertFailure(typeof(InvalidOperationException));
        }
Пример #18
0
        public void Enumerable_Basic_Max_Concurrency()
        {
            for (int i = 1; i < 5; i++)
            {
                var count  = 0;
                var source = CompletableSource.FromAction(() => count++);

                CompletableSource.Merge(
                    new List <ICompletableSource>()
                {
                    source, source, source
                },
                    maxConcurrency: i
                    )
                .Test()
                .WithTag("maxConcurrency=" + i)
                .AssertResult();

                Assert.AreEqual(3, count);
            }
        }