diff --git a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
index d8ce06c0a3..fe3eb1580d 100644
--- a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
+++ b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
@@ -70,14 +70,18 @@
+
+
+
-
+
+
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ChildProjectItems.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ChildProjectItems.cs
new file mode 100644
index 0000000000..e5b0b9ec09
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ChildProjectItems.cs
@@ -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
+ {
+ 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 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();
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DirectoryProjectItem.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DirectoryProjectItem.cs
new file mode 100644
index 0000000000..c5c7ecabd3
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DirectoryProjectItem.cs
@@ -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;
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DirectoryProjectItems.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DirectoryProjectItems.cs
new file mode 100644
index 0000000000..d2220f6ed2
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/DirectoryProjectItems.cs
@@ -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 GetEnumerator()
+ {
+ var items = new ChildProjectItems(projectItem);
+ return items.GetEnumerator();
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs
index 2bfbb81695..27e56bad03 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItem.cs
@@ -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
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
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
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);
}
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemRelationship.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemRelationship.cs
new file mode 100644
index 0000000000..aa1afabf05
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemRelationship.cs
@@ -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);
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs
index 03c1485e80..569888bb1b 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItems.cs
@@ -38,9 +38,9 @@ namespace ICSharpCode.PackageManagement.EnvDTE
return Path.Combine(project.MSBuildProject.Directory, fileName);
}
- public IEnumerator GetEnumerator()
+ public virtual IEnumerator GetEnumerator()
{
- var items = new ProjectItemsInsideDirectory(project);
+ var items = new ProjectItemsInsideProject(project);
return items.GetEnumerator();
}
@@ -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);
- }
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemsInsideDirectory.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemsInsideProject.cs
similarity index 83%
rename from src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemsInsideDirectory.cs
rename to src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemsInsideProject.cs
index dd46b190d5..1d5a8d96f1 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemsInsideDirectory.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/ProjectItemsInsideProject.cs
@@ -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
+ public class ProjectItemsInsideProject : IEnumerable
{
Project project;
Dictionary directoriesIncluded = new Dictionary();
- public ProjectItemsInsideDirectory(Project project)
+ public ProjectItemsInsideProject(Project project)
{
this.project = project;
}
@@ -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
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
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
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
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);
}
diff --git a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
index bde267d2c6..419b595a47 100644
--- a/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
+++ b/src/AddIns/Misc/PackageManagement/Test/PackageManagement.Tests.csproj
@@ -74,6 +74,7 @@
+
@@ -90,6 +91,7 @@
+
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs
new file mode 100644
index 0000000000..fc0a65646d
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemTests.cs
@@ -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(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);
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs
index 478a7c0d22..44c72ea286 100644
--- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/ProjectItemsTests.cs
@@ -28,24 +28,6 @@ namespace PackageManagement.Tests.EnvDTE
fakeFileService = project.FakeFileService;
}
- void ProjectItemCollectionAssertAreEqual(string[] expectedItems, List itemsList)
- {
- var actualItems = new List();
- itemsList.ForEach(r => actualItems.Add(r.Name));
-
- CollectionAssert.AreEqual(expectedItems, actualItems);
- }
-
- void ProjectItemCollectionAssertAreEqual(string[] expectedItems, IEnumerable itemsList)
- {
- var actualItems = new List();
- 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
"Test.cs"
};
- ProjectItemCollectionAssertAreEqual(expectedItems, itemsList);
+ ProjectItemCollectionAssert.AreEqual(expectedItems, itemsList);
}
[Test]
@@ -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
"Program.cs"
};
- ProjectItemCollectionAssertAreEqual(expectedFiles, enumerable);
+ ProjectItemCollectionAssert.AreEqual(expectedFiles, enumerable);
}
[Test]
@@ -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
"ViewModels"
};
- ProjectItemCollectionAssertAreEqual(expectedItems, enumerable);
+ ProjectItemCollectionAssert.AreEqual(expectedItems, enumerable);
}
[Test]
@@ -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
"Controllers",
};
- ProjectItemCollectionAssertAreEqual(expectedItems, enumerable);
+ ProjectItemCollectionAssert.AreEqual(expectedItems, enumerable);
}
[Test]
@@ -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
"Program.cs"
};
- ProjectItemCollectionAssertAreEqual(expectedFiles, enumerable);
+ ProjectItemCollectionAssert.AreEqual(expectedFiles, enumerable);
}
[Test]
@@ -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
"Configuration"
};
- ProjectItemCollectionAssertAreEqual(expectedItems, enumerable);
+ ProjectItemCollectionAssert.AreEqual(expectedItems, enumerable);
}
[Test]
diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectItemCollectionAssert.cs b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectItemCollectionAssert.cs
new file mode 100644
index 0000000000..e3913c7f03
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectItemCollectionAssert.cs
@@ -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 itemsList)
+ {
+ var actualItems = new List();
+ itemsList.ForEach(r => actualItems.Add(r.Name));
+
+ CollectionAssert.AreEqual(expectedItems, actualItems);
+ }
+
+ public static void AreEqual(string[] expectedItems, IEnumerable itemsList)
+ {
+ var actualItems = new List();
+ foreach (DTE.ProjectItem item in itemsList) {
+ actualItems.Add(item.Name);
+ }
+
+ CollectionAssert.AreEqual(expectedItems, actualItems);
+ }
+ }
+}