public static void VerifyResultsExistForWhere(object service, object context, string defaultSource, params string[] predicates) { IQueryable source = null; IServiceProvider serviceProvider = context as IServiceProvider; if (serviceProvider != null) { Prov.IDataServiceMetadataProvider dataProvider = (Prov.IDataServiceMetadataProvider)serviceProvider.GetService(typeof(Prov.IDataServiceMetadataProvider)); if (dataProvider != null) { Prov.ResourceSet resourceSet; if (dataProvider.TryResolveResourceSet(defaultSource, out resourceSet)) { Prov.IDataServiceQueryProvider queryProvider = (Prov.IDataServiceQueryProvider)serviceProvider.GetService(typeof(Prov.IDataServiceQueryProvider)); source = queryProvider.GetQueryRootForResourceSet(resourceSet); } } } if (source == null) { source = (IQueryable)context.GetType().GetProperty(defaultSource).GetValue(context, null); } TestUtil.RunCombinations(predicates, (predicate) => { IQueryable actualSource = source; string actualPredicate = predicate; int separatorIndex = predicate.IndexOf('|'); string sourceName = defaultSource; if (separatorIndex != -1) { sourceName = predicate.Substring(0, separatorIndex); actualSource = (IQueryable)context.GetType().GetProperty(sourceName).GetValue(context, null); actualPredicate = predicate.Substring(separatorIndex + 1); } Trace.WriteLine("Verifying results exist for predicate [" + actualPredicate + "]"); Prov.ResourceType resourceType = GetResourceTypeForContainer(service, sourceName); object resourceSet = GetResourceSetWrapper(service, sourceName); Assert.IsNotNull(resourceType, "Should be able to find the container and its corresponding type"); IQueryable result = InvokeWhere(service, GetRequestDescription(resourceType, resourceSet, defaultSource), actualSource, actualPredicate); bool found = false; foreach (object o in result) { found = true; break; } Assert.IsTrue(found, "Results not found for predicate [" + actualPredicate + "]"); }); }
private static Prov.ResourceSet GetResourceSet(object service, string name) { Prov.IDataServiceMetadataProvider provider = GetProvider(service); Prov.ResourceSet resourceSet; if (provider.TryResolveResourceSet(name, out resourceSet)) { return(resourceSet); } return(null); }