Browse Source

Add support for DTE.ActiveSolutionProjects property.

pull/23/head
Matt Ward 14 years ago
parent
commit
9b4f533bf3
  1. 26
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DTE.cs
  2. 50
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/DTETests.cs

26
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DTE.cs

@ -2,6 +2,10 @@ @@ -2,6 +2,10 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using SD = ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE
{
@ -27,13 +31,17 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -27,13 +31,17 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public Solution Solution {
get {
if (projectService.OpenSolution != null) {
if (IsSolutionOpen) {
return new Solution(projectService.OpenSolution);
}
return null;
}
}
bool IsSolutionOpen {
get { return projectService.OpenSolution != null; }
}
public ItemOperations ItemOperations { get; private set; }
public Properties Properties(string category, string page)
@ -41,5 +49,21 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -41,5 +49,21 @@ namespace ICSharpCode.PackageManagement.EnvDTE
var properties = new DTEProperties();
return properties.GetProperties(category, page);
}
public object ActiveSolutionProjects {
get { return GetProjectsInSolution().ToArray(); }
}
IEnumerable<object> GetProjectsInSolution()
{
foreach (SD.MSBuildBasedProject msbuildProject in GetOpenMSBuildProjects()) {
yield return new Project(msbuildProject);
}
}
IEnumerable<SD.IProject> GetOpenMSBuildProjects()
{
return projectService.GetOpenProjects();
}
}
}

50
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/DTETests.cs

@ -25,6 +25,18 @@ namespace PackageManagement.Tests.EnvDTE @@ -25,6 +25,18 @@ namespace PackageManagement.Tests.EnvDTE
dte = new DTE(fakeProjectService, fakeFileService);
}
void NoOpenSolution()
{
fakeProjectService.OpenSolution = null;
}
TestableProject AddProjectToSolution(string projectName)
{
TestableProject project = ProjectHelper.CreateTestProject(projectName);
fakeProjectService.AddFakeProject(project);
return project;
}
[Test]
public void SolutionFullName_SolutionIsOpen_ReturnsSolutionFileName()
{
@ -53,7 +65,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -53,7 +65,7 @@ namespace PackageManagement.Tests.EnvDTE
public void Solution_NoOpenSolution_ReturnsNull()
{
CreateDTE();
fakeProjectService.OpenSolution = null;
NoOpenSolution();
Solution solution = dte.Solution;
@ -89,5 +101,41 @@ namespace PackageManagement.Tests.EnvDTE @@ -89,5 +101,41 @@ namespace PackageManagement.Tests.EnvDTE
Assert.IsNotNull(properties);
}
[Test]
public void ActiveSolutionProjects_NoSolutionOpen_ReturnsEmptyArray()
{
CreateDTE();
NoOpenSolution();
Array projects = dte.ActiveSolutionProjects as Array;
Assert.AreEqual(0, projects.Length);
}
[Test]
public void ActiveSolutionProjects_SolutionHasOneProject_ReturnsArrayWithOneItem()
{
CreateDTE();
AddProjectToSolution("ProjectA");
Array projects = dte.ActiveSolutionProjects as Array;
Assert.AreEqual(1, projects.Length);
}
[Test]
public void ActiveSolutionProjects_SolutionHasOneProject_ReturnsArrayContainingProject()
{
CreateDTE();
TestableProject expectedProject = AddProjectToSolution("ProjectA");
Array projects = dte.ActiveSolutionProjects as Array;
Project project = projects.GetValue(0) as Project;
string name = project.Name;
Assert.AreEqual("ProjectA", name);
}
}
}

Loading…
Cancel
Save