Exemple #1
0
 public void ThenMany_Normal()
 {
     Flux.Range(1, 10)
     .ThenMany(Flux.Range(11, 10))
     .Test()
     .AssertResult(11, 12, 13, 14, 15, 16, 17, 18, 19, 20);
 }
Exemple #2
0
 public void Single_Many()
 {
     Flux.Range(1, 10).Single().Test()
     .AssertNoValues()
     .AssertError(e => e is IndexOutOfRangeException)
     .AssertNotComplete();
 }
Exemple #3
0
 public void SkipWhile_Normal_Fused()
 {
     Flux.Range(1, 10).SkipWhile(v => v < 6)
     .Test(fusionMode: FuseableHelper.ANY)
     .AssertFusionMode(FuseableHelper.SYNC)
     .AssertResult(6, 7, 8, 9, 10);
 }
Exemple #4
0
 public void SwitchIfEmpty_Conditional_Empty()
 {
     Flux.Empty <int>().SwitchIfEmpty(Flux.Range(1, 10))
     .Filter(v => true)
     .Test()
     .AssertResult(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
 }
 public void TakeWhile_Normal_Fused()
 {
     Flux.Range(1, 10).TakeWhile(v => v <= 5)
     .Test(fusionMode: FuseableHelper.ANY)
     .AssertFusionMode(FuseableHelper.SYNC)
     .AssertResult(1, 2, 3, 4, 5);
 }
Exemple #6
0
 public void SwitchIfEmpty_Conditional_NonEmpty()
 {
     Flux.Range(11, 10).SwitchIfEmpty(Flux.Range(1, 10))
     .Filter(v => true)
     .Test()
     .AssertResult(11, 12, 13, 14, 15, 16, 17, 18, 19, 20);
 }
Exemple #7
0
 public void TakeUntilPredicate_Normal_Fused()
 {
     Flux.Range(1, 10).TakeUntil(v => v == 5)
     .Test(fusionMode: FuseableHelper.ANY)
     .AssertFusionMode(FuseableHelper.SYNC)
     .AssertResult(1, 2, 3, 4, 5);
 }
        public void Parallel_Sorted_Async()
        {
            for (int j = 1; j <= Environment.ProcessorCount; j++)
            {
                for (int i = 1; i <= 100000; i *= 10)
                {
                    var ts = Flux.Range(1, i)
                             .Map(v => i - v + 1)
                             .Parallel(j, true)
                             .RunOn(DefaultScheduler.Instance)
                             .Sorted()
                             .Test();

                    ts.AwaitTerminalEvent(TimeSpan.FromSeconds(20));

                    ts.AssertValueCount(i)
                    .AssertNoError()
                    .AssertComplete();

                    for (int k = 1; k <= i; k++)
                    {
                        Assert.AreEqual(k, ts.Values[k - 1]);
                    }
                }
            }
        }
 public void Buffer_Skip()
 {
     Flux.Range(1, 5).Buffer(2, 3).Test().AssertResult(
         new List <int>(new[] { 1, 2 }),
         new List <int>(new[] { 4, 5 })
         );
 }
        public void PublishProcessor_Normal()
        {
            PublishProcessor <int> pp = new PublishProcessor <int>();

            var ts1 = pp.Test(0);
            var ts2 = pp.Test(0);

            ts1.AssertNoEvents();
            ts2.AssertNoValues();

            Flux.Range(1, 10).Subscribe(pp);

            ts1.AssertNoEvents();
            ts2.AssertNoValues();

            ts1.Request(1);

            ts1.AssertNoEvents();
            ts2.AssertNoValues();

            ts2.Request(10);

            ts1.AssertValues(1);
            ts2.AssertValues(1);

            ts1.Request(9);

            ts1.AssertResult(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
            ts2.AssertResult(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        }
 public void TakeLast_Single_Fused()
 {
     Flux.Range(1, 10).TakeLast(1)
     .Test(fusionMode: FuseableHelper.ANY)
     .AssertFusionMode(FuseableHelper.ASYNC)
     .AssertResult(10);
 }
 public void OnBackpressureBuffer_Fused()
 {
     Flux.Range(1, 10).OnBackpressureBuffer()
     .Test(fusionMode: FuseableHelper.ANY)
     .AssertFusionMode(FuseableHelper.ASYNC)
     .AssertResult(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
 }
 public void OnErrorResumeWith_Error()
 {
     Flux.Range(1, 5)
     .ConcatWith(Flux.Error <int>(new Exception()))
     .OnErrorResumeWith(e => Flux.Range(6, 5))
     .Test().AssertResult(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
 }
 public void Then_EmptyVoid_Fused()
 {
     Flux.Range(1, 10).Then(Mono.Empty <Void>())
     .Test(fusionMode: FuseableHelper.ANY)
     .AssertFusionMode(FuseableHelper.ASYNC)
     .AssertResult();
 }
 public void Using_Normal_Fused()
 {
     Flux.Using(() => 1, s => Flux.Range(1, 5), s => { })
     .Test(fusionMode: FuseableHelper.ANY)
     .AssertFusionMode(FuseableHelper.SYNC)
     .AssertResult(1, 2, 3, 4, 5);
 }
 public void Parallel_Filter()
 {
     Flux.Range(1, 10).Parallel(2)
     .Filter(v => (v & 1) != 0)
     .Sequential()
     .Test()
     .AssertResult(1, 3, 5, 7, 9);
 }
 public void Parallel_Normal_Fused_Long()
 {
     Flux.Range(1, 10000).Parallel(2)
     .Sequential().Test()
     .AssertValueCount(10000)
     .AssertNoError()
     .AssertComplete();
 }
 public void Parallel_Map()
 {
     Flux.Range(1, 10).Parallel(2)
     .Map(v => v * 2)
     .Sequential()
     .Test()
     .AssertResult(2, 4, 6, 8, 10, 12, 14, 16, 18, 20);
 }
Exemple #19
0
 public void ThenMany_Conditional()
 {
     Flux.Range(1, 10)
     .ThenMany(Flux.Range(11, 10))
     .Filter(v => true)
     .Test()
     .AssertResult(11, 12, 13, 14, 15, 16, 17, 18, 19, 20);
 }
 public void Buffer_Exact()
 {
     Flux.Range(1, 5).Buffer(2).Test().AssertResult(
         new List <int>(new[] { 1, 2 }),
         new List <int>(new[] { 3, 4 }),
         new List <int>(new[] { 5 })
         );
 }
Exemple #21
0
        public void Process_DirectProcessor()
        {
            var co = Flux.Range(1, 10).Process(() => new DirectProcessor <int>(), o => o.Map(v => v + 1));
            var ts = co.Test();

            co.Connect();

            ts.AssertResult(2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
        }
        public void Take_Fused_Exact_Boundary_Backpressure()
        {
            var ts = Flux.Range(1, 2)
                     .Take(1)
                     .PublishOn(ImmediateScheduler.Instance)
                     .Test(1, FuseableHelper.ANY);

            ts.AssertResult(1);
        }
Exemple #23
0
 public void PublishOn_Normal_FusedIn()
 {
     Flux.Range(1, 1000000)
     .PublishOn(DefaultScheduler.Instance)
     .Test()
     .AwaitTerminalEvent()
     .AssertValueCount(1000000)
     .AssertNoError()
     .AssertComplete();
 }
Exemple #24
0
        public void ConcatMap_End_Error_Fused()
        {
            var ts = Flux.Range(1, 3)
                     .ConcatMap(v => v != 2 ? Flux.Range(1, 3) : Flux.Error <int>(new Exception("Forced failure")), ConcatErrorMode.End)
                     .Test();

            ts.AssertValues(1, 2, 3, 1, 2, 3)
            .AssertError(e => e.Message.Equals("Forced failure"))
            .AssertNotComplete();
        }
 public void Buffer_Overlap()
 {
     Flux.Range(1, 5).Buffer(2, 1).Test().AssertResult(
         new List <int>(new[] { 1, 2 }),
         new List <int>(new[] { 2, 3 }),
         new List <int>(new[] { 3, 4 }),
         new List <int>(new[] { 4, 5 }),
         new List <int>(new[] { 5 })
         );
 }
Exemple #26
0
        public void ConcatMap_Conditional_Boundary_Error_Fused()
        {
            var ts = Flux.Range(1, 3)
                     .ConcatMap(v => v != 2 ? Flux.Range(1, 3) : Flux.Error <int>(new Exception("Forced failure")), ConcatErrorMode.Boundary)
                     .Filter(v => true).Test();

            ts.AssertValues(1, 2, 3)
            .AssertError(e => e.Message.Equals("Forced failure"))
            .AssertNotComplete();
        }
 public void GroupBy_Normal()
 {
     Flux.Range(1, 10).GroupBy(k => k & 1)
     .FlatMap(g => g.CollectList())
     .Test()
     .AssertResult(
         new List <int>(new [] { 1, 3, 5, 7, 9 }),
         new List <int>(new[] { 2, 4, 6, 8, 10 })
         );
 }
 public void Parallel_Ordered_Join()
 {
     for (int j = 1; j <= 32; j++)
     {
         Flux.Range(1, 10)
         .Parallel(j, true)
         .Sequential()
         .Test()
         .AssertResult(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
     }
 }
 public void GroupBy_2_of_3_Groups()
 {
     Flux.Range(1, 10).GroupBy(k => k % 3)
     .Take(2)
     .FlatMap(g => g.CollectList())
     .Test()
     .AssertResult(
         new List <int>(new[] { 1, 4, 7, 10 }),
         new List <int>(new[] { 2, 5, 8 })
         );
 }
Exemple #30
0
        public void SwitchMap_Normal_Fused()
        {
            var dp = new DirectProcessor <int>();

            var ts = dp.SwitchMap(v => Flux.Range(v, 2))
                     .Test();

            dp.OnNext(1, 2, 3);
            dp.OnComplete();

            ts.AssertResult(1, 2, 2, 3, 3, 4);
        }