Esempio n. 1
0
        private void AddRecusiveListFields(RecursiveList list)
        {
            list.Primitives   = new AllPrimitives();
            list.Primitives.A = 10;
            list.Primitives.B = 11;
            list.Primitives.C = 12;
            list.Primitives.D = 13;
            list.Primitives.E = 14;
            list.Primitives.F = 15;
            list.Primitives.G = 16.1;
            list.Primitives.H = 17.2F;
            list.Primitives.I = true;
            list.Primitives.J = "18";
            list.Primitives.K = ByteString.CopyFromUtf8("19");
            list.Primitives.L = 20;
            list.Primitives.M = 21;
            list.Primitives.N = -22;
            list.Primitives.O = -23;

            list.Bar     = new Bar();
            list.Bar.Foo = new Foo();
            list.Enumero = Enumero.Halp;

            foreach (var l in list.List)
            {
                AddRecusiveListFields(l);
            }
        }
        public void UsingAFSharpModuleDirectly()
        {
            // Using two module functions (like a C# static class to build the list)
            var list = RecursiveList.cons("TEST", RecursiveList.EmptyList <string>());
            // Building a discriminated union the C# way to assert equality
            var expectedList = RecursiveList <string> .NewHead("TEST", RecursiveList.EmptyList <string>());

            Assert.AreEqual(expectedList, list);
        }
Esempio n. 3
0
        public void Fib()
        {
            var enumerable = new RecursiveList <int>(1, (x, meta) => meta.Previous == null ? x : x + meta.Previous.Item).Take(10).ToList();

            enumerable.ShouldBe(new List <int>()
            {
                1, 1, 2, 3, 5, 8, 13, 21, 34, 55
            });
        }
Esempio n. 4
0
        public void ShouldGenerateValidDeltasForRecursiveList()
        {
            var list = CeateRecusiveList(10);

            AddRecusiveListFields(list);
            var root    = list.GenerateEvents();
            var newList = new RecursiveList();

            newList.ApplyEvents(root);
            Assert.Equal(list, newList);
        }
Esempio n. 5
0
        private RecursiveList CeateRecusiveList(int depth)
        {
            var list = new RecursiveList();

            if (depth > 0)
            {
                list.List.Add(CeateRecusiveList(depth - 1));
            }

            return(list);
        }
Esempio n. 6
0
        public void CanIterateParent2()
        {
            var b1  = new Block(1);
            var b11 = b1.Add(11);
            var b12 = b1.Add(12);
            var b21 = b11.Add(111);

            var enumerable = new RecursiveList <Block>(b12, b => b.Parent).Select(b => b.Id).ToList();

            enumerable.ShouldBe(new List <int>()
            {
                12, 1
            });
        }
        public void UsingCSharpFriendlyApiInsteadOfFSharpFunc()
        {
            // These are all using the module functions.
            // Module is just a static class to C#.
            var list = RecursiveList.EmptyList <string>();
            var listWithAddedData = RecursiveList.cons("Test", list);

            Func <string, string> mapFunction = s => "TEST3" + s;

            var mappedList = listWithAddedData.Select(mapFunction);

            var expectedList = RecursiveList <string> .NewHead("TEST3Test", RecursiveList <string> .Empty);

            Assert.AreEqual(expectedList, mappedList);
        }
        public void UsingFSharpFuncIfYouHaveTo()
        {
            // These are all using the module functions.
            // Module is just a static class to C#.
            var list = RecursiveList.EmptyList <string>();
            var listWithAddedData = RecursiveList.cons("Test", list);

            Func <string, string> mapFunction = s => "TEST2" + s;
            var fsharpFunc = mapFunction.ToFSharpFunc();

            var mappedList = RecursiveList.map(fsharpFunc, listWithAddedData);

            var expectedList = RecursiveList <string> .NewHead("TEST2Test", RecursiveList <string> .Empty);

            Assert.AreEqual(expectedList, mappedList);
        }
Esempio n. 9
0
 public static ILazyEnumerable <T> ToLazyEnumerable <T>(this RecursiveList <T> source)
 {
     return(new LazyEnumerable <T>(new RecursiveListEnumerator <T>(source)));
 }