Example #1
0
        /*equality-expression-p:
         | expression-equality-operator relational-expression equality-expression-p
         | EPSILON */
        private ExpressionNode equality_expression_p(ExpressionNode leftExpression)
        {
            printIfDebug("equality_expression_p");
            if (pass(equalityOperatorOptions))
            {
                Token equalityOperation = token;
                consumeToken();
                var            relationalExpression = relational_expression();
                ExpressionNode resultExpression     = null;
                if (equalityOperation.type == TokenType.OP_EQUAL)
                {
                    resultExpression = new EqualExpressionNode(leftExpression, relationalExpression, equalityOperation);
                }
                else
                {
                    resultExpression = new DistinctExpressionNode(leftExpression, relationalExpression, equalityOperation);
                }

                return(equality_expression_p(resultExpression));
            }
            else
            {
                return(leftExpression);
            }
        }
 public void GetSupportedMethods()
 {
     Assert.That(
         DistinctExpressionNode.GetSupportedMethods(),
         Is.EquivalentTo(
             new[]
     {
         GetGenericMethodDefinition(() => Queryable.Distinct <object> (null)),
         GetGenericMethodDefinition(() => Enumerable.Distinct <object> (null))
     }));
 }
        public void Resolve_PassesExpressionToSource()
        {
            var sourceMock     = MockRepository.GenerateMock <IExpressionNode>();
            var node           = new DistinctExpressionNode(CreateParseInfo(sourceMock));
            var expression     = ExpressionHelper.CreateLambdaExpression();
            var parameter      = ExpressionHelper.CreateParameterExpression();
            var expectedResult = ExpressionHelper.CreateExpression();

            sourceMock.Expect(mock => mock.Resolve(parameter, expression, ClauseGenerationContext)).Return(expectedResult);

            var result = node.Resolve(parameter, expression, ClauseGenerationContext);

            sourceMock.VerifyAllExpectations();
            Assert.That(result, Is.SameAs(expectedResult));
        }
Example #4
0
        public override void SetUp()
        {
            base.SetUp();
            _clauseToAddInApply = new WhereClause(Expression.Constant(false));
            _node = new TestMethodCallExpressionNode(CreateParseInfo(SourceNode, "test"), _clauseToAddInApply);

            var distinctMethod = ReflectionUtility.GetMethod(() => new int[0].Distinct());

            _resultOperatorSource = new DistinctExpressionNode(CreateParseInfo(SourceNode, "distinct", distinctMethod));
            var method = ReflectionUtility.GetMethod(() => Queryable.Take <int> (null, 0));

            _nodeWithResultOperatorSource = new TestMethodCallExpressionNode(CreateParseInfo(_resultOperatorSource, "test", method), _clauseToAddInApply);
            _queryModelWithResultOperator = QueryModel.Clone();
            _queryModelWithResultOperator.ResultOperators.Add(new DistinctResultOperator());
        }
Example #5
0
        /// <summary>
        /// Creates a <see cref="MethodInfoBasedNodeTypeRegistry"/> and registers all relevant <see cref="IExpressionNode"/> implementations in the <b>Remotion.Linq</b> assembly.
        /// </summary>
        /// <returns>
        /// A <see cref="MethodInfoBasedNodeTypeRegistry"/> with all <see cref="IExpressionNode"/> types in the <b>Remotion.Linq</b> assembly registered.
        /// </returns>
        public static MethodInfoBasedNodeTypeRegistry CreateFromRelinqAssembly()
        {
            var registry = new MethodInfoBasedNodeTypeRegistry();

            registry.Register(AggregateExpressionNode.GetSupportedMethods(), typeof(AggregateExpressionNode));
            registry.Register(AggregateFromSeedExpressionNode.GetSupportedMethods(), typeof(AggregateFromSeedExpressionNode));
            registry.Register(AllExpressionNode.GetSupportedMethods(), typeof(AllExpressionNode));
            registry.Register(AnyExpressionNode.GetSupportedMethods(), typeof(AnyExpressionNode));
            registry.Register(AsQueryableExpressionNode.GetSupportedMethods(), typeof(AsQueryableExpressionNode));
            registry.Register(AverageExpressionNode.GetSupportedMethods(), typeof(AverageExpressionNode));
            registry.Register(CastExpressionNode.GetSupportedMethods(), typeof(CastExpressionNode));
            registry.Register(ConcatExpressionNode.GetSupportedMethods(), typeof(ConcatExpressionNode));
            registry.Register(ContainsExpressionNode.GetSupportedMethods(), typeof(ContainsExpressionNode));
            registry.Register(CountExpressionNode.GetSupportedMethods(), typeof(CountExpressionNode));
            registry.Register(DefaultIfEmptyExpressionNode.GetSupportedMethods(), typeof(DefaultIfEmptyExpressionNode));
            registry.Register(DistinctExpressionNode.GetSupportedMethods(), typeof(DistinctExpressionNode));
            registry.Register(ExceptExpressionNode.GetSupportedMethods(), typeof(ExceptExpressionNode));
            registry.Register(FirstExpressionNode.GetSupportedMethods(), typeof(FirstExpressionNode));
            registry.Register(GroupByExpressionNode.GetSupportedMethods(), typeof(GroupByExpressionNode));
            registry.Register(GroupByWithResultSelectorExpressionNode.GetSupportedMethods(), typeof(GroupByWithResultSelectorExpressionNode));
            registry.Register(GroupJoinExpressionNode.GetSupportedMethods(), typeof(GroupJoinExpressionNode));
            registry.Register(IntersectExpressionNode.GetSupportedMethods(), typeof(IntersectExpressionNode));
            registry.Register(JoinExpressionNode.GetSupportedMethods(), typeof(JoinExpressionNode));
            registry.Register(LastExpressionNode.GetSupportedMethods(), typeof(LastExpressionNode));
            registry.Register(LongCountExpressionNode.GetSupportedMethods(), typeof(LongCountExpressionNode));
            registry.Register(MaxExpressionNode.GetSupportedMethods(), typeof(MaxExpressionNode));
            registry.Register(MinExpressionNode.GetSupportedMethods(), typeof(MinExpressionNode));
            registry.Register(OfTypeExpressionNode.GetSupportedMethods(), typeof(OfTypeExpressionNode));
            registry.Register(OrderByDescendingExpressionNode.GetSupportedMethods(), typeof(OrderByDescendingExpressionNode));
            registry.Register(OrderByExpressionNode.GetSupportedMethods(), typeof(OrderByExpressionNode));
            registry.Register(ReverseExpressionNode.GetSupportedMethods(), typeof(ReverseExpressionNode));
            registry.Register(SelectExpressionNode.GetSupportedMethods(), typeof(SelectExpressionNode));
            registry.Register(SelectManyExpressionNode.GetSupportedMethods(), typeof(SelectManyExpressionNode));
            registry.Register(SingleExpressionNode.GetSupportedMethods(), typeof(SingleExpressionNode));
            registry.Register(SkipExpressionNode.GetSupportedMethods(), typeof(SkipExpressionNode));
            registry.Register(SumExpressionNode.GetSupportedMethods(), typeof(SumExpressionNode));
            registry.Register(TakeExpressionNode.GetSupportedMethods(), typeof(TakeExpressionNode));
            registry.Register(ThenByDescendingExpressionNode.GetSupportedMethods(), typeof(ThenByDescendingExpressionNode));
            registry.Register(ThenByExpressionNode.GetSupportedMethods(), typeof(ThenByExpressionNode));
            registry.Register(UnionExpressionNode.GetSupportedMethods(), typeof(UnionExpressionNode));
            registry.Register(WhereExpressionNode.GetSupportedMethods(), typeof(WhereExpressionNode));

            return(registry);
        }
 public override void SetUp()
 {
     base.SetUp();
     _node = new DistinctExpressionNode(CreateParseInfo());
 }