This repository has been archived by the owner on Oct 16, 2020. It is now read-only.
/
TextTemplatingHostTests.cs
147 lines (120 loc) · 4.8 KB
/
TextTemplatingHostTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
// 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;
FakeServiceProvider fakeServiceProvider;
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;
fakeServiceProvider = host.FakeServiceProvider;
}
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);
}
[Test]
public void GetService_HostPassedFakeServiceProvider_ReturnsServiceFromFakeServiceProvider()
{
CreateHost();
var expectedService = new StringWriter();
fakeServiceProvider.AddService(typeof(StringWriter), expectedService);
var hostServiceProvider = host as IServiceProvider;
StringWriter service = hostServiceProvider.GetService(typeof(StringWriter)) as StringWriter;
Assert.AreEqual(expectedService, service);
}
}
}