Exemplo n.º 1
0
        public void SetUp()
        {
            _methodInfoBasedNodeTypeRegistry = new MethodInfoBasedNodeTypeRegistry();

            _methodInfoBasedNodeTypeRegistry.Register(WhereExpressionNode.GetSupportedMethods(), typeof(WhereExpressionNode));
            _methodInfoBasedNodeTypeRegistry.Register(SelectExpressionNode.GetSupportedMethods(), typeof(SelectExpressionNode));
            _methodInfoBasedNodeTypeRegistry.Register(TakeExpressionNode.GetSupportedMethods(), typeof(TakeExpressionNode));
            _methodInfoBasedNodeTypeRegistry.Register(CountExpressionNode.GetSupportedMethods(), typeof(CountExpressionNode));
            _methodInfoBasedNodeTypeRegistry.Register(JoinExpressionNode.GetSupportedMethods(), typeof(JoinExpressionNode));

            _parser = new MethodCallExpressionParser(_methodInfoBasedNodeTypeRegistry);

            _source = ExpressionNodeObjectMother.CreateMainSource();
        }
Exemplo n.º 2
0
        public void Parse_WithSubQuery_UsesNodeTypeRegistry()
        {
            var emptyNodeTypeRegistry = new MethodInfoBasedNodeTypeRegistry();

            emptyNodeTypeRegistry.Register(SelectExpressionNode.GetSupportedMethods(), typeof(SelectExpressionNode));
            var parser = new MethodCallExpressionParser(emptyNodeTypeRegistry);

            var expression = (MethodCallExpression)ExpressionHelper.MakeExpression <IQueryable <Cook>, IQueryable <int> > (
                q => q.Select(s => s.Assistants.Count()));

            var result = parser.Parse("t", _source, expression.Arguments.Skip(1), expression);

            Assert.That(result, Is.InstanceOf(typeof(SelectExpressionNode)));
            Assert.That(((SelectExpressionNode)result).Selector, Is.Not.TypeOf(typeof(SubQueryExpression)),
                        "The given nodeTypeRegistry does not know any query methods, so no SubQueryExpression is generated.");
        }
        public void Parser()
        {
            IMethodCallTranslator translator = new StringMethodCallTranslator();
            var mock = new Mock <IServiceResolver <IMethodCallTranslator> >();

            mock.Setup(m => m.Resolve(It.IsAny <Type>()))
            .Returns(translator);

            IExpressionParserStrategy parser = new MethodCallExpressionParser(mock.Object);
            var collection                 = new QueryParameterCollection();
            Func <SimpleModel, bool> s     = (b) => b.Name.Contains("A");
            ParameterExpression      param = Expression.Parameter(typeof(SimpleModel), "s");
            Expression property            = Expression.Property(param, "Name");
            Expression left                = Expression.Call(property, typeof(string).GetMethod("Contains"), Expression.Constant("A"));

            parser.Parser(left, ExpressionType.And, ref collection);
            Assert.IsTrue(collection.Count > 0);
            Assert.AreEqual(collection[0].ToString(), "");
        }