16 changed files with 429 additions and 121 deletions
@ -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 @@ |
|||||||
|
// 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 @@ |
|||||||
|
// 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 @@ |
|||||||
|
// 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 @@ |
|||||||
|
// 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