public void VisitExtensionExpression ()
    {
      var expression = new ReducibleExtensionExpression (Expression.Constant (0));
      var result = FormattingExpressionVisitor.Format (expression);

      Assert.That (result, Is.EqualTo ("Reducible(0)"));
    }
    public void VisitExtension_ReducedExpressionIsVisited ()
    {
      RelinqExpressionVisitor visitor = new TestThrowingConstantExpressionVisitor();
      var constantExpression = Expression.Constant (0);
      var expression = new ReducibleExtensionExpression (constantExpression);

      var result = visitor.Visit (expression);

      Assert.That (result, Is.Not.SameAs (constantExpression));
      Assert.That (((ConstantExpression) result).Value, Is.EqualTo("ConstantExpression was visited"));
    }
    public void VisitNestedNonReducibleExtensionExpression_NotEvaluatable ()
    {
      var innerExpression = new NonReducibleExtensionExpression (Expression.Constant (1));
      var expression = new ReducibleExtensionExpression (Expression.Add (innerExpression, Expression.Constant (1)));

      var evaluationInfo = EvaluatableTreeFindingExpressionVisitor.Analyze (expression, new FakeEvaluatableExpressionFilter());

      Assert.That (evaluationInfo.IsEvaluatableExpression (expression), Is.False);
      Assert.That (evaluationInfo.IsEvaluatableExpression (innerExpression), Is.False);
    }
    public void VisitReducibleExtensionExpression_NotEvaluatable_ButChildrenMayBe ()
    {
      var innerExpression = Expression.MakeBinary (ExpressionType.Equal, Expression.Constant (0), Expression.Constant (0));
      var extensionExpression = new ReducibleExtensionExpression (innerExpression);
      
      var evaluationInfo = EvaluatableTreeFindingExpressionVisitor.Analyze (extensionExpression, new FakeEvaluatableExpressionFilter());

      Assert.That (evaluationInfo.IsEvaluatableExpression (extensionExpression), Is.False);
      Assert.That (evaluationInfo.IsEvaluatableExpression (innerExpression), Is.True);
    }
    public void VisitExtensionExpression ()
    {
      var innerExpression = Expression.MakeBinary (ExpressionType.Equal, Expression.Constant (0), Expression.Constant (0));
      var extensionExpression = new ReducibleExtensionExpression (innerExpression);
      
      var result = PartialEvaluatingExpressionVisitor.EvaluateIndependentSubtrees (extensionExpression, new TestEvaluatableExpressionFilter());

      var expected = new ReducibleExtensionExpression (Expression.Constant (true));
      ExpressionTreeComparer.CheckAreEqualTrees (expected, result);
    }
Example #6
0
    public void Clone_VisitsExtensionExpression_AndChildren ()
    {
      var referencedClause = ExpressionHelper.CreateMainFromClause_Int();
      var expression = new ReducibleExtensionExpression (new QuerySourceReferenceExpression (referencedClause));

      var querySourceMapping = new QuerySourceMapping();
      var newReferenceExpression = new QuerySourceReferenceExpression (ExpressionHelper.CreateMainFromClause_Int());
      querySourceMapping.AddMapping (referencedClause, newReferenceExpression);
      
      var queryModel = new QueryModel (_mainFromClause, new SelectClause (expression));
      var clone = queryModel.Clone (querySourceMapping);

      Assert.That (((ReducibleExtensionExpression) clone.SelectClause.Selector), Is.Not.SameAs (expression));
      Assert.That (
          ((QuerySourceReferenceExpression) ((ReducibleExtensionExpression) clone.SelectClause.Selector).Expression),
          Is.SameAs (newReferenceExpression));
    }
    public void VisitExtensionExpression_ChildrenAreProcessed ()
    {
      // new TestExtensionExpression (new AnonymousType ( a = 5 ).a) => new TestExtensionExpression (5)
      var memberExpression = Expression.MakeMemberAccess (
          _anonymousTypeNewExpressionWithAssignments,
          _anonymousTypeA);
      var extensionExpression = new ReducibleExtensionExpression (memberExpression);

      var result = TransparentIdentifierRemovingExpressionVisitor.ReplaceTransparentIdentifiers (extensionExpression);

      var expectedExpression = new ReducibleExtensionExpression (_assignedExpressionA);
      ExpressionTreeComparer.CheckAreEqualTrees (expectedExpression, result);
    }
    public void VisitExtensionExpression_ChildrenAreProcessed ()
    {
      var extensionExpression = new ReducibleExtensionExpression (new QuerySourceReferenceExpression (_oldFromClause));

      var result = (ReducibleExtensionExpression) ReferenceReplacingExpressionVisitor.ReplaceClauseReferences (extensionExpression, _querySourceMapping, true);

      var expectedExpression = new ReducibleExtensionExpression (new QuerySourceReferenceExpression (_newFromClause));
      ExpressionTreeComparer.CheckAreEqualTrees (expectedExpression, result);
    }