16 changed files with 429 additions and 121 deletions
@ -0,0 +1,30 @@
@@ -0,0 +1,30 @@
|
||||
// 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 ICSharpCode.SharpDevelop.Project; |
||||
|
||||
namespace ICSharpCode.PackageManagement.EnvDTE |
||||
{ |
||||
public class Reference |
||||
{ |
||||
ReferenceProjectItem referenceProjectItem; |
||||
Project project; |
||||
|
||||
public Reference(Project project, ReferenceProjectItem referenceProjectItem) |
||||
{ |
||||
this.project = project; |
||||
this.referenceProjectItem = referenceProjectItem; |
||||
} |
||||
|
||||
public string Name { |
||||
get { return referenceProjectItem.Name; } |
||||
} |
||||
|
||||
public void Remove() |
||||
{ |
||||
project.RemoveReference(referenceProjectItem); |
||||
project.Save(); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,87 @@
@@ -0,0 +1,87 @@
|
||||
// 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 ICSharpCode.PackageManagement.EnvDTE; |
||||
using NUnit.Framework; |
||||
using PackageManagement.Tests.Helpers; |
||||
|
||||
namespace PackageManagement.Tests.EnvDTE |
||||
{ |
||||
[TestFixture] |
||||
public class PropertyTests |
||||
{ |
||||
Properties properties; |
||||
TestableDTEProject project; |
||||
TestableProject msbuildProject; |
||||
|
||||
void CreateProperties() |
||||
{ |
||||
project = new TestableDTEProject(); |
||||
msbuildProject = project.TestableProject; |
||||
properties = new Properties(project); |
||||
} |
||||
|
||||
[Test] |
||||
public void Value_GetPostBuildEvent_ReturnsProjectsPostBuildEvent() |
||||
{ |
||||
CreateProperties(); |
||||
msbuildProject.SetProperty("PostBuildEvent", "Test"); |
||||
var postBuildEventProperty = properties.Item("PostBuildEvent").Value; |
||||
|
||||
Assert.AreEqual("Test", postBuildEventProperty); |
||||
} |
||||
|
||||
[Test] |
||||
public void Value_GetPostBuildEvent_ReturnsUnevaluatedPostBuildEvent() |
||||
{ |
||||
CreateProperties(); |
||||
msbuildProject.SetProperty("PostBuildEvent", "$(SolutionDir)", false); |
||||
var postBuildEventProperty = properties.Item("PostBuildEvent").Value; |
||||
|
||||
Assert.AreEqual("$(SolutionDir)", postBuildEventProperty); |
||||
} |
||||
|
||||
[Test] |
||||
public void Value_GetNullProperty_ReturnsEmptyString() |
||||
{ |
||||
CreateProperties(); |
||||
var property = properties.Item("TestTestTest").Value; |
||||
|
||||
Assert.AreEqual(String.Empty, property); |
||||
} |
||||
|
||||
[Test] |
||||
public void Value_SetPostBuildEvent_UpdatesProjectsPostBuildEvent() |
||||
{ |
||||
CreateProperties(); |
||||
properties.Item("PostBuildEvent").Value = "Test"; |
||||
|
||||
string postBuildEventProperty = msbuildProject.GetEvaluatedProperty("PostBuildEvent"); |
||||
|
||||
Assert.AreEqual("Test", postBuildEventProperty); |
||||
} |
||||
|
||||
[Test] |
||||
public void Value_SetPostBuildEvent_DoesNotEscapeText() |
||||
{ |
||||
CreateProperties(); |
||||
properties.Item("PostBuildEvent").Value = "$(SolutionDir)"; |
||||
|
||||
string postBuildEventProperty = msbuildProject.GetUnevalatedProperty("PostBuildEvent"); |
||||
|
||||
Assert.AreEqual("$(SolutionDir)", postBuildEventProperty); |
||||
} |
||||
|
||||
[Test] |
||||
public void ItemValue_SetPostBuildEvent_MSBuildProjectIsSaved() |
||||
{ |
||||
CreateProperties(); |
||||
project.Properties.Item("PostBuildEvent").Value = "test"; |
||||
|
||||
bool saved = msbuildProject.IsSaved; |
||||
|
||||
Assert.IsTrue(saved); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,62 @@
@@ -0,0 +1,62 @@
|
||||
// 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 ICSharpCode.PackageManagement.Design; |
||||
using ICSharpCode.PackageManagement.EnvDTE; |
||||
using NUnit.Framework; |
||||
using PackageManagement.Tests.Helpers; |
||||
|
||||
namespace PackageManagement.Tests.EnvDTE |
||||
{ |
||||
[TestFixture] |
||||
public class ReferenceTests |
||||
{ |
||||
Reference reference; |
||||
TestableProject msbuildProject; |
||||
FakePackageManagementProjectService fakeProjectService; |
||||
TestableDTEProject project; |
||||
|
||||
void CreateReference(string name) |
||||
{ |
||||
project = new TestableDTEProject(); |
||||
msbuildProject = project.TestableProject; |
||||
var referenceProjectItem = msbuildProject.AddReference(name); |
||||
fakeProjectService = project.FakeProjectService; |
||||
reference = new Reference(project, referenceProjectItem); |
||||
} |
||||
|
||||
[Test] |
||||
public void Name_ReferenceNameIsSystemXml_ReturnsSystemXml() |
||||
{ |
||||
CreateReference("System.Xml"); |
||||
string name = reference.Name; |
||||
|
||||
Assert.AreEqual("System.Xml", name); |
||||
} |
||||
|
||||
[Test] |
||||
public void Remove_RemoveSystemXmlReferenceFromProject_ProjectReferenceRemoved() |
||||
{ |
||||
CreateReference("System.Xml"); |
||||
|
||||
reference.Remove(); |
||||
|
||||
int count = msbuildProject.Items.Count; |
||||
|
||||
Assert.AreEqual(0, count); |
||||
} |
||||
|
||||
[Test] |
||||
public void Remove_RemoveSystemXmlReferenceFromProject_ProjectIsSaved() |
||||
{ |
||||
CreateReference("System.Xml"); |
||||
|
||||
reference.Remove(); |
||||
|
||||
bool saved = msbuildProject.IsSaved; |
||||
|
||||
Assert.IsTrue(saved); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,123 @@
@@ -0,0 +1,123 @@
|
||||
// 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.Design; |
||||
using ICSharpCode.PackageManagement.EnvDTE; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
using NUnit.Framework; |
||||
using PackageManagement.Tests.Helpers; |
||||
|
||||
namespace PackageManagement.Tests.EnvDTE |
||||
{ |
||||
[TestFixture] |
||||
public class ReferencesTests |
||||
{ |
||||
References references; |
||||
FakePackageManagementProjectService fakeProjectService; |
||||
TestableProject msbuildProject; |
||||
TestableDTEProject project; |
||||
|
||||
void CreateReferences() |
||||
{ |
||||
project = new TestableDTEProject(); |
||||
msbuildProject = project.TestableProject; |
||||
fakeProjectService = project.FakeProjectService; |
||||
references = project.Object.References; |
||||
} |
||||
|
||||
void ReferenceCollectionAssertAreEqual(string[] expectedReferences, List<Reference> referenceList) |
||||
{ |
||||
var actualReferences = new List<string>(); |
||||
referenceList.ForEach(r => actualReferences.Add(r.Name)); |
||||
|
||||
CollectionAssert.AreEqual(expectedReferences, actualReferences); |
||||
} |
||||
|
||||
void ReferenceCollectionAssertAreEqual(string[] expectedReferences, IEnumerable referenceList) |
||||
{ |
||||
var actualReferences = new List<string>(); |
||||
foreach (Reference reference in referenceList) { |
||||
actualReferences.Add(reference.Name); |
||||
} |
||||
|
||||
CollectionAssert.AreEqual(expectedReferences, actualReferences); |
||||
} |
||||
|
||||
[Test] |
||||
public void Add_AddGacAssemblyReference_ReferenceAddedToMSBuildProject() |
||||
{ |
||||
CreateReferences(); |
||||
references.Add("System.Data"); |
||||
|
||||
var reference = msbuildProject.Items[0] as ReferenceProjectItem; |
||||
string referenceName = reference.Name; |
||||
|
||||
Assert.AreEqual("System.Data", referenceName); |
||||
} |
||||
|
||||
[Test] |
||||
public void Add_AddGacAssemblyReference_MSBuildProjectIsSaved() |
||||
{ |
||||
CreateReferences(); |
||||
references.Add("System.Xml"); |
||||
|
||||
bool saved = msbuildProject.IsSaved; |
||||
|
||||
Assert.IsTrue(saved); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetEnumerator_ProjectHasTwoReferences_TwoReferencesReturned() |
||||
{ |
||||
CreateReferences(); |
||||
msbuildProject.AddReference("System.Data"); |
||||
msbuildProject.AddReference("System.Xml"); |
||||
|
||||
var referenceList = new List<Reference>(); |
||||
referenceList.AddRange(references); |
||||
|
||||
var expectedReferences = new string[] { |
||||
"System.Data", |
||||
"System.Xml" |
||||
}; |
||||
|
||||
ReferenceCollectionAssertAreEqual(expectedReferences, referenceList); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetEnumerator_ProjectHasFileItemBeforeReferenceItem_OneReferenceReturned() |
||||
{ |
||||
CreateReferences(); |
||||
msbuildProject.AddFile(@"src\Test.cs"); |
||||
msbuildProject.AddReference("System.Xml"); |
||||
|
||||
var referenceList = new List<Reference>(); |
||||
referenceList.AddRange(references); |
||||
|
||||
var expectedReferences = new string[] { |
||||
"System.Xml" |
||||
}; |
||||
|
||||
ReferenceCollectionAssertAreEqual(expectedReferences, referenceList); |
||||
} |
||||
|
||||
[Test] |
||||
public void GetEnumerator_UseUntypedEnumeratorProjectHasOneReference_OneReferenceReturned() |
||||
{ |
||||
CreateReferences(); |
||||
msbuildProject.AddReference("System.Xml"); |
||||
|
||||
var enumerable = references as IEnumerable; |
||||
|
||||
var expectedReferences = new string[] { |
||||
"System.Xml" |
||||
}; |
||||
|
||||
ReferenceCollectionAssertAreEqual(expectedReferences, enumerable); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
// 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 ICSharpCode.PackageManagement.Design; |
||||
using ICSharpCode.PackageManagement.EnvDTE; |
||||
using ICSharpCode.SharpDevelop.Project; |
||||
|
||||
namespace PackageManagement.Tests.Helpers |
||||
{ |
||||
public class TestableDTEProject : Project |
||||
{ |
||||
public TestableProject TestableProject; |
||||
public FakePackageManagementProjectService FakeProjectService; |
||||
|
||||
public TestableDTEProject() |
||||
: this(ProjectHelper.CreateTestProject()) |
||||
{ |
||||
} |
||||
|
||||
public TestableDTEProject(TestableProject project) |
||||
: this(project, new FakePackageManagementProjectService()) |
||||
{ |
||||
} |
||||
|
||||
public TestableDTEProject(TestableProject project, FakePackageManagementProjectService projectService) |
||||
: base(project, projectService) |
||||
{ |
||||
this.TestableProject = project; |
||||
this.FakeProjectService = projectService; |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue