public void TestCollectFiles() { var code1 = @" namespace project1 { class A { private void Method1() { } public void Method2() { } } public class B { } }"; var project1 = new UnknownProject { FileName = "projectc1.csproj" }; var project2 = new DotNetAssemblyProject { FileName = "projectc2.csproj" }; project2.References.Add(new MonoDevelop.Projects.ProjectReference(project1)); var solution = new Solution(); solution.RootFolder.AddItem(project1); solution.RootFolder.AddItem(project2); solution.RootFolder.AddItem(new UnknownProject { FileName = "dummy.csproj" }); project1.AddFile(new ProjectFile("dummy.cs")); TypeSystemService.LoadProject(project2); var wrapper = TypeSystemService.LoadProject(project1); TypeSystemService.ParseFile("test.cs", "text/x-csharp", code1, wrapper); var compilation = wrapper.Compilation; var typeA = compilation.MainAssembly.GetTypeDefinition("project1", "A", 0); TestCollectFiles(project1, typeA.GetMembers(m => m.Name == "Method1"), new [] { CreateTestTuple(project1, new [] { (FilePath)"test.cs" }) }); TestCollectFiles(project1, new [] { typeA }, new [] { CreateTestTuple(project1) }); TestCollectFiles(project1, typeA.GetMembers(m => m.Name == "Method2"), new [] { CreateTestTuple(project1) }); TestCollectFiles(project1, typeA.GetMembers(), new [] { CreateTestTuple(project1) }); TestCollectFiles(solution, typeA.GetMembers(m => m.Name == "Method1"), new [] { CreateTestTuple(project1, new [] { (FilePath)"test.cs" }) }); TestCollectFiles(solution, typeA.GetMembers(), new [] { CreateTestTuple(project1) }); var typeB = compilation.MainAssembly.GetTypeDefinition("project1", "B", 0); TestCollectFiles(solution, new [] { typeB }, new [] { CreateTestTuple(project1), CreateTestTuple(project2) }); TestCollectFiles(solution, new [] { typeA, typeB }, new [] { CreateTestTuple(project1), CreateTestTuple(project2) }); TypeSystemService.UnloadProject(project1); TypeSystemService.UnloadProject(project2); }