#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
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

// 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);
}
}
}