Beispiel #1
0
        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);
        }