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(); }
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); }