public void CalculateForAllTests_Should_CompileProvidedDocuments() { // arrange var rewrittenItemsByProject = new Dictionary<Project, List<RewrittenDocument>>(); var workspace = new AdhocWorkspace(); var project1 = workspace.AddProject("foo1.dll", LanguageNames.CSharp); RewriteResult rewriteResult = new RewriteResult(rewrittenItemsByProject); var rewrittenTree = CSharpSyntaxTree.ParseText(""); var rewrittenDocument1 = new RewrittenDocument( rewrittenTree, null, false); rewriteResult.Items[project1] = new List<RewrittenDocument>() { rewrittenDocument1 }; var compiledItem = Substitute.For<ICompiledItem>(); compiledItem.Project.Returns(project1); _compiledAllItems.Add(compiledItem); // act _sut.CalculateForAllTests(rewriteResult); // assert _compilerMock.Received(1).Compile (Arg.Is<IEnumerable<CompilationItem>>(x => x.First().SyntaxTrees[0] == rewriteResult.ToCompilationItems().First().SyntaxTrees[0])); }
public LineCoverage[] CalculateForAllTests(RewriteResult rewritenResult) { var compiledItems = _compiler.Compile(rewritenResult.ToCompilationItems()); var allAssemblies = compiledItems.Select(x => x.DllPath).ToArray(); var finalCoverage = new List<LineCoverage>(); foreach (Project project in rewritenResult.Items.Keys) { foreach (RewrittenDocument rewrittenItem in rewritenResult.Items[project]) { if (!rewrittenItem.ContainsTest) continue; var testProjectCompiltedItem = compiledItems.Single(x => x.Project == project); ISemanticModel semanticModel = testProjectCompiltedItem.GetSemanticModel(rewrittenItem.SyntaxTree); LineCoverage[] partialCoverage = _testRunner.RunAllTestsInDocument(rewrittenItem, semanticModel, project, allAssemblies); if (partialCoverage != null) finalCoverage.AddRange(partialCoverage); } } return finalCoverage.ToArray(); }