public void ConfigurationLayer() { var chain = InputChain <int> .Build((c, r) => { //config stringHolder pointer = new stringHolder() { str = "1" }; //------------------------------ return(c1 => { if (pointer.str == "3") //check new value from inner. { return c.Complete(); } if (pointer.str != "1") { throw new Exception("C# Broke"); } //override inner property of pointer pointer.str = "2"; //------------------------------ return _ => { if (pointer.str != "2") { throw new Exception("C# Broke"); } //override pointer. pointer = new stringHolder() { str = "3" }; return c.Backwards(1); //to root. }; }); }); //run while (!chain.Completed) { chain.Pulse(); } }
public static void TestDirectJoinInvocation() { var table1 = new stringHolder[] { "hello", "goodbye" }; var table2 = new stringHolder[] { "world", "everybody" }; Enumerable.Join( inner: table1, outer: table2, innerKeySelector: row1 => true, outerKeySelector: row2 => true, resultSelector: (stringHolder t1Val, stringHolder t2Val) => { if (t2Val._val == null) { Assert.Fail("t2Val._val == null"); } if (t1Val._val == null) { Assert.Fail("t1Val._val == null"); } Assert.True(t1Val._val == "world" || t1Val._val == "everybody", "table 1 element value is '" + t1Val._val + "'."); Assert.True(t2Val._val == "hello" || t2Val._val == "goodbye", "table 2 element value is '" + t2Val._val + "'."); return(true); } ).All(retc => retc == true); }