public void MapReduceTest() { string xml1 = @"<MapReduce> <Map> <MapRule Type = 'MapRuleOnT2' /> </Map> <Reduce> <ReduceRule Type = 'ReduceRuleOnT2' /> <ReduceRule Type = 'AssignRuleOnT2' /> </Reduce> </MapReduce>"; Parser parser = xml1.CreateParser("MapReduce"); parser.AddContext("MapRuleOnT2", "ClassLibrary1.MapRuleOnT2, ClassLibrary1"); parser.AddContext("ReduceRuleOnT2", "ClassLibrary1.ReduceRuleOnT2, ClassLibrary1"); parser.AddContext("AssignRuleOnT2", "ClassLibrary1.AssignRuleOnT2, ClassLibrary1"); Assert.IsTrue(parser.Build()); ParserResult t2result = parser.Result; var parserResult = t2result.Expression; var resultFunc = (Expression<Func<Test2, Test2>>)parserResult; Func<Test2, Test2> func = resultFunc.Compile(); var t1 = new Test2() { B = 10 }; Test2 result = func(t1); }
public void ForEachOnlyRule() { string xml = @" <Map> <MapRule Type = 'MapRuleOnT2' /> <ForEach> <Rule Type = 'IninValueOnT3'/> </ForEach> </Map>"; Parser parser = xml.CreateParser("Map"); parser.AddContext("MapRuleOnT2", "ClassLibrary1.MapRuleOnT2, ClassLibrary1"); parser.AddContext("IninValueOnT3", "ClassLibrary1.IninValueOnT3, ClassLibrary1"); Assert.IsTrue(parser.MapBlock()); var parserResult = parser.Result.Expression; var resultFunc = (Expression<Func<Test2, IEnumerable<Test3>>>)parserResult; Func<Test2, IEnumerable<Test3>> func = resultFunc.Compile(); var t2 = new Test2() { B = 2 }; IEnumerable<Test3> result = func(t2); Assert.AreEqual(2, result.Count()); }