private static HashSet <Tuple <string, ValueSpecification> > GetAllSpecs(IViewCycle cycle) { var specSet = new HashSet <Tuple <string, ValueSpecification> >(); var compiledViewDefinition = cycle.GetCompiledViewDefinition(); foreach (var kvp in compiledViewDefinition.ViewDefinition.CalculationConfigurationsByName) { var viewCalculationConfiguration = kvp.Key; var dependencyGraphExplorer = compiledViewDefinition.GetDependencyGraphExplorer(viewCalculationConfiguration); Assert.NotNull(dependencyGraphExplorer); var wholeGraph = dependencyGraphExplorer.GetWholeGraph(); IEnumerable <ValueSpecification> allSpecs = wholeGraph.DependencyNodes.SelectMany(n => n.OutputValues); var distinctKindsOfSpec = allSpecs .ToLookup(s => s.ValueName).Select(g => g.First()); var specs = new HashSet <ValueSpecification>(distinctKindsOfSpec); if (!specs.Any()) { continue; } var computationCacheResponse = cycle.QueryComputationCaches(new ComputationCacheQuery(viewCalculationConfiguration, specs)); Assert.InRange(computationCacheResponse.Results.Count, 0, specs.Count()); foreach (var result in computationCacheResponse.Results) { Assert.Contains(result.First, specs); Assert.NotNull(result.Second); ValueAssertions.AssertSensibleValue(result.Second); } var newSpecs = computationCacheResponse.Results.Select(p => Tuple.Create(viewCalculationConfiguration, p.First)); foreach (var newSpec in newSpecs) { Assert.True(specSet.Add(newSpec)); } } return(specSet); }
private static HashSet<Tuple<string, ValueSpecification>> GetAllSpecs(IViewCycle cycle) { var specSet = new HashSet<Tuple<string, ValueSpecification>>(); var compiledViewDefinition = cycle.GetCompiledViewDefinition(); foreach (var kvp in compiledViewDefinition.ViewDefinition.CalculationConfigurationsByName) { var viewCalculationConfiguration = kvp.Key; var dependencyGraphExplorer = compiledViewDefinition.GetDependencyGraphExplorer(viewCalculationConfiguration); Assert.NotNull(dependencyGraphExplorer); var wholeGraph = dependencyGraphExplorer.GetWholeGraph(); IEnumerable<ValueSpecification> allSpecs = wholeGraph.DependencyNodes.SelectMany(n => n.OutputValues); var distinctKindsOfSpec = allSpecs .ToLookup(s => s.ValueName).Select(g => g.First()); var specs = new HashSet<ValueSpecification>(distinctKindsOfSpec); if (!specs.Any()) { continue; } var computationCacheResponse = cycle.QueryComputationCaches(new ComputationCacheQuery(viewCalculationConfiguration, specs)); Assert.InRange(computationCacheResponse.Results.Count, 0, specs.Count()); foreach (var result in computationCacheResponse.Results) { Assert.Contains(result.First, specs); Assert.NotNull(result.Second); ValueAssertions.AssertSensibleValue(result.Second); } var newSpecs = computationCacheResponse.Results.Select(p => Tuple.Create(viewCalculationConfiguration, p.First)); foreach (var newSpec in newSpecs) { Assert.True(specSet.Add(newSpec)); } } return specSet; }