Exemple #1
0
            public void UnfoldFlow_should_unfold_Collatz_conjecture_with_a_sequence_of_111_elements_with_function()
            {
                Option <Tuple <int, int> > Map(int x)
                {
                    if (x == 1)
                    {
                        return(Option <Tuple <int, int> > .None);
                    }

                    if (x % 2 == 0)
                    {
                        return(new Option <Tuple <int, int> >(Tuple.Create(x / 2, x)));
                    }

                    return(new Option <Tuple <int, int> >(Tuple.Create(x * 3 + 1, x)));
                }

                var source = SourceGen.UnfoldFlowWith(27, Flow.FromFunction <int, int>(x => x), Map, _timeout);
                var sink   = source.RunWith(this.SinkProbe <int>(), Sys.Materializer());

                foreach (var output in _outputs)
                {
                    sink.Request(1);
                    sink.ExpectNext(output);
                }
                sink.Request(1);
                sink.ExpectComplete();
            }
Exemple #2
0
            public WithFunction()
            {
                var controlledFlow = Flow.FromSinkAndSource(this.SinkProbe <int>(), this.SourceProbe <int>(), Keep.Both);

                _source = SourceGen.UnfoldFlowWith(1, controlledFlow, n => new Option <Tuple <int, int> >(Tuple.Create(n + 1, n)), _timeout);
            }