Browse Source

Implement Visual Studio API to support installing T4 scaffolding package.

pull/28/head
Matt Ward 14 years ago
parent
commit
5c26245277
  1. 2
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 13
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Constants.cs
  3. 21
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DTE.cs
  4. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DirectoryProjectItem.cs
  5. 21
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs
  6. 14
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs
  7. 2
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs
  8. 6
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemsInsideProject.cs
  9. 29
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectKind.cs
  10. 22
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectType.cs
  11. 20
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Projects.cs
  12. 13
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Solution.cs
  13. 9
      src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/Package.cs
  14. 1
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  15. 45
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs
  16. 11
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs
  17. 44
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs
  18. 105
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/SolutionTests.cs
  19. 17
      src/AddIns/Misc/PackageManagement/Test/Src/VisualStudio/PackageTests.cs

2
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -95,7 +95,9 @@
<Compile Include="Src\EnvDTE\CodeVariable.cs" /> <Compile Include="Src\EnvDTE\CodeVariable.cs" />
<Compile Include="Src\EnvDTE\ConfigurationManager.cs" /> <Compile Include="Src\EnvDTE\ConfigurationManager.cs" />
<Compile Include="Src\EnvDTE\Configuration.cs" /> <Compile Include="Src\EnvDTE\Configuration.cs" />
<Compile Include="Src\EnvDTE\Constants.cs" />
<Compile Include="Src\EnvDTE\EditPoint.cs" /> <Compile Include="Src\EnvDTE\EditPoint.cs" />
<Compile Include="Src\EnvDTE\ProjectKind.cs" />
<Compile Include="Src\EnvDTE\Projects.cs" /> <Compile Include="Src\EnvDTE\Projects.cs" />
<Compile Include="Src\EnvDTE\SourceControl.cs" /> <Compile Include="Src\EnvDTE\SourceControl.cs" />
<Compile Include="Src\EnvDTE\TextPoint.cs" /> <Compile Include="Src\EnvDTE\TextPoint.cs" />

13
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Constants.cs

@ -0,0 +1,13 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public static class Constants
{
public static readonly string VsProjectItemKindPhysicalFile = "{6BB5F8EE-4483-11D3-8BCF-00C04F8EC28C}";
public static readonly string VsProjectItemKindPhysicalFolder = "{6BB5F8EF-4483-11D3-8BCF-00C04F8EC28C}";
}
}

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

@ -36,7 +36,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public Solution Solution { public Solution Solution {
get { get {
if (IsSolutionOpen) { if (IsSolutionOpen) {
return new Solution(projectService.OpenSolution); return new Solution(projectService);
} }
return null; return null;
} }
@ -55,23 +55,16 @@ namespace ICSharpCode.PackageManagement.EnvDTE
} }
public object ActiveSolutionProjects { public object ActiveSolutionProjects {
get { return GetProjectsInSolution().ToArray(); } get {
} if (IsSolutionOpen) {
return Solution.Projects.ToArray();
IEnumerable<object> GetProjectsInSolution() }
{ return new Project[0];
foreach (SD.MSBuildBasedProject msbuildProject in GetOpenMSBuildProjects()) {
yield return new Project(msbuildProject);
} }
} }
IEnumerable<SD.IProject> GetOpenMSBuildProjects()
{
return projectService.GetOpenProjects();
}
public SourceControl SourceControl { public SourceControl SourceControl {
get { throw new NotImplementedException(); } get { return null; }
} }
} }
} }

2
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DirectoryProjectItem.cs

@ -44,6 +44,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE
return true; return true;
} }
return false; return false;
} }
} }
} }

21
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Project.cs

@ -49,10 +49,6 @@ namespace ICSharpCode.PackageManagement.EnvDTE
Properties = new Properties(propertyFactory); Properties = new Properties(propertyFactory);
} }
public virtual string Kind {
get { throw new NotImplementedException(); }
}
public virtual string Name { public virtual string Name {
get { return MSBuildProject.Name; } get { return MSBuildProject.Name; }
} }
@ -88,8 +84,16 @@ namespace ICSharpCode.PackageManagement.EnvDTE
string GetProjectType() string GetProjectType()
{ {
var projectType = new ProjectType(this); return new ProjectType(this).Type;
return projectType.Type; }
public virtual string Kind {
get { return GetProjectKind(); }
}
string GetProjectKind()
{
return new ProjectKind(this).Kind;
} }
internal MSBuildBasedProject MSBuildProject { get; private set; } internal MSBuildBasedProject MSBuildProject { get; private set; }
@ -174,5 +178,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public virtual ConfigurationManager ConfigurationManager { public virtual ConfigurationManager ConfigurationManager {
get { throw new NotImplementedException(); } get { throw new NotImplementedException(); }
} }
internal virtual string GetLowercaseFileExtension()
{
return Path.GetExtension(FileName).ToLowerInvariant();
}
} }
} }

14
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs

@ -24,6 +24,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
this.ContainingProject = project; this.ContainingProject = project;
this.ProjectItems = new DirectoryProjectItems(this); this.ProjectItems = new DirectoryProjectItems(this);
CreateProperties(); CreateProperties();
Kind = Constants.VsProjectItemKindPhysicalFile;
} }
public ProjectItem() public ProjectItem()
@ -40,12 +41,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE
get { return Path.GetFileName(projectItem.Include); } get { return Path.GetFileName(projectItem.Include); }
} }
public virtual string Kind { public virtual string Kind { get; set; }
get { throw new NotImplementedException(); }
}
public Project SubProject { public Project SubProject {
get { throw new NotImplementedException(); } get { return null; }
} }
public virtual Properties Properties { get; private set; } public virtual Properties Properties { get; private set; }
@ -105,5 +104,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{ {
return new ProjectItemRelationship(this, msbuildProjectItem); return new ProjectItemRelationship(this, msbuildProjectItem);
} }
/// <summary>
/// TODO: delete project item from project
/// </summary>
public void Delete()
{
}
} }
} }

2
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs

@ -95,7 +95,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
} }
public virtual int Count { public virtual int Count {
get { throw new NotImplementedException(); } get { return new ProjectItemsInsideProject(project).Count; }
} }
} }
} }

6
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemsInsideProject.cs

@ -28,6 +28,10 @@ namespace ICSharpCode.PackageManagement.EnvDTE
return projectItems.GetEnumerator(); return projectItems.GetEnumerator();
} }
internal virtual int Count {
get { return GetProjectItems().Count(); }
}
IEnumerable<ProjectItem> GetProjectItems() IEnumerable<ProjectItem> GetProjectItems()
{ {
foreach (SD.ProjectItem item in project.MSBuildProject.Items) { foreach (SD.ProjectItem item in project.MSBuildProject.Items) {
@ -124,7 +128,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{ {
var directoryItem = new FileProjectItem(project.MSBuildProject, ItemType.Folder); var directoryItem = new FileProjectItem(project.MSBuildProject, ItemType.Folder);
directoryItem.Include = directoryName; directoryItem.Include = directoryName;
return new ProjectItem(project, directoryItem); return new ProjectItem(project, directoryItem) { Kind = Constants.VsProjectItemKindPhysicalFolder };
} }
string GetFirstSubDirectoryName(string include) string GetFirstSubDirectoryName(string include)

29
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectKind.cs

@ -0,0 +1,29 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using SD = ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class ProjectKind
{
public ProjectKind(Project project)
{
this.Kind = GetProjectKind(project);
}
string GetProjectKind(Project project)
{
string type = new ProjectType(project).Type;
if (type == ProjectType.CSharp) {
return SD.ProjectTypeGuids.CSharp;
} else if (type == ProjectType.VBNet) {
return SD.ProjectTypeGuids.VBNet;
}
return String.Empty;
}
public string Kind { get; private set; }
}
}

22
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectType.cs

@ -2,34 +2,28 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using System.IO;
namespace ICSharpCode.PackageManagement.EnvDTE namespace ICSharpCode.PackageManagement.EnvDTE
{ {
public class ProjectType public class ProjectType
{ {
Project project; public static readonly string VBNet = "VB.NET";
public static readonly string CSharp = "C#";
public ProjectType(Project project) public ProjectType(Project project)
{ {
this.project = project; this.Type = GetProjectType(project);
Type = String.Empty;
GetProjectType();
} }
void GetProjectType() string GetProjectType(Project project)
{ {
string extension = GetProjectFileExtension(); string extension = project.GetLowercaseFileExtension();
if (extension == ".csproj") { if (extension == ".csproj") {
Type = "C#"; return CSharp;
} else if (extension == ".vbproj") { } else if (extension == ".vbproj") {
Type = "VB.NET"; return VBNet;
} }
} return String.Empty;
string GetProjectFileExtension()
{
return Path.GetExtension(project.FileName).ToLowerInvariant();
} }
public string Type { get; private set; } public string Type { get; private set; }

20
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Projects.cs

@ -4,23 +4,39 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using SD = ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE namespace ICSharpCode.PackageManagement.EnvDTE
{ {
public class Projects : MarshalByRefObject, IEnumerable<Project> public class Projects : MarshalByRefObject, IEnumerable<Project>
{ {
public Projects() IPackageManagementProjectService projectService;
public Projects(IPackageManagementProjectService projectService)
{ {
this.projectService = projectService;
} }
public IEnumerator<Project> GetEnumerator() public IEnumerator<Project> GetEnumerator()
{ {
throw new NotImplementedException(); return GetProjectsInSolution().GetEnumerator();
} }
IEnumerator IEnumerable.GetEnumerator() IEnumerator IEnumerable.GetEnumerator()
{ {
return GetEnumerator(); return GetEnumerator();
} }
IEnumerable<Project> GetProjectsInSolution()
{
foreach (SD.MSBuildBasedProject msbuildProject in GetOpenMSBuildProjects()) {
yield return new Project(msbuildProject);
}
}
IEnumerable<SD.IProject> GetOpenMSBuildProjects()
{
return projectService.GetOpenProjects();
}
} }
} }

13
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/Solution.cs

@ -8,11 +8,14 @@ namespace ICSharpCode.PackageManagement.EnvDTE
{ {
public class Solution : MarshalByRefObject public class Solution : MarshalByRefObject
{ {
IPackageManagementProjectService projectService;
SD.Solution solution; SD.Solution solution;
public Solution(SD.Solution solution) public Solution(IPackageManagementProjectService projectService)
{ {
this.solution = solution; this.projectService = projectService;
this.solution = projectService.OpenSolution;
this.Projects = new Projects(projectService);
} }
public string FullName { public string FullName {
@ -24,11 +27,9 @@ namespace ICSharpCode.PackageManagement.EnvDTE
} }
public bool IsOpen { public bool IsOpen {
get { throw new NotImplementedException(); } get { return projectService.OpenSolution == solution; }
} }
public Projects Projects { public Projects Projects { get; private set; }
get { throw new NotImplementedException(); }
}
} }
} }

9
src/AddIns/Misc/PackageManagement/Project/Src/VisualStudio/Package.cs

@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using ICSharpCode.PackageManagement.EnvDTE;
using Microsoft.VisualStudio.ExtensionManager; using Microsoft.VisualStudio.ExtensionManager;
namespace Microsoft.VisualStudio.Shell namespace Microsoft.VisualStudio.Shell
@ -10,11 +11,15 @@ namespace Microsoft.VisualStudio.Shell
{ {
public static object GetGlobalService(Type serviceType) public static object GetGlobalService(Type serviceType)
{ {
//typeof(DTE)
//typeof(IVsSolution) //typeof(IVsSolution)
//typeof(SComponentModel) --> not used - console initializer. //typeof(SComponentModel) --> not used - console initializer.
//typeof(SVsExtensionManager) //typeof(SVsExtensionManager)
return new SVsExtensionManager(); if (serviceType == typeof(DTE)) {
return new DTE();
} else if (serviceType == typeof(SVsExtensionManager)) {
return new SVsExtensionManager();
}
return null;
} }
} }
} }

1
src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj

@ -69,6 +69,7 @@
<Compile Include="..\..\..\..\Main\GlobalAssemblyInfo.cs"> <Compile Include="..\..\..\..\Main\GlobalAssemblyInfo.cs">
<Link>Properties\GlobalAssemblyInfo.cs</Link> <Link>Properties\GlobalAssemblyInfo.cs</Link>
</Compile> </Compile>
<Compile Include="Src\EnvDTE\SolutionTests.cs" />
<Compile Include="Src\Helpers\FakeSelectProjectsService.cs" /> <Compile Include="Src\Helpers\FakeSelectProjectsService.cs" />
<Compile Include="Src\Helpers\FakeSolutionPackageRepositoryFactory.cs" /> <Compile Include="Src\Helpers\FakeSolutionPackageRepositoryFactory.cs" />
<Compile Include="Src\Helpers\FakeUpdatePackageActions.cs" /> <Compile Include="Src\Helpers\FakeUpdatePackageActions.cs" />

45
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs

@ -33,8 +33,8 @@ namespace PackageManagement.Tests.EnvDTE
CreateProjectItems(); CreateProjectItems();
msbuildProject.AddFile(@"src\program.cs"); msbuildProject.AddFile(@"src\program.cs");
var directoryItem = projectItems.Item("src"); ProjectItem directoryItem = projectItems.Item("src");
var directoryProjectItems = directoryItem.ProjectItems; ProjectItems directoryProjectItems = directoryItem.ProjectItems;
string[] expectedFiles = new string[] { string[] expectedFiles = new string[] {
"program.cs" "program.cs"
@ -49,8 +49,8 @@ namespace PackageManagement.Tests.EnvDTE
CreateProjectItems(); CreateProjectItems();
msbuildProject.AddDirectory(@"src\test"); msbuildProject.AddDirectory(@"src\test");
var directoryItem = projectItems.Item("src"); ProjectItem directoryItem = projectItems.Item("src");
var directoryProjectItems = directoryItem.ProjectItems; ProjectItems directoryProjectItems = directoryItem.ProjectItems;
var items = directoryProjectItems as IEnumerable; var items = directoryProjectItems as IEnumerable;
string[] expectedItems = new string[] { string[] expectedItems = new string[] {
@ -67,8 +67,8 @@ namespace PackageManagement.Tests.EnvDTE
msbuildProject.AddFile(@"src\test.cs"); msbuildProject.AddFile(@"src\test.cs");
msbuildProject.AddFile("program.cs"); msbuildProject.AddFile("program.cs");
var directoryItem = projectItems.Item("src"); ProjectItem directoryItem = projectItems.Item("src");
var directoryProjectItems = directoryItem.ProjectItems; ProjectItems directoryProjectItems = directoryItem.ProjectItems;
var items = directoryProjectItems as IEnumerable; var items = directoryProjectItems as IEnumerable;
string[] expectedItems = new string[] { string[] expectedItems = new string[] {
@ -84,9 +84,9 @@ namespace PackageManagement.Tests.EnvDTE
CreateProjectItems(); CreateProjectItems();
msbuildProject.AddFile(@"src\test\test.cs"); msbuildProject.AddFile(@"src\test\test.cs");
var directoryItem = projectItems.Item("src"); ProjectItem directoryItem = projectItems.Item("src");
var testDirectoryItem = directoryItem.ProjectItems.Item("test"); ProjectItem testDirectoryItem = directoryItem.ProjectItems.Item("test");
var testDirectoryProjectItems = testDirectoryItem.ProjectItems; ProjectItems testDirectoryProjectItems = testDirectoryItem.ProjectItems;
var items = testDirectoryProjectItems as IEnumerable; var items = testDirectoryProjectItems as IEnumerable;
string[] expectedItems = new string[] { string[] expectedItems = new string[] {
@ -95,5 +95,32 @@ namespace PackageManagement.Tests.EnvDTE
ProjectItemCollectionAssert.AreEqual(expectedItems, items); ProjectItemCollectionAssert.AreEqual(expectedItems, items);
} }
[Test]
public void Kind_ProjectDirectory_ReturnsGuidForDirectory()
{
CreateProjectItems();
msbuildProject.AddFile(@"src\program.cs");
ProjectItem directoryItem = projectItems.Item("src");
string kind = directoryItem.Kind;
Assert.AreEqual(Constants.VsProjectItemKindPhysicalFolder, kind);
}
[Test]
public void Kind_ProjectFile_ReturnsGuidForFile()
{
CreateProjectItems();
msbuildProject.AddFile(@"src\program.cs");
ProjectItem directoryItem = projectItems.Item("src");
ProjectItem fileItem = directoryItem.ProjectItems.Item("program.cs");
string kind = fileItem.Kind;
Assert.AreEqual(Constants.VsProjectItemKindPhysicalFile, kind);
}
} }
} }

11
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs

@ -320,5 +320,16 @@ namespace PackageManagement.Tests.EnvDTE
bool contains = ex.Message.Contains("'test.cs'"); bool contains = ex.Message.Contains("'test.cs'");
Assert.IsTrue(contains); Assert.IsTrue(contains);
} }
[Test]
public void Count_ProjectHasOneFile_ReturnsOne()
{
CreateProjectItems();
msbuildProject.AddFile(@"Test.cs");
int count = projectItems.Count;
Assert.AreEqual(1, count);
}
} }
} }

44
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectTests.cs

@ -88,5 +88,49 @@ namespace PackageManagement.Tests.EnvDTE
Assert.AreEqual("VB.NET", projectType); Assert.AreEqual("VB.NET", projectType);
} }
[Test]
public void Type_ProjectHasUnknownProjectExtension_ReturnsEmptyString()
{
CreateProject();
msbuildProject.FileName = @"c:\projects\myproject\test.unknown";
string projectType = project.Type;
Assert.AreEqual(String.Empty, projectType);
}
[Test]
public void Kind_ProjectIsCSharpProject_ReturnsCSharpProjectTypeGuid()
{
CreateProject();
msbuildProject.FileName = @"d:\projects\myproject\test.csproj";
string kind = project.Kind;
Assert.AreEqual(ProjectTypeGuids.CSharp, kind);
}
[Test]
public void Kind_ProjectIsVBNetProject_ReturnsCSharpProjectTypeGuid()
{
CreateProject();
msbuildProject.FileName = @"d:\projects\myproject\test.vbproj";
string kind = project.Kind;
Assert.AreEqual(ProjectTypeGuids.VBNet, kind);
}
[Test]
public void Kind_ProjectHasUnknownFileExtension_ReturnsEmptyString()
{
CreateProject();
msbuildProject.FileName = @"d:\projects\myproject\test.unknown";
string kind = project.Kind;
Assert.AreEqual(String.Empty, kind);
}
} }
} }

105
src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/SolutionTests.cs

@ -0,0 +1,105 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Linq;
using ICSharpCode.PackageManagement.Design;
using ICSharpCode.PackageManagement.EnvDTE;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
using SD = ICSharpCode.SharpDevelop.Project;
namespace PackageManagement.Tests.EnvDTE
{
[TestFixture]
public class SolutionTests
{
Solution solution;
FakePackageManagementProjectService fakeProjectService;
SD.Solution sharpDevelopSolution;
void CreateSolution()
{
fakeProjectService = new FakePackageManagementProjectService();
sharpDevelopSolution = CreateSharpDevelopSolution();
fakeProjectService.OpenSolution = sharpDevelopSolution;
solution = new Solution(fakeProjectService);
}
SD.Solution CreateSharpDevelopSolution()
{
return new SD.Solution(new SD.MockProjectChangeWatcher());
}
SD.Solution OpenDifferentSolution()
{
SD.Solution solution = CreateSharpDevelopSolution();
fakeProjectService.OpenSolution = solution;
return solution;
}
void NoOpenSolution()
{
fakeProjectService.OpenSolution = null;
}
void AddProjectToSolution(string projectName)
{
TestableProject project = ProjectHelper.CreateTestProject(projectName);
fakeProjectService.AddFakeProject(project);
}
[Test]
public void IsOpen_NoOpenSolution_ReturnsFalse()
{
CreateSolution();
NoOpenSolution();
bool open = solution.IsOpen;
Assert.IsFalse(open);
}
[Test]
public void IsOpen_SolutionOpenInSharpDevelop_ReturnsTrue()
{
CreateSolution();
bool open = solution.IsOpen;
Assert.IsTrue(open);
}
[Test]
public void IsOpen_DifferentSolutionOpenInSharpDevelop_ReturnsFalse()
{
CreateSolution();
OpenDifferentSolution();
bool open = solution.IsOpen;
Assert.IsFalse(open);
}
[Test]
public void Projects_SolutionHasNoProjects_NoProjectsInCollection()
{
CreateSolution();
int count = solution.Projects.ToList().Count;
Assert.AreEqual(0, count);
}
[Test]
public void Projects_SolutionHasOnProject_OneProjectInCollection()
{
CreateSolution();
AddProjectToSolution("MyProject");
Project project = solution.Projects.First();
Assert.AreEqual("MyProject", project.Name);
}
}
}

17
src/AddIns/Misc/PackageManagement/Test/Src/VisualStudio/PackageTests.cs

@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using ICSharpCode.PackageManagement.EnvDTE;
using Microsoft.VisualStudio.ExtensionManager; using Microsoft.VisualStudio.ExtensionManager;
using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell;
using NUnit.Framework; using NUnit.Framework;
@ -18,5 +19,21 @@ namespace PackageManagement.Tests.VisualStudio
Assert.IsInstanceOf(typeof(SVsExtensionManager), extensionManager); Assert.IsInstanceOf(typeof(SVsExtensionManager), extensionManager);
} }
[Test]
public void GetGlobalService_GetDTE_ReturnsDTE()
{
object dte = Package.GetGlobalService(typeof(DTE)) as DTE;
Assert.IsInstanceOf(typeof(DTE), dte);
}
[Test]
public void GetGlobalService_UnknownType_ReturnsNull()
{
object instance = Package.GetGlobalService(typeof(PackageTests));
Assert.IsNull(instance);
}
} }
} }

Loading…
Cancel
Save