Esempio n. 1
0
        public void TupleCollapsingPairWithInitialValue()
        {
            using (var pipeline = Pipeline.Create())
            {
                var range   = Generators.Range(pipeline, 0, 10, TimeSpan.FromMilliseconds(100));
                var sourceA = range.Select(x => $"A{x}");
                var sourceB = range.Select(x => $"B{x}");
                var sourceC = range.Select(x => $"C{x}");
                var sourceD = range.Select(x => $"D{x}");
                var sourceE = range.Select(x => $"E{x}");
                var sourceF = range.Select(x => $"F{x}");
                var sourceG = range.Select(x => $"G{x}");

                ListObservable <ValueTuple <string, string, string, string, string, string, string> > tuples = // expecting tuple flattening
                                                                                                               sourceA
                                                                                                               .Pair(sourceB, "B?")
                                                                                                               .Pair(sourceC, "C?")
                                                                                                               .Pair(sourceD, "D?")
                                                                                                               .Pair(sourceE, "E?")
                                                                                                               .Pair(sourceF, "F?")
                                                                                                               .Pair(sourceG, "G?")
                                                                                                               .ToObservable().ToListObservable();
                pipeline.Run();

                var results = tuples.AsEnumerable().ToArray();

                Assert.AreEqual(10, results.Length);

                // can't really validate content ordering as with Join because Pair is inherently non-deterministic
                foreach (var r in results)
                {
                    Assert.IsTrue(r.Item1.StartsWith("A"));
                    Assert.IsTrue(r.Item2.StartsWith("B"));
                    Assert.IsTrue(r.Item3.StartsWith("C"));
                    Assert.IsTrue(r.Item4.StartsWith("D"));
                    Assert.IsTrue(r.Item5.StartsWith("E"));
                    Assert.IsTrue(r.Item6.StartsWith("F"));
                    Assert.IsTrue(r.Item7.StartsWith("G"));
                }
            }
        }
Esempio n. 2
0
        public void TupleCollapsingReversedPairWithoutInitialValue()
        {
            using (var pipeline = Pipeline.Create())
            {
                var range   = Generators.Range(pipeline, 0, 10, TimeSpan.FromMilliseconds(100));
                var sourceA = range.Select(x => $"A{x}");
                var sourceB = range.Select(x => $"B{x}");
                var sourceC = range.Select(x => $"C{x}");
                var sourceD = range.Select(x => $"D{x}");
                var sourceE = range.Select(x => $"E{x}");
                var sourceF = range.Select(x => $"F{x}");
                var sourceG = range.Select(x => $"G{x}");

                var tuplesFG      = sourceF.Pair(sourceG);
                var tuplesEFG     = sourceE.Pair(tuplesFG);
                var tuplesDEFG    = sourceD.Pair(tuplesEFG);
                var tuplesCDEFG   = sourceC.Pair(tuplesDEFG);
                var tuplesBCDEFG  = sourceB.Pair(tuplesCDEFG);
                var tuplesABCDEFG = sourceA.Pair(tuplesBCDEFG);
                ListObservable <ValueTuple <string, string, string, string, string, string, string> > tuples = tuplesABCDEFG.ToObservable().ToListObservable();
                pipeline.Run();

                // cannot validate length as above because without initial value, it is non-deterministic
                var results = tuples.AsEnumerable().ToArray();

                // can't really validate content ordering as with Join because Pair is inherently non-deterministic
                foreach (var r in results)
                {
                    Assert.IsTrue(r.Item1.StartsWith("A"));
                    Assert.IsTrue(r.Item2.StartsWith("B"));
                    Assert.IsTrue(r.Item3.StartsWith("C"));
                    Assert.IsTrue(r.Item4.StartsWith("D"));
                    Assert.IsTrue(r.Item5.StartsWith("E"));
                    Assert.IsTrue(r.Item6.StartsWith("F"));
                    Assert.IsTrue(r.Item7.StartsWith("G"));
                }
            }
        }