public void Success_Fallback()
        {
            var count = 0;
            var fb    = SingleSource.FromFunc <int>(() => count++);

            SingleSource.Just(1)
            .Timeout(TimeSpan.FromMinutes(1), NewThreadScheduler.Default, fb)
            .Test()
            .AssertResult(1);

            Assert.AreEqual(0, count);
        }
 public void Array_Max_Basic()
 {
     new []
     {
         SingleSource.Just(1),
         SingleSource.Just(2),
         SingleSource.Just(3)
     }
     .ConcatEagerAll()
     .Test()
     .AssertResult(1, 2, 3);
 }
예제 #3
0
        public void Finally_Basic_Twice()
        {
            var count = 0;

            SingleSource.Just(1)
            .DoFinally(() => count++)
            .DoFinally(() => count++)
            .Test()
            .AssertResult(1);

            Assert.AreEqual(2, count);
        }
        public void Success()
        {
            var name = "";

            SingleSource.Just(1)
            .DoOnDispose(() => name = Thread.CurrentThread.Name)
            .UnsubscribeOn(NewThreadScheduler.Default)
            .Test()
            .AssertResult(1);

            Assert.AreEqual("", name);
        }
예제 #5
0
 public void Enumerable_Max_Error()
 {
     SingleSource.Merge(
         new List <ISingleSource <int> >()
     {
         SingleSource.Error <int>(new InvalidOperationException()),
         SingleSource.Just(1)
     }
         )
     .Test()
     .AssertFailure(typeof(InvalidOperationException));
 }
예제 #6
0
        public void OnSuccess_Basic_Twice()
        {
            var count = 0;

            SingleSource.Just(1)
            .DoOnSuccess(v => count++)
            .DoOnSuccess(v => count++)
            .Test()
            .AssertResult(1);

            Assert.AreEqual(2, count);
        }
예제 #7
0
 public void Array_Max_Basic_DelayError()
 {
     new[]
     {
         SingleSource.Just(1),
         SingleSource.Just(2),
         SingleSource.Just(3),
     }
     .MergeAll(true)
     .Test()
     .AssertResult(1, 2, 3);
 }
예제 #8
0
 public void Enumerable_Max_Basic_DelayError()
 {
     new List <ISingleSource <int> >()
     {
         SingleSource.Just(1),
         SingleSource.Just(2),
         SingleSource.Just(3),
     }
     .Merge(true)
     .Test()
     .AssertResult(1, 2, 3);
 }
예제 #9
0
        public void AferTerminate_Basic_Twice()
        {
            var count = 0;

            SingleSource.Just(1)
            .DoAfterTerminate(() => count++)
            .DoAfterTerminate(() => count++)
            .Test()
            .AssertResult(1);

            Assert.AreEqual(2, count);
        }
예제 #10
0
 public void Array_Limited_Error()
 {
     for (int i = 1; i < 10; i++)
     {
         SingleSource.Merge(i,
                            SingleSource.Error <int>(new InvalidOperationException()),
                            SingleSource.Just(1)
                            )
         .Test()
         .AssertFailure(typeof(InvalidOperationException));
     }
 }
 public void Enumerable_Max_Basic()
 {
     new List <ISingleSource <int> >()
     {
         SingleSource.Just(1),
         SingleSource.Just(2),
         SingleSource.Just(3)
     }
     .ConcatEager()
     .Test()
     .AssertResult(1, 2, 3);
 }
 public void Max_Basic()
 {
     new []
     {
         SingleSource.Just(1),
         SingleSource.Just(2),
         SingleSource.Just(3)
     }.ToObservable()
     .ConcatEager()
     .Test()
     .AssertResult(1, 2, 3);
 }
        public void Limit_Dispose_Main()
        {
            var s = new Subject <int>();

            var to = s.ConcatMapEager(v => SingleSource.Just(v), maxConcurrency: 1)
                     .Test();

            Assert.True(s.HasObservers);

            to.Dispose();

            Assert.False(s.HasObservers);
        }
 public void Array_Error_Last()
 {
     new[]
     {
         SingleSource.Just(1),
         SingleSource.Just(2),
         SingleSource.Just(3),
         SingleSource.Error <int>(new InvalidOperationException())
     }
     .ConcatAll()
     .Test()
     .AssertFailure(typeof(InvalidOperationException), 1, 2, 3);
 }
예제 #15
0
 public void Max_Eager_Inner_Error()
 {
     Observable.Range(1, 5)
     .FlatMap(v => {
         if (v == 3)
         {
             return(SingleSource.Error <int>(new InvalidOperationException()));
         }
         return(SingleSource.Just(v + 1));
     })
     .Test()
     .AssertFailure(typeof(InvalidOperationException), 2, 3);
 }
 public void Enumerable_Error_Last_Delay()
 {
     new List <ISingleSource <int> >()
     {
         SingleSource.Just(1),
         SingleSource.Just(2),
         SingleSource.Just(3),
         SingleSource.Error <int>(new InvalidOperationException())
     }
     .Concat(true)
     .Test()
     .AssertFailure(typeof(InvalidOperationException), 1, 2, 3);
 }
예제 #17
0
        public void Maybe_Inner_Empty()
        {
            var count = 0;

            SingleSource.Just(1)
            .FlatMap(v => MaybeSource.FromAction <string>(() => {
                count++;
            }))
            .Test()
            .AssertResult();

            Assert.AreEqual(1, count);
        }
예제 #18
0
        public void OnAfterSuccess_Basic()
        {
            var count = -1;

            var to = new TestObserver <int>();

            SingleSource.Just(1)
            .DoAfterSuccess(v => count = to.ItemCount)
            .SubscribeWith(to)
            .AssertResult(1);

            Assert.AreEqual(1, count);
        }
예제 #19
0
 public void Delayed_Inner_Error()
 {
     Observable.Range(1, 5)
     .SwitchMap(v => {
         if (v == 3)
         {
             return(SingleSource.Error <int>(new InvalidOperationException()));
         }
         return(SingleSource.Just(v + 1));
     }, true)
     .Test()
     .AssertFailure(typeof(InvalidOperationException), 2, 3, 5, 6);
 }
        public void Limit_Dispose_Main_DelayError()
        {
            var s = new Subject <int>();

            var to = s.ConcatMapEager(v => SingleSource.Just(v), true, 1)
                     .Test();

            Assert.True(s.HasObservers);

            to.Dispose();

            Assert.False(s.HasObservers);
        }
 public void Array_Limit_Basic_Delay()
 {
     for (int i = 1; i < 10; i++)
     {
         SingleSource.ConcatEager <int>(true, i,
                                        SingleSource.Just(1),
                                        SingleSource.Just(2),
                                        SingleSource.Just(3)
                                        )
         .Test()
         .WithTag($"{i}")
         .AssertResult(1, 2, 3);
     }
 }
        public void Single_Dispose_Main()
        {
            var cs = new CompletableSubject();

            var to = cs
                     .AndThen(SingleSource.Just(1))
                     .Test();

            Assert.True(cs.HasObserver());

            to.Dispose();

            Assert.False(cs.HasObserver());
        }
        public void Success()
        {
            var name = -1;

            SingleSource.Just(1)
            .ObserveOn(NewThreadScheduler.Default)
            .DoOnSuccess(v => name = Thread.CurrentThread.ManagedThreadId)
            .Test()
            .AwaitDone(TimeSpan.FromSeconds(5))
            .AssertResult(1);

            Assert.AreNotEqual(-1, name);
            Assert.AreNotEqual(Thread.CurrentThread.ManagedThreadId, name);
        }
예제 #24
0
 public void Array_Limited_Null_Source()
 {
     for (int i = 1; i < 10; i++)
     {
         SingleSource.Merge(i,
                            SingleSource.Just(1),
                            null,
                            SingleSource.Just(2)
                            )
         .Test()
         .AssertNotCompleted()
         .AssertError(typeof(NullReferenceException));
     }
 }
예제 #25
0
 public void Enumerable_Max_Null_Source()
 {
     SingleSource.Merge(
         new List <ISingleSource <int> >()
     {
         SingleSource.Just(1),
         null,
         SingleSource.Just(2)
     }
         )
     .Test()
     .AssertNotCompleted()
     .AssertError(typeof(NullReferenceException));
 }
 public void Max_Mapper_Crash_Delayed()
 {
     Observable.Range(1, 5)
     .ConcatMapEager <int, int>(v =>
     {
         if (v == 3)
         {
             throw new InvalidOperationException();
         }
         return(SingleSource.Just(v));
     }, true)
     .Test()
     .AssertFailure(typeof(InvalidOperationException), 1, 2);
 }
예제 #27
0
        public void OnDispose_Success()
        {
            var count = 0;

            SingleSource.Just(1)
            .DoOnDispose(() =>
            {
                count++;
            })
            .Test()
            .AssertResult(1);
            ;

            Assert.AreEqual(0, count);
        }
예제 #28
0
 public void Enumerable_Limited_Basic_DelayError()
 {
     for (int i = 1; i < 10; i++)
     {
         new List <ISingleSource <int> >()
         {
             SingleSource.Just(1),
             SingleSource.Just(2),
             SingleSource.Just(3),
         }
         .Merge(true, i)
         .Test()
         .AssertResult(1, 2, 3);
     }
 }
예제 #29
0
 public void Enumerable_Limited_Error()
 {
     for (int i = 1; i < 10; i++)
     {
         SingleSource.Merge(
             new List <ISingleSource <int> >()
         {
             SingleSource.Error <int>(new InvalidOperationException()),
             SingleSource.Just(1)
         }, maxConcurrency: i
             )
         .Test()
         .AssertFailure(typeof(InvalidOperationException));
     }
 }
 public void Max_Mapper_Crash()
 {
     Observable.Range(1, 5)
     .ConcatMapEager <int, int>(v =>
     {
         if (v == 3)
         {
             throw new InvalidOperationException();
         }
         return(SingleSource.Just(v));
     })
     .Test()
     .AssertNotCompleted()
     .AssertError(typeof(InvalidOperationException));
 }