Browse Source

Implement VS Reference.SourceProject.

pull/28/head
Matt Ward 14 years ago
parent
commit
8db1129b77
  1. 10
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Reference.cs
  2. 40
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ReferenceTests.cs
  3. 7
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProject.cs

10
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Reference.cs

@ -26,5 +26,15 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -26,5 +26,15 @@ namespace ICSharpCode.PackageManagement.EnvDTE
project.RemoveReference(referenceProjectItem);
project.Save();
}
public Project SourceProject {
get {
var projectReference = referenceProjectItem as ProjectReferenceProjectItem;
if (projectReference != null) {
return new Project(projectReference.ReferencedProject as MSBuildBasedProject);
}
return null;
}
}
}
}

40
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ReferenceTests.cs

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using System;
using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.EnvDTE;
using ICSharpCode.SharpDevelop.Project;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
@ -21,11 +22,27 @@ namespace PackageManagement.Tests.EnvDTE @@ -21,11 +22,27 @@ namespace PackageManagement.Tests.EnvDTE
{
project = new TestableDTEProject();
msbuildProject = project.TestableProject;
var referenceProjectItem = msbuildProject.AddReference(name);
ReferenceProjectItem referenceProjectItem = msbuildProject.AddReference(name);
fakeProjectService = project.FakeProjectService;
CreateReference(project, referenceProjectItem);
}
void CreateReference(Project project, ReferenceProjectItem referenceProjectItem)
{
reference = new Reference(project, referenceProjectItem);
}
TestableProject CreateProjectReference()
{
project = new TestableDTEProject();
msbuildProject = project.TestableProject;
TestableProject referencedProject = ProjectHelper.CreateTestProject();
ProjectReferenceProjectItem referenceProjectItem = msbuildProject.AddProjectReference(referencedProject);
fakeProjectService = project.FakeProjectService;
CreateReference(project, referenceProjectItem);
return referencedProject;
}
[Test]
public void Name_ReferenceNameIsSystemXml_ReturnsSystemXml()
{
@ -58,5 +75,26 @@ namespace PackageManagement.Tests.EnvDTE @@ -58,5 +75,26 @@ namespace PackageManagement.Tests.EnvDTE
Assert.IsTrue(saved);
}
[Test]
public void SourceProject_SystemXmlReference_ReturnsNull()
{
CreateReference("System.Xml");
Project project = reference.SourceProject;
Assert.IsNull(project);
}
[Test]
public void SourceProject_ReferenceIsProjectReference_ReturnsReferencedProject()
{
TestableProject referencedProject = CreateProjectReference();
referencedProject.FileName = @"d:\projects\referencedproject.csproj";
Project project = reference.SourceProject;
Assert.AreEqual(@"d:\projects\referencedproject.csproj", project.FileName);
}
}
}

7
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProject.cs

@ -49,6 +49,13 @@ namespace PackageManagement.Tests.Helpers @@ -49,6 +49,13 @@ namespace PackageManagement.Tests.Helpers
return referenceProjectItem;
}
public ProjectReferenceProjectItem AddProjectReference(IProject referencedProject)
{
var referenceProjectItem = new ProjectReferenceProjectItem(this, referencedProject);
ProjectService.AddProjectItem(this, referenceProjectItem);
return referenceProjectItem;
}
public FileProjectItem AddFile(string include)
{
var fileProjectItem = new FileProjectItem(this, ItemType.Compile, include);

Loading…
Cancel
Save