Browse Source

Add minimal support for accessing project files inside subdirectories in PowerShell scripts.

pull/15/head
Matt Ward 15 years ago
parent
commit
92df3493a9
  1. 6
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 46
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ChildProjectItems.cs
  3. 49
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DirectoryProjectItem.cs
  4. 25
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DirectoryProjectItems.cs
  5. 31
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs
  6. 69
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemRelationship.cs
  7. 11
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs
  8. 21
      src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemsInsideProject.cs
  9. 2
      src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
  10. 100
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs
  11. 40
      src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs
  12. 32
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectItemCollectionAssert.cs

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

@ -70,14 +70,18 @@ @@ -70,14 +70,18 @@
<Compile Include="Src\AddPackageReferenceCommand.cs" />
<Compile Include="Src\AggregateExceptionErrorMessage.cs" />
<Compile Include="Src\Design\FakePackageManagementProject.cs" />
<Compile Include="Src\EnvDTE\DirectoryProjectItem.cs" />
<Compile Include="Src\EnvDTE\DirectoryProjectItems.cs" />
<Compile Include="Src\EnvDTE\DTE.cs" />
<Compile Include="Src\EnvDTE\IPropertyFactory.cs" />
<Compile Include="Src\EnvDTE\ItemOperations.cs" />
<Compile Include="Src\EnvDTE\ProjectItem.cs" />
<Compile Include="Src\EnvDTE\ProjectItemProperty.cs" />
<Compile Include="Src\EnvDTE\ProjectItemPropertyFactory.cs" />
<Compile Include="Src\EnvDTE\ProjectItemRelationship.cs" />
<Compile Include="Src\EnvDTE\ProjectItems.cs" />
<Compile Include="Src\EnvDTE\ProjectItemsInsideDirectory.cs" />
<Compile Include="Src\EnvDTE\ChildProjectItems.cs" />
<Compile Include="Src\EnvDTE\ProjectItemsInsideProject.cs" />
<Compile Include="Src\EnvDTE\ProjectObject.cs" />
<Compile Include="Src\EnvDTE\ProjectProperty.cs" />
<Compile Include="Src\EnvDTE\ProjectPropertyFactory.cs" />

46
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ChildProjectItems.cs

@ -0,0 +1,46 @@ @@ -0,0 +1,46 @@
// 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.Collections;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.SharpDevelop.Project;
using SD = ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class ChildProjectItems : IEnumerable<ProjectItem>
{
public ChildProjectItems(ProjectItem projectItem)
{
this.ProjectItem = projectItem;
this.Project = projectItem.ContainingProject;
}
ProjectItem ProjectItem { get; set; }
Project Project { get; set; }
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public IEnumerator<ProjectItem> GetEnumerator()
{
foreach (SD.ProjectItem msbuildProjectItem in Project.MSBuildProject.Items) {
ProjectItem item = ConvertToProjectItem(msbuildProjectItem);
if (item != null) {
yield return item;
}
}
}
ProjectItem ConvertToProjectItem(SD.ProjectItem msbuildProjectItem)
{
ProjectItemRelationship relationship = ProjectItem.GetRelationship(msbuildProjectItem);
return relationship.GetChild();
}
}
}

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

@ -0,0 +1,49 @@ @@ -0,0 +1,49 @@
// 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.IO;
using ICSharpCode.SharpDevelop.Project;
using SD = ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class DirectoryProjectItem : ProjectItem
{
string relativePath;
public DirectoryProjectItem(
Project project,
string relativePath)
: this(project, CreateFileProjectItem(project, relativePath))
{
this.relativePath = relativePath;
}
static FileProjectItem CreateFileProjectItem(Project project, string relativePath)
{
string directory = GetLastDirectoryName(relativePath);
return new FileProjectItem(project.MSBuildProject, ItemType.Folder, directory);
}
static string GetLastDirectoryName(string relativePath)
{
string[] directoryNames = relativePath.Split('\\');
return directoryNames[1];
}
public DirectoryProjectItem(Project project, FileProjectItem projectItem)
: base(project, projectItem)
{
}
internal override bool IsChildItem(SD.ProjectItem msbuildProjectItem)
{
string directory = Path.GetDirectoryName(msbuildProjectItem.Include);
if (directory == relativePath) {
return true;
}
return false;
}
}
}

25
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DirectoryProjectItems.cs

@ -0,0 +1,25 @@ @@ -0,0 +1,25 @@
// 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.Collections.Generic;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class DirectoryProjectItems : ProjectItems
{
ProjectItem projectItem;
public DirectoryProjectItems(ProjectItem projectItem)
: base(projectItem.ContainingProject, new PackageManagementFileService())
{
this.projectItem = projectItem;
}
public override IEnumerator<ProjectItem> GetEnumerator()
{
var items = new ChildProjectItems(projectItem);
return items.GetEnumerator();
}
}
}

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

@ -4,8 +4,9 @@ @@ -4,8 +4,9 @@
using System;
using System.ComponentModel;
using System.IO;
using ICSharpCode.Core;
using SD = ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE
{
@ -15,17 +16,18 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -15,17 +16,18 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public const string CopyToOutputDirectoryPropertyName = "CopyToOutputDirectory";
public const string CustomToolPropertyName = "CustomTool";
public ProjectItem(Project project, SD.FileProjectItem projectItem)
public ProjectItem(Project project, FileProjectItem projectItem)
{
this.projectItem = projectItem;
this.ContainingProject = project;
this.ProjectItems = new DirectoryProjectItems(this);
CreateProperties();
}
void CreateProperties()
{
var propertyFactory = new ProjectItemPropertyFactory(this);
Properties = new Properties(propertyFactory);
Properties = new Properties(propertyFactory);
}
public string Name {
@ -34,6 +36,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -34,6 +36,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public Properties Properties { get; private set; }
public Project ContainingProject { get; private set; }
public ProjectItems ProjectItems { get; private set; }
internal object GetProperty(string name)
{
@ -61,14 +64,30 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -61,14 +64,30 @@ namespace ICSharpCode.PackageManagement.EnvDTE
void SetCopyToOutputDirectory(object value)
{
SD.CopyToOutputDirectory copyToOutputDirectory = ConvertToCopyToOutputDirectory(value);
CopyToOutputDirectory copyToOutputDirectory = ConvertToCopyToOutputDirectory(value);
projectItem.CopyToOutputDirectory = copyToOutputDirectory;
}
SD.CopyToOutputDirectory ConvertToCopyToOutputDirectory(object value)
CopyToOutputDirectory ConvertToCopyToOutputDirectory(object value)
{
string valueAsString = value.ToString();
return (SD.CopyToOutputDirectory)Enum.Parse(typeof(SD.CopyToOutputDirectory), valueAsString);
return (CopyToOutputDirectory)Enum.Parse(typeof(CopyToOutputDirectory), valueAsString);
}
internal bool IsMatchByName(string name)
{
return String.Equals(this.Name, name, StringComparison.InvariantCultureIgnoreCase);
}
internal virtual bool IsChildItem(SD.ProjectItem msbuildProjectItem)
{
string directory = Path.GetDirectoryName(msbuildProjectItem.Include);
return IsMatchByName(directory);
}
internal ProjectItemRelationship GetRelationship(SD.ProjectItem msbuildProjectItem)
{
return new ProjectItemRelationship(this, msbuildProjectItem);
}
}
}

69
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemRelationship.cs

@ -0,0 +1,69 @@ @@ -0,0 +1,69 @@
// 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.IO;
using ICSharpCode.SharpDevelop.Project;
using SD = ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class ProjectItemRelationship
{
public ProjectItemRelationship(ProjectItem projectItem, SD.ProjectItem msbuildProjectItem)
{
this.ProjectItem = projectItem;
this.MSBuildProjectItem = msbuildProjectItem;
this.Project = projectItem.ContainingProject;
GetRelationship();
}
public ProjectItem ProjectItem { get; private set; }
public SD.ProjectItem MSBuildProjectItem { get; private set; }
public Project Project { get; private set; }
string MSBuildProjectItemDirectory;
void GetRelationship()
{
GetMSBuildProjectItemDirectory();
}
void GetMSBuildProjectItemDirectory()
{
MSBuildProjectItemDirectory = Path.GetDirectoryName(MSBuildProjectItem.Include);
}
public ProjectItem GetChild()
{
if (IsChildItem()) {
return CreateProjectItem();
} else {
if (IsInChildDirectory()) {
return CreateDirectoryItem();
}
}
return null;
}
bool IsChildItem()
{
return ProjectItem.IsChildItem(MSBuildProjectItem);
}
ProjectItem CreateProjectItem()
{
return new ProjectItem(Project, MSBuildProjectItem as FileProjectItem);
}
bool IsInChildDirectory()
{
return MSBuildProjectItemDirectory.StartsWith(ProjectItem.Name);
}
ProjectItem CreateDirectoryItem()
{
return new DirectoryProjectItem(Project, MSBuildProjectItemDirectory);
}
}
}

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

@ -38,9 +38,9 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -38,9 +38,9 @@ namespace ICSharpCode.PackageManagement.EnvDTE
return Path.Combine(project.MSBuildProject.Directory, fileName);
}
public IEnumerator<ProjectItem> GetEnumerator()
public virtual IEnumerator<ProjectItem> GetEnumerator()
{
var items = new ProjectItemsInsideDirectory(project);
var items = new ProjectItemsInsideProject(project);
return items.GetEnumerator();
}
@ -52,16 +52,11 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -52,16 +52,11 @@ namespace ICSharpCode.PackageManagement.EnvDTE
public ProjectItem Item(string name)
{
foreach (ProjectItem item in this) {
if (IsMatch(item, name)) {
if (item.IsMatchByName(name)) {
return item;
}
}
return null;
}
bool IsMatch(ProjectItem item, string name)
{
return String.Equals(item.Name, name, StringComparison.InvariantCultureIgnoreCase);
}
}
}

21
src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemsInsideDirectory.cs → src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemsInsideProject.cs

@ -7,15 +7,16 @@ using System.Collections.Generic; @@ -7,15 +7,16 @@ using System.Collections.Generic;
using System.IO;
using SD = ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE
{
public class ProjectItemsInsideDirectory : IEnumerable<ProjectItem>
public class ProjectItemsInsideProject : IEnumerable<ProjectItem>
{
Project project;
Dictionary<string, string> directoriesIncluded = new Dictionary<string, string>();
public ProjectItemsInsideDirectory(Project project)
public ProjectItemsInsideProject(Project project)
{
this.project = project;
}
@ -32,14 +33,14 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -32,14 +33,14 @@ namespace ICSharpCode.PackageManagement.EnvDTE
ProjectItem ConvertToProjectItem(SD.ProjectItem item)
{
var fileItem = item as SD.FileProjectItem;
var fileItem = item as FileProjectItem;
if (fileItem != null) {
return ConvertFileToProjectItem(fileItem);
}
return null;
}
ProjectItem ConvertFileToProjectItem(SD.FileProjectItem fileItem)
ProjectItem ConvertFileToProjectItem(FileProjectItem fileItem)
{
if (IsInProjectRootFolder(fileItem)) {
if (IsDirectory(fileItem)) {
@ -50,7 +51,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -50,7 +51,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
return ConvertDirectoryToProjectItem(fileItem);
}
bool IsInProjectRootFolder(SD.FileProjectItem item)
bool IsInProjectRootFolder(FileProjectItem item)
{
if (item.IsLink) {
return !HasDirectoryInPath(item.VirtualName);
@ -64,12 +65,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -64,12 +65,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE
return !String.IsNullOrEmpty(directoryName);
}
bool IsDirectory(SD.FileProjectItem fileItem)
bool IsDirectory(FileProjectItem fileItem)
{
return fileItem.ItemType == SD.ItemType.Folder;
return fileItem.ItemType == ItemType.Folder;
}
ProjectItem CreateDirectoryProjectItemIfDirectoryNotAlreadyIncluded(SD.FileProjectItem fileItem)
ProjectItem CreateDirectoryProjectItemIfDirectoryNotAlreadyIncluded(FileProjectItem fileItem)
{
string directory = fileItem.Include;
if (!IsDirectoryIncludedAlready(directory)) {
@ -79,7 +80,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -79,7 +80,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
return null;
}
ProjectItem ConvertDirectoryToProjectItem(SD.FileProjectItem fileItem)
ProjectItem ConvertDirectoryToProjectItem(FileProjectItem fileItem)
{
string subDirectoryName = GetFirstSubDirectoryName(fileItem.Include);
if (IsDirectoryInsideProject(subDirectoryName)) {
@ -114,7 +115,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE @@ -114,7 +115,7 @@ namespace ICSharpCode.PackageManagement.EnvDTE
ProjectItem CreateDirectoryProjectItem(string directoryName)
{
var directoryItem = new SD.FileProjectItem(project.MSBuildProject, SD.ItemType.Folder);
var directoryItem = new FileProjectItem(project.MSBuildProject, ItemType.Folder);
directoryItem.Include = directoryName;
return new ProjectItem(project, directoryItem);
}

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

@ -74,6 +74,7 @@ @@ -74,6 +74,7 @@
<Compile Include="Src\EnvDTE\ItemOperationsTests.cs" />
<Compile Include="Src\EnvDTE\ProjectItemPropertyTests.cs" />
<Compile Include="Src\EnvDTE\ProjectItemsTests.cs" />
<Compile Include="Src\EnvDTE\ProjectItemTests.cs" />
<Compile Include="Src\EnvDTE\ProjectTests.cs" />
<Compile Include="Src\EnvDTE\ProjectPropertyTests.cs" />
<Compile Include="Src\EnvDTE\ReferencesTests.cs" />
@ -90,6 +91,7 @@ @@ -90,6 +91,7 @@
<Compile Include="Src\Helpers\FakePackageScriptFileName.cs" />
<Compile Include="Src\Helpers\FakePackageViewModelFactory.cs" />
<Compile Include="Src\Helpers\FakePowerShellSession.cs" />
<Compile Include="Src\Helpers\ProjectItemCollectionAssert.cs" />
<Compile Include="Src\Helpers\TestableAddPackageReferenceCommand.cs" />
<Compile Include="Src\Helpers\TestableDTEProject.cs" />
<Compile Include="Src\PackageFromRepositoryTests.cs" />

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

@ -0,0 +1,100 @@ @@ -0,0 +1,100 @@
// 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.Collections;
using System.Collections.Generic;
using ICSharpCode.PackageManagement.EnvDTE;
using DTE = ICSharpCode.PackageManagement.EnvDTE;
using NUnit.Framework;
using PackageManagement.Tests.Helpers;
namespace PackageManagement.Tests.EnvDTE
{
[TestFixture]
public class ProjectItemTests
{
TestableDTEProject project;
ProjectItems projectItems;
TestableProject msbuildProject;
FakeFileService fakeFileService;
void CreateProjectItems()
{
project = new TestableDTEProject();
msbuildProject = project.TestableProject;
projectItems = project.ProjectItems;
fakeFileService = project.FakeFileService;
}
[Test]
public void ProjectItems_ProjectHasOneFileInsideSrcDirectory_ReturnsOneFileForSrcDirectory()
{
CreateProjectItems();
msbuildProject.AddFile(@"src\program.cs");
var directoryItem = projectItems.Item("src");
var directoryProjectItems = directoryItem.ProjectItems;
var files = new List<DTE.ProjectItem>(directoryProjectItems);
string[] expectedFiles = new string[] {
"program.cs"
};
ProjectItemCollectionAssert.AreEqual(expectedFiles, files);
}
[Test]
public void ProjectItems_ProjectHasTestDirectoryInsideSrcDirectory_ReturnsTestDirectoryItemForSrcDirectory()
{
CreateProjectItems();
msbuildProject.AddDirectory(@"src\test");
var directoryItem = projectItems.Item("src");
var directoryProjectItems = directoryItem.ProjectItems;
var items = directoryProjectItems as IEnumerable;
string[] expectedItems = new string[] {
"test"
};
ProjectItemCollectionAssert.AreEqual(expectedItems, items);
}
[Test]
public void ProjectItems_ProjectHasTwoFilesOneNotInSrcDirectory_ReturnsOneFileItemForSrcDirectory()
{
CreateProjectItems();
msbuildProject.AddFile(@"src\test.cs");
msbuildProject.AddFile("program.cs");
var directoryItem = projectItems.Item("src");
var directoryProjectItems = directoryItem.ProjectItems;
var items = directoryProjectItems as IEnumerable;
string[] expectedItems = new string[] {
"test.cs"
};
ProjectItemCollectionAssert.AreEqual(expectedItems, items);
}
[Test]
public void ProjectItems_ProjectHasOneFileInTestDirectoryTwoLevelsDeep_ReturnsOneFileItemForTestDirectory()
{
CreateProjectItems();
msbuildProject.AddFile(@"src\test\test.cs");
var directoryItem = projectItems.Item("src");
var testDirectoryItem = directoryItem.ProjectItems.Item("test");
var testDirectoryProjectItems = testDirectoryItem.ProjectItems;
var items = testDirectoryProjectItems as IEnumerable;
string[] expectedItems = new string[] {
"test.cs"
};
ProjectItemCollectionAssert.AreEqual(expectedItems, items);
}
}
}

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

@ -28,24 +28,6 @@ namespace PackageManagement.Tests.EnvDTE @@ -28,24 +28,6 @@ namespace PackageManagement.Tests.EnvDTE
fakeFileService = project.FakeFileService;
}
void ProjectItemCollectionAssertAreEqual(string[] expectedItems, List<DTE.ProjectItem> itemsList)
{
var actualItems = new List<string>();
itemsList.ForEach(r => actualItems.Add(r.Name));
CollectionAssert.AreEqual(expectedItems, actualItems);
}
void ProjectItemCollectionAssertAreEqual(string[] expectedItems, IEnumerable itemsList)
{
var actualItems = new List<string>();
foreach (DTE.ProjectItem item in itemsList) {
actualItems.Add(item.Name);
}
CollectionAssert.AreEqual(expectedItems, actualItems);
}
[Test]
public void AddFromFileCopy_AddFileNameOutsideProjectFolder_FileIsIncludedInProjectInProjectFolder()
{
@ -139,7 +121,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -139,7 +121,7 @@ namespace PackageManagement.Tests.EnvDTE
"Test.cs"
};
ProjectItemCollectionAssertAreEqual(expectedItems, itemsList);
ProjectItemCollectionAssert.AreEqual(expectedItems, itemsList);
}
[Test]
@ -154,7 +136,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -154,7 +136,7 @@ namespace PackageManagement.Tests.EnvDTE
"Program.cs"
};
ProjectItemCollectionAssertAreEqual(expectedFiles, enumerable);
ProjectItemCollectionAssert.AreEqual(expectedFiles, enumerable);
}
[Test]
@ -170,7 +152,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -170,7 +152,7 @@ namespace PackageManagement.Tests.EnvDTE
"Program.cs"
};
ProjectItemCollectionAssertAreEqual(expectedFiles, enumerable);
ProjectItemCollectionAssert.AreEqual(expectedFiles, enumerable);
}
[Test]
@ -185,7 +167,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -185,7 +167,7 @@ namespace PackageManagement.Tests.EnvDTE
"src"
};
ProjectItemCollectionAssertAreEqual(expectedItems, enumerable);
ProjectItemCollectionAssert.AreEqual(expectedItems, enumerable);
}
[Test]
@ -202,7 +184,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -202,7 +184,7 @@ namespace PackageManagement.Tests.EnvDTE
"ViewModels"
};
ProjectItemCollectionAssertAreEqual(expectedItems, enumerable);
ProjectItemCollectionAssert.AreEqual(expectedItems, enumerable);
}
[Test]
@ -218,7 +200,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -218,7 +200,7 @@ namespace PackageManagement.Tests.EnvDTE
"Controllers",
};
ProjectItemCollectionAssertAreEqual(expectedItems, enumerable);
ProjectItemCollectionAssert.AreEqual(expectedItems, enumerable);
}
[Test]
@ -234,7 +216,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -234,7 +216,7 @@ namespace PackageManagement.Tests.EnvDTE
"Controllers",
};
ProjectItemCollectionAssertAreEqual(expectedItems, enumerable);
ProjectItemCollectionAssert.AreEqual(expectedItems, enumerable);
}
[Test]
@ -250,7 +232,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -250,7 +232,7 @@ namespace PackageManagement.Tests.EnvDTE
"Controllers",
};
ProjectItemCollectionAssertAreEqual(expectedItems, enumerable);
ProjectItemCollectionAssert.AreEqual(expectedItems, enumerable);
}
[Test]
@ -266,7 +248,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -266,7 +248,7 @@ namespace PackageManagement.Tests.EnvDTE
"Program.cs"
};
ProjectItemCollectionAssertAreEqual(expectedFiles, enumerable);
ProjectItemCollectionAssert.AreEqual(expectedFiles, enumerable);
}
[Test]
@ -281,7 +263,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -281,7 +263,7 @@ namespace PackageManagement.Tests.EnvDTE
"Program.cs"
};
ProjectItemCollectionAssertAreEqual(expectedFiles, enumerable);
ProjectItemCollectionAssert.AreEqual(expectedFiles, enumerable);
}
[Test]
@ -298,7 +280,7 @@ namespace PackageManagement.Tests.EnvDTE @@ -298,7 +280,7 @@ namespace PackageManagement.Tests.EnvDTE
"Configuration"
};
ProjectItemCollectionAssertAreEqual(expectedItems, enumerable);
ProjectItemCollectionAssert.AreEqual(expectedItems, enumerable);
}
[Test]

32
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectItemCollectionAssert.cs

@ -0,0 +1,32 @@ @@ -0,0 +1,32 @@
// 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.Collections;
using System.Collections.Generic;
using DTE = ICSharpCode.PackageManagement.EnvDTE;
using NUnit.Framework;
namespace PackageManagement.Tests.Helpers
{
public static class ProjectItemCollectionAssert
{
public static void AreEqual(string[] expectedItems, List<DTE.ProjectItem> itemsList)
{
var actualItems = new List<string>();
itemsList.ForEach(r => actualItems.Add(r.Name));
CollectionAssert.AreEqual(expectedItems, actualItems);
}
public static void AreEqual(string[] expectedItems, IEnumerable itemsList)
{
var actualItems = new List<string>();
foreach (DTE.ProjectItem item in itemsList) {
actualItems.Add(item.Name);
}
CollectionAssert.AreEqual(expectedItems, actualItems);
}
}
}
Loading…
Cancel
Save