public void VBStringComparison () { var parameterExpression = Expression.Parameter (typeof (Cook), "c"); var vbCompareStringExpression = Expression.Equal ( Expression.Call ( typeof (Operators).GetMethod ("CompareString"), Expression.Constant ("string1"), Expression.MakeMemberAccess (parameterExpression, typeof (Cook).GetProperty ("Name")), Expression.Constant (true)), Expression.Constant (0)); var query = QuerySource .Where (Expression.Lambda<Func<Cook, bool>> (vbCompareStringExpression, parameterExpression)) .Select (c => c.Name); var queryModel = QueryParser.GetParsedQuery (query.Expression); var whereClause = (WhereClause) queryModel.BodyClauses[0]; var expectedExpression = new VBStringComparisonExpression ( Expression.Equal ( Expression.Constant ("string1"), Expression.MakeMemberAccess (new QuerySourceReferenceExpression (queryModel.MainFromClause), typeof (Cook).GetProperty ("Name"))), true); ExpressionTreeComparer.CheckAreEqualTrees (expectedExpression, whereClause.Predicate); }
public void Initialization_TypeComesFromComparison () { var boolExpression = new VBStringComparisonExpression (Expression.Equal (Expression.Constant ("string1"), Expression.Constant ("string2")), true); var intExpression = new VBStringComparisonExpression (Expression.Constant (0), true); Assert.That (boolExpression.Type, Is.SameAs (typeof (bool))); Assert.That (intExpression.Type, Is.SameAs (typeof (int))); }
public void VBStringComparison_WithParameterInsideComparison () { var predicateParameter = Expression.Parameter (typeof (Cook), "c"); var predicate = Expression.Lambda<Func<Cook, bool>> ( new VBStringComparisonExpression (Expression.Equal (predicateParameter, Expression.Constant (null)), true), predicateParameter); var expression = (from s in QuerySource select s).Where (predicate).Expression; var queryModel = QueryParser.GetParsedQuery (expression); var expectedExpression = new VBStringComparisonExpression ( Expression.Equal (new QuerySourceReferenceExpression (queryModel.MainFromClause), Expression.Constant (null)), true); ExpressionTreeComparer.CheckAreEqualTrees (expectedExpression, ((WhereClause) queryModel.BodyClauses[0]).Predicate); }
private HqlTreeNode VisitVBStringComparisonExpression(VBStringComparisonExpression expression) { // We ignore the case sensitivity flag in the same way that == does. return VisitExpression(expression.Comparison); }
public void VisitExtensionExpression_DescendsIntoChildren () { var tree = new VBStringComparisonExpression (_replacedNode, true); var result = ReplacingExpressionVisitor.Replace (_replacedNode, _replacementNode, tree); var expected = new VBStringComparisonExpression (_replacementNode, true); ExpressionTreeComparer.CheckAreEqualTrees (expected, result); }
public void Visit_VBStringComparisonExpression_NotEvaluatable () { var expression = new VBStringComparisonExpression (Expression.Equal (Expression.Constant ("a"), Expression.Constant ("b")), true); var evaluationInfo = EvaluatableTreeFindingExpressionVisitor.Analyze (expression, new FakeEvaluatableExpressionFilter()); Assert.That (evaluationInfo.IsEvaluatableExpression (expression), Is.False); }
public void Evaluate_VBStringComparisonExpression_IsNotPartiallyEvaluated () { var expression = new VBStringComparisonExpression (Expression.Equal (Expression.Constant ("a"), Expression.Constant ("b")), true); var result = PartialEvaluatingExpressionVisitor.EvaluateIndependentSubtrees (expression, new TestEvaluatableExpressionFilter()); ExpressionTreeComparer.CheckAreEqualTrees (new VBStringComparisonExpression (Expression.Constant (false), true), result); }
public void SetUp () { _comparisonExpression = Expression.Equal (Expression.Constant ("string1"), Expression.Constant ("string2")); _expression = new VBStringComparisonExpression (_comparisonExpression, true); }
public void VisitExtensionExpression_ChildrenAreEvaluated () { var subQuery = ExpressionHelper.MakeExpression (() => (from s in ExpressionHelper.CreateQueryable<Cook> () select s).Any()); var extensionExpression = new VBStringComparisonExpression (subQuery, true); // evaluate the ExpressionHelper.CreateQueryable<Cook> () method var inputExpression = PartialEvaluatingExpressionVisitor.EvaluateIndependentSubtrees ( extensionExpression, new TestEvaluatableExpressionFilter()); var result = SubQueryFindingExpressionVisitor.Process (inputExpression, _methodInfoBasedNodeTypeRegistry); Assert.That (((VBStringComparisonExpression) result).Comparison, Is.TypeOf (typeof (SubQueryExpression))); }