public void TestCollect() { StreamSink <int> sa = Stream.CreateSink <int>(); List <int> @out = new List <int>(); Stream <int> sum = sa.Collect(ValueTuple.Create(100, true), (a, s) => { int outputValue = s.Item1 + (s.Item2 ? a * 3 : a); return(ValueTuple.Create(outputValue, ValueTuple.Create(outputValue, outputValue % 2 == 0))); }); IListener l = sum.Listen(@out.Add); sa.Send(5); sa.Send(7); sa.Send(1); sa.Send(2); sa.Send(3); l.Unlisten(); CollectionAssert.AreEqual(new[] { 115, 122, 125, 127, 130 }, @out); }
public void TestCollect() { StreamSink<int> sa = new StreamSink<int>(); List<int> @out = new List<int>(); Stream<int> sum = sa.Collect(Tuple.Create(100, true), (a, s) => { int outputValue = s.Item1 + (s.Item2 ? a * 3 : a); return Tuple.Create(outputValue, Tuple.Create(outputValue, outputValue % 2 == 0)); }); using (sum.Listen(@out.Add)) { sa.Send(5); sa.Send(7); sa.Send(1); sa.Send(2); sa.Send(3); } CollectionAssert.AreEqual(new[] { 115, 122, 125, 127, 130 }, @out); }