public void Should_return_filter_descriptor_for_function()
        {
            FunctionNode functionNode = StringFunction();

            functionNode.Accept(visitor);

            FilterDescriptor result = (FilterDescriptor)visitor.Result;

            Assert.Equal(FilterOperator.StartsWith, result.Operator);
            Assert.Equal("Name", result.Member);
            Assert.Equal("J", result.Value);
        }
        public void FunctionNode_should_accept_visitor()
        {
            visitor.Setup(v => v.StartVisit(It.IsAny <FunctionNode>())).Verifiable();
            visitor.Setup(v => v.EndVisit()).Verifiable();

            Mock <IFilterNode> first = new Mock <IFilterNode>();

            first.Setup(f => f.Accept(It.IsAny <IFilterNodeVisitor>())).Verifiable();

            FunctionNode functionNode = new FunctionNode
            {
                Arguments = { first.Object }
            };

            functionNode.Accept(visitor.Object);

            visitor.VerifyAll();
            first.Verify();
        }
        public void Visit(FunctionNode node)
        {
            if (this._visitor.CurrentQuery != null && this._visitor.CurrentQuery.HasFromClosure())
            {
                ParameterExpression item = _visitor.ScopedParamters.Peek();
                if (node.IsAggregateMethod)
                {
                    if (item.Type.IsGrouping())
                    {
                        var itemInGroup = Expression.Parameter(item.Type.GetGroupingElementType(), "itemInGroup_" + item.Type.GetGroupingElementType().Name);
                        this._visitor.ScopedParamters.Push(itemInGroup);
                    }
                    else
                    {
                        this._visitor.ScopedParamters.Push(item);
                    }
                }
            }

            node.Arguments.Accept(this);
            node.Accept(_visitor);
        }
Example #4
0
 public void Visit(FunctionNode node)
 {
     node.Arguments.Accept(this);
     node.Accept(_visitor);
 }