/// <summary> /// Initializes a new instance of the ClrBasedQueryProvider type /// </summary> /// <param name="clrTypesAssembly">The assembly which contains the clr types for resource types</param> /// <param name="modelSchema">The schema for the model under test</param> /// <param name="evaluator">The evaluator to evaluate queries created after resolution</param> /// <param name="repository">The query repository to find root queries in</param> public ClrBasedQueryProvider(Assembly clrTypesAssembly, EntityModelSchema modelSchema, IQueryExpressionEvaluator evaluator, QueryRepository repository) { this.clrTypesAssembly = clrTypesAssembly; this.modelSchema = modelSchema; this.evaluator = evaluator; this.queryRepository = repository; }
public static QueryValue ChooseRandomEvaluationResult(this IQueryExpressionEvaluator evaluator, QueryExpression queryExpression, IRandomNumberGenerator random, out QueryCollectionValue collection) { ExceptionUtilities.CheckArgumentNotNull(evaluator, "evaluator"); ExceptionUtilities.CheckArgumentNotNull(queryExpression, "queryExpression"); ExceptionUtilities.CheckArgumentNotNull(random, "random"); collection = evaluator.Evaluate(queryExpression) as QueryCollectionValue; ExceptionUtilities.CheckObjectNotNull(collection, "Query unexpectedly evaluated to null or was not a collection: {0}", queryExpression); ExceptionUtilities.Assert(collection.EvaluationError == null, "Query resulted in evaluation error: {0}", collection.EvaluationError); if (collection.IsNull || collection.Elements.Count == 0) { return(null); } return(random.ChooseFrom(collection.Elements)); }
/// <summary> /// Evaluates the given query, asserts that it results in a collection value, and chooses a random element from the collection. If the collection is empty, null is returned. /// </summary> /// <param name="evaluator">The query evaluator to use</param> /// <param name="queryExpression">The query to evaluate, must result in a collection</param> /// <param name="random">The random number generator to use for selecting a result from the collection</param> /// <returns>A random element of the evaluated collection, or null if no elements are found</returns> public static QueryValue ChooseRandomEvaluationResult(this IQueryExpressionEvaluator evaluator, QueryExpression queryExpression, IRandomNumberGenerator random) { QueryCollectionValue collection; return(evaluator.ChooseRandomEvaluationResult(queryExpression, random, out collection)); }