public void SetUp() { _nodeTypeProviderMock1 = MockRepository.GenerateStrictMock <INodeTypeProvider>(); _nodeTypeProviderMock2 = MockRepository.GenerateStrictMock <INodeTypeProvider> (); _compoundProvider = new CompoundNodeTypeProvider(new[] { _nodeTypeProviderMock1, _nodeTypeProviderMock2 }); _methodInfo = typeof(object).GetMethod("ToString"); }
private static IQueryParser CreateQueryParser() { var nodeTypeProvider = new CompoundNodeTypeProvider(new INodeTypeProvider[] { MethodInfoBasedNodeTypeRegistry.CreateFromRelinqAssembly() }); var transformerRegistry = ExpressionTransformerRegistry.CreateDefault(); var expressionTreeParser = new ExpressionTreeParser(nodeTypeProvider, ExpressionTreeParser.CreateDefaultProcessor(transformerRegistry)); return(new QueryParser(expressionTreeParser)); }
/// <summary> /// The create query parser. /// </summary> /// <returns> /// The <see cref="IQueryParser" />. /// </returns> public static IQueryParser CreateQueryParser() { CompoundNodeTypeProvider nodeTypeProvider = ExpressionTreeParser.CreateDefaultNodeTypeProvider(); var earlyTransformerRegistry = new ExpressionTransformerRegistry(); earlyTransformerRegistry.Register(new DateTimeEarlyExpressionTransformer()); CompoundExpressionTreeProcessor processor = CreateDefaultProcessor(earlyTransformerRegistry); var expressionTreeParser = new ExpressionTreeParser(nodeTypeProvider, processor); var queryParser = new QueryParser(expressionTreeParser); return(queryParser); }
/// <summary> /// Create the parser we want to use to parse the LINQ query. If we need to add /// some operators or other custom things into the parser, this is where it is done. /// See https://www.re-motion.org/jira/browse/RM-3724 for sample code. /// </summary> internal static IQueryParser CreateLINQToTTreeParser() { // // Provider for our classes, and they also go into the whole pot of soup // var mreg = new MethodInfoBasedNodeTypeRegistry(); mreg.Register(UniqueCombinationsExpressionNode.SupportedMethods, typeof(UniqueCombinationsExpressionNode)); mreg.Register(PairWiseAllExpressionNode.SupportedMethods, typeof(PairWiseAllExpressionNode)); mreg.Register(AsQueriableExpressionNode.SupportedMethods, typeof(AsQueriableExpressionNode)); mreg.Register(AsCSVExpressionNode.SupportedMethods, typeof(AsCSVExpressionNode)); mreg.Register(AsTTreeExpressionNode.SupportedMethods, typeof(AsTTreeExpressionNode)); mreg.Register(ConcatExpressionNode.GetSupportedMethods(), typeof(ConcatExpressionNode)); mreg.Register(TakeSkipExpressionNode.SupportedMethods, typeof(TakeSkipExpressionNode)); var defaultNodeTypeProvider = ExpressionTreeParser.CreateDefaultNodeTypeProvider(); var newProvider = new CompoundNodeTypeProvider(new INodeTypeProvider[] { mreg, defaultNodeTypeProvider }); // // All the various transformers we need... // var transformerRegistry = ExpressionTransformerRegistry.CreateDefault(); transformerRegistry.Register(new PropertyExpressionTransformer()); transformerRegistry.Register(new EnumerableRangeExpressionTransformer()); transformerRegistry.Register(new CreateTupleExpressionTransformer()); transformerRegistry.Register <MethodCallExpression>(new ExpressionVariableInvokeExpressionTransformer(new ExpressionType[] { ExpressionType.Call })); transformerRegistry.Register <InvocationExpression>(new ExpressionVariableInvokeExpressionTransformer(new ExpressionType[] { ExpressionType.Invoke })); // // Create the query provider // var expressionTreeParser = new ExpressionTreeParser( newProvider, ExpressionTreeParser.CreateDefaultProcessor(transformerRegistry)); return(new QueryParser(expressionTreeParser)); }