You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
196 lines
6.3 KiB
196 lines
6.3 KiB
// 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; |
|
using ICSharpCode.SharpDevelop.Internal.Templates; |
|
using ICSharpCode.SharpDevelop.Project; |
|
using ICSharpCode.TextTemplating; |
|
using NUnit.Framework; |
|
using TextTemplating.Tests.Helpers; |
|
|
|
namespace TextTemplating.Tests |
|
{ |
|
[TestFixture] |
|
public class TextTemplatingAssemblyPathResolverTests |
|
{ |
|
TextTemplatingAssemblyPathResolver resolver; |
|
IProject project; |
|
FakeAssemblyParserService fakeAssemblyParserService; |
|
FakeTextTemplatingPathResolver fakePathResolver; |
|
|
|
[SetUp] |
|
public void Init() |
|
{ |
|
SD.InitializeForUnitTests(); |
|
MessageLoopHelper.InitializeForUnitTests(); |
|
} |
|
|
|
[TearDown] |
|
public void TearDown() |
|
{ |
|
SD.TearDownForUnitTests(); |
|
} |
|
|
|
void CreateResolver() |
|
{ |
|
project = ProjectHelper.CreateProject(); |
|
fakeAssemblyParserService = new FakeAssemblyParserService(); |
|
fakePathResolver = new FakeTextTemplatingPathResolver(); |
|
resolver = new TextTemplatingAssemblyPathResolver(project, fakeAssemblyParserService, fakePathResolver); |
|
} |
|
|
|
ReferenceProjectItem AddReferenceToProject(string referenceName) |
|
{ |
|
ReferenceProjectItem projectItem = new ReferenceProjectItem(project, referenceName); |
|
ProjectService.AddProjectItem(project, projectItem); |
|
return projectItem; |
|
} |
|
|
|
IProject GetProjectPassedToAssemblyParserService() |
|
{ |
|
return ReferenceProjectItemPassedToGetReflectionProjectContentForReference.Project; |
|
} |
|
|
|
ReferenceProjectItem ReferenceProjectItemPassedToGetReflectionProjectContentForReference { |
|
get { return fakeAssemblyParserService.ItemPassedToGetReflectionProjectContentForReference; } |
|
} |
|
|
|
ItemType GetReferenceItemTypePassedToAssemblyParserService() |
|
{ |
|
return ReferenceProjectItemPassedToGetReflectionProjectContentForReference.ItemType; |
|
} |
|
|
|
[Test] |
|
public void ResolvePath_ProjectHasNoReferences_ReturnsAssemblyReferencePassedToMethod() |
|
{ |
|
CreateResolver(); |
|
fakeAssemblyParserService.FakeReflectionProjectContent = null; |
|
string result = resolver.ResolvePath("Test"); |
|
|
|
Assert.AreEqual("Test", result); |
|
} |
|
|
|
[Test] |
|
public void ResolvePath_ProjectHasOneReferenceToTestAssemblyWithHintPathSet_ReturnsFullPathToTestAssembly() |
|
{ |
|
CreateResolver(); |
|
ReferenceProjectItem reference = AddReferenceToProject("test"); |
|
string expectedFileName = @"d:\projects\MyProject\lib\Test.dll"; |
|
reference.HintPath = expectedFileName; |
|
|
|
string result = resolver.ResolvePath("Test"); |
|
|
|
Assert.AreEqual(expectedFileName, result); |
|
} |
|
|
|
[Test] |
|
public void ResolvePath_AssemblyReferenceNameIsInDifferentCase_ReturnsFullPathToTestAssembly() |
|
{ |
|
CreateResolver(); |
|
ReferenceProjectItem reference = AddReferenceToProject("test"); |
|
string expectedFileName = @"d:\projects\MyProject\lib\Test.dll"; |
|
reference.HintPath = expectedFileName; |
|
|
|
string result = resolver.ResolvePath("TEST"); |
|
|
|
Assert.AreEqual(expectedFileName, result); |
|
} |
|
|
|
[Test] |
|
public void ResolvePath_ProjectHasOneReferenceToTestAssemblyWithFileNameSet_ReturnsFullPathToTestAssembly() |
|
{ |
|
CreateResolver(); |
|
ReferenceProjectItem reference = AddReferenceToProject("Test"); |
|
string expectedFileName = @"d:\projects\MyProject\lib\Test.dll"; |
|
reference.FileName = expectedFileName; |
|
|
|
string result = resolver.ResolvePath("Test"); |
|
|
|
Assert.AreEqual(expectedFileName, result); |
|
} |
|
|
|
[Test] |
|
[Ignore("TODO GAC assembly resolving")] |
|
public void ResolvePath_ProjectHasNoReferencesAndAssemblyReferenceInGac_ReturnsFullPathToAssemblyFoundFromAssemblyParserService() |
|
{ |
|
CreateResolver(); |
|
string expectedFileName = @"c:\Windows\System32\Gac\System.Data.dll"; |
|
fakeAssemblyParserService.FakeReflectionProjectContent.AssemblyLocation = expectedFileName; |
|
|
|
string result = resolver.ResolvePath("System.Data"); |
|
|
|
Assert.AreEqual(expectedFileName, result); |
|
} |
|
|
|
[Test] |
|
[Ignore("TODO GAC assembly resolving")] |
|
public void ResolvePath_ProjectHasNoReferencesAndAssemblyReferenceInGac_ReferenceItemPassedToAssemblyParserServiceUsesProject() |
|
{ |
|
CreateResolver(); |
|
string result = resolver.ResolvePath("System.Data"); |
|
IProject expectedProject = GetProjectPassedToAssemblyParserService(); |
|
|
|
Assert.AreEqual(project, expectedProject); |
|
} |
|
|
|
[Test] |
|
[Ignore("TODO GAC assembly resolving")] |
|
public void ResolvePath_ProjectHasNoReferencesAndAssemblyReferenceInGac_ReferenceItemPassedToAssemblyParserServiceIsReference() |
|
{ |
|
CreateResolver(); |
|
string result = resolver.ResolvePath("System.Data"); |
|
ItemType type = GetReferenceItemTypePassedToAssemblyParserService(); |
|
|
|
Assert.AreEqual(ItemType.Reference, type); |
|
} |
|
|
|
[Test] |
|
[Ignore("TODO GAC assembly resolving")] |
|
public void ResolvePath_ProjectHasNoReferencesAndAssemblyReferenceInGac_ReferenceItemIncludePassedToAssemblyParserServiceIsAssemblyNameToResolvePath() |
|
{ |
|
CreateResolver(); |
|
string result = resolver.ResolvePath("System.Data"); |
|
string referenceInclude = ReferenceProjectItemPassedToGetReflectionProjectContentForReference.Include; |
|
|
|
Assert.AreEqual("System.Data", referenceInclude); |
|
} |
|
|
|
[Test] |
|
public void ResolvePath_ProjectHasNoReferencesAndAssemblyReferenceNotFoundInGac_ReturnsAssemblyReferencePassedToMethod() |
|
{ |
|
CreateResolver(); |
|
fakeAssemblyParserService.FakeReflectionProjectContent = null; |
|
|
|
string result = resolver.ResolvePath("System.Data"); |
|
|
|
Assert.AreEqual("System.Data", result); |
|
} |
|
|
|
[Test] |
|
public void ResolvePath_AssemblyReferenceHasTemplateVariable_ReturnsExpandedAssemblyReferenceFileName() |
|
{ |
|
CreateResolver(); |
|
string path = @"$(SolutionDir)lib\Test.dll"; |
|
string expectedPath = @"d:\projects\MyProject\lib\Test.dll"; |
|
fakePathResolver.AddPath(path, expectedPath); |
|
|
|
string resolvedPath = resolver.ResolvePath(path); |
|
|
|
Assert.AreEqual(expectedPath, resolvedPath); |
|
} |
|
|
|
[Test] |
|
public void ResolvePath_AssemblyReferenceHasTemplateVariable_AssemblyParserServiceIsNotUsed() |
|
{ |
|
CreateResolver(); |
|
string path = @"$(SolutionDir)lib\Test.dll"; |
|
string expectedPath = @"d:\projects\MyProject\lib\Test.dll"; |
|
fakePathResolver.AddPath(path, expectedPath); |
|
|
|
string result = resolver.ResolvePath(path); |
|
|
|
Assert.IsFalse(fakeAssemblyParserService.IsGetReflectionProjectContentForReferenceCalled); |
|
} |
|
} |
|
}
|
|
|