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); }
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 }); }
public void ShouldGenerateValidDeltasForRecursiveList() { var list = CeateRecusiveList(10); AddRecusiveListFields(list); var root = list.GenerateEvents(); var newList = new RecursiveList(); newList.ApplyEvents(root); Assert.Equal(list, newList); }
private RecursiveList CeateRecusiveList(int depth) { var list = new RecursiveList(); if (depth > 0) { list.List.Add(CeateRecusiveList(depth - 1)); } return(list); }
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); }
public static ILazyEnumerable <T> ToLazyEnumerable <T>(this RecursiveList <T> source) { return(new LazyEnumerable <T>(new RecursiveListEnumerator <T>(source))); }