Exemplo n.º 1
0
        public void Select()
        {
            var b = RoseTree.Create(1, RoseTree.Singleton(2));
            var c = from i in b select i + 1;
            var d = RoseTree.Create(2, RoseTree.Singleton(3));

            Assert.AreEqual(d, c);
        }
Exemplo n.º 2
0
        public void Create()
        {
            // without sugar
            var a = new RoseTree <int>(1, LazyListModule.ofArray(new[] {
                new RoseTree <int>(2, LazyListModule.empty <RoseTree <int> >()),
            }));

            // with sugar (but no laziness)
            var b = RoseTree.Create(1, RoseTree.Create(2));

            Assert.AreEqual(b, a);
        }
Exemplo n.º 3
0
        public void SelectMany2()
        {
            // kind of useless?
            var b = RoseTree.Create(1, RoseTree.Singleton(2));
            var c = b.SelectMany(RoseTree.Singleton, (x, y) => y);

            PrintTree(c, 0);
            var d = RoseTree.Create(1,
                                    RoseTree.Singleton(2),
                                    RoseTree.Create(1, RoseTree.Singleton(2)));

            Assert.AreEqual(d, c);
        }
Exemplo n.º 4
0
        public void SelectMany()
        {
            var b = RoseTree.Create(1, RoseTree.Singleton(2));
            var c = b.SelectMany(i => {
                if (i <= 1)
                {
                    return(RoseTree.Singleton(i));
                }
                return(RoseTree.Create(i, RoseTree.Singleton(i + 1)));
            });

            PrintTree(c, 0);
            var d = RoseTree.Create(1, RoseTree.Create(2, RoseTree.Singleton(3)));

            Assert.AreEqual(d, c);
        }
Exemplo n.º 5
0
        public void SelectManyLinq()
        {
            // kind of useless?
            var b = RoseTree.Create(1, RoseTree.Singleton(2));
            var c = from i in b
                    let r = i <= 1 ? RoseTree.Singleton(i) : RoseTree.Create(i, RoseTree.Singleton(i + 1))
                            from j in r
                            select j;

            PrintTree(c, 0);
            var d = RoseTree.Create(1,
                                    RoseTree.Create(2, RoseTree.Create(3)),
                                    RoseTree.Create(1,
                                                    RoseTree.Create(2, RoseTree.Create(3))));

            Assert.AreEqual(d, c);
        }
Exemplo n.º 6
0
 private static RoseTree <T> R <T>(T root, params RoseTree <T>[] children)
 {
     return(RoseTree.Create(root, children));
 }