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.
132 lines
4.3 KiB
132 lines
4.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 System.IO; |
|
using ICSharpCode.TextTemplating; |
|
using NUnit.Framework; |
|
using TextTemplating.Tests.Helpers; |
|
|
|
namespace TextTemplating.Tests |
|
{ |
|
[TestFixture] |
|
public class TextTemplatingHostTests |
|
{ |
|
TestableTextTemplatingHost host; |
|
FakeTextTemplatingAppDomainFactory fakeTextTemplatingAppDomainFactory; |
|
FakeTextTemplatingAppDomain fakeTextTemplatingAppDomain; |
|
FakeTextTemplatingAssemblyResolver fakeAssemblyResolver; |
|
FakeTextTemplatingVariables fakeTextTemplatingVariables; |
|
|
|
void CreateHost() |
|
{ |
|
CreateHost(String.Empty); |
|
} |
|
|
|
void CreateHost(string applicationBase) |
|
{ |
|
host = new TestableTextTemplatingHost(applicationBase); |
|
fakeTextTemplatingAppDomainFactory = host.FakeTextTemplatingAppDomainFactory; |
|
fakeTextTemplatingAppDomain = fakeTextTemplatingAppDomainFactory.FakeTextTemplatingAppDomain; |
|
fakeAssemblyResolver = host.FakeTextTemplatingAssemblyResolver; |
|
fakeTextTemplatingVariables = host.FakeTextTemplatingVariables; |
|
} |
|
|
|
void AddTemplateVariableValue(string variableName, string variableValue) |
|
{ |
|
fakeTextTemplatingVariables.AddVariable(variableName, variableValue); |
|
} |
|
|
|
[Test] |
|
public void ProvideTemplatingAppDomain_PassedContentName_ReturnsDomainFromTextTemplatingAppDomainFactory() |
|
{ |
|
CreateHost(); |
|
AppDomain expectedAppDomain = AppDomain.CreateDomain("TextTemplatingHostTests"); |
|
fakeTextTemplatingAppDomain.AppDomain = expectedAppDomain; |
|
|
|
AppDomain actualAppDomain = host.ProvideTemplatingAppDomain("test"); |
|
|
|
Assert.AreEqual(expectedAppDomain, actualAppDomain); |
|
} |
|
|
|
[Test] |
|
public void Dispose_DisposingHostAfterProvideTemplatingAppDomainCalled_DisposesTemplatingAppDomain() |
|
{ |
|
CreateHost(); |
|
host.ProvideTemplatingAppDomain("test"); |
|
host.Dispose(); |
|
|
|
Assert.IsTrue(fakeTextTemplatingAppDomain.IsDisposeCalled); |
|
} |
|
|
|
[Test] |
|
public void Dispose_DisposingHostWhenProvideTemplatingAppDomainIsNotCalled_DoesNotThrowNullReferenceException() |
|
{ |
|
CreateHost(); |
|
Assert.DoesNotThrow(() => host.Dispose()); |
|
} |
|
|
|
[Test] |
|
public void ProvideTemplatingAppDomain_MethodCalledTwice_AppDomainCreatedOnce() |
|
{ |
|
CreateHost(); |
|
host.ProvideTemplatingAppDomain("test"); |
|
host.ProvideTemplatingAppDomain("test"); |
|
|
|
Assert.AreEqual(1, fakeTextTemplatingAppDomainFactory.CreateTextTemplatingAppDomainCallCount); |
|
} |
|
|
|
[Test] |
|
public void Dispose_DisposeCalledTwiceHostAfterProvideTemplatingAppDomainCalled_DisposesTemplatingAppDomainOnce() |
|
{ |
|
CreateHost(); |
|
host.ProvideTemplatingAppDomain("test"); |
|
host.Dispose(); |
|
|
|
fakeTextTemplatingAppDomain.IsDisposeCalled = false; |
|
host.Dispose(); |
|
|
|
Assert.IsFalse(fakeTextTemplatingAppDomain.IsDisposeCalled); |
|
} |
|
|
|
[Test] |
|
public void ProvideTemplatingAppDomain_PassedContentName_HostApplicationBaseIsUsedAsAppDomainSetupApplicationBase() |
|
{ |
|
string applicationBase = @"d:\sharpdevelop\addins\texttemplating"; |
|
CreateHost(applicationBase); |
|
host.ProvideTemplatingAppDomain("test"); |
|
|
|
string actualApplicationBase = fakeTextTemplatingAppDomainFactory.ApplicationBasePassedToCreateTextTemplatingAppDomain; |
|
Assert.AreEqual(applicationBase, actualApplicationBase); |
|
} |
|
|
|
[Test] |
|
public void ResolveAssemblyReference_PassedMyAssemblyReference_CallsTextTemplatingAssemblyResolver() |
|
{ |
|
CreateHost(); |
|
host.CallResolveAssemblyReference("MyReference"); |
|
|
|
Assert.AreEqual("MyReference", fakeAssemblyResolver.AssembyReferencePassedToResolve); |
|
} |
|
|
|
[Test] |
|
public void ResolveAssemblyReference_PassedMyAssemblyReference_ReturnsFileNameReturnedFromAssemblyResolverResolveMethod() |
|
{ |
|
CreateHost(); |
|
fakeAssemblyResolver.ResolveReturnValue = @"d:\projects\references\MyReference.dll"; |
|
string result = host.CallResolveAssemblyReference("MyReference"); |
|
|
|
Assert.AreEqual(@"d:\projects\references\MyReference.dll", result); |
|
} |
|
|
|
[Test] |
|
public void ResolvePath_PathContainsSolutionDirProperty_SolutionDirExpanded() |
|
{ |
|
CreateHost(); |
|
AddTemplateVariableValue("SolutionDir", @"d:\projects\MySolution\"); |
|
string path = host.CallResolvePath("$(SolutionDir)"); |
|
|
|
Assert.AreEqual(@"d:\projects\MySolution\", path); |
|
} |
|
} |
|
}
|
|
|