/// <summary> /// Identifies conditions to include from a <see cref="WhereLinqExpression"/>. /// </summary> /// <param name="node">The binary expression to analyze.</param> /// <returns>The original binary expression.</returns> protected override Expression VisitBinary(BinaryExpression node) { switch (node.NodeType) { case ExpressionType.AndAlso: case ExpressionType.OrElse: Visit(node.Left); Visit(node.Right); return(node); default: var types = ExpressionSearcher.GetTypes(node); if (types.Contains(ExpressionType.AndAlso) || types.Contains(ExpressionType.OrElse)) { Visit(node.Left); Visit(node.Right); return(node); } else { var visited = UnaryFixer.Fix(node); Conditions.Add(visited); return(node); } } }
protected void Execute(Expression <Func <Sensor, bool> > predicate, string url, ExpressionType nodeType) { var types = ExpressionSearcher.GetTypes(predicate); Assert.IsTrue(types.Any(t => t == nodeType), $"Did not have an expression of type {nodeType}. Types found: " + string.Join(", ", types)); var urls = new[] { TestHelpers.RequestSensor(url) }; var client = GetClient(urls.ToArray()); var result = client.QuerySensors().Where(predicate).ToList(); }
protected void Execute(Expression <Func <Sensor, bool> > predicate, string url, ExpressionType nodeType) { var types = ExpressionSearcher.GetTypes(predicate); Assert.IsTrue(types.Any(t => t == nodeType), $"Did not have an expression of type {nodeType}. Types found: " + string.Join(", ", types)); var urls = new[] { UnitRequest.Sensors($"count=500" + (string.IsNullOrEmpty(url) ? url : $"&{url}"), UrlFlag.Columns) }; var client = GetClient(urls.ToArray()); var result = client.Item1.QuerySensors().Where(predicate).ToList(); client.Item2.AssertFinished(); }
private bool HasOnlyLegalExpressionTypes(Expression filter) { var types = ExpressionSearcher.GetTypes(filter); var unsupportedTypes = types.Where(t => t == ExpressionType.ArrayLength || t == ExpressionType.Throw || t == ExpressionType.DebugInfo).ToList(); if (unsupportedTypes.Count > 0) { Logger.Log("Expression contains an illegal expression node(s) " + string.Join(", ", unsupportedTypes) + ". Ignoring filter.", Indentation.Six); if (strict) { throw Error.UnsupportedExpressionType(unsupportedTypes, filter); } return(false); } return(true); }