Jo Shields a575963da9 Imported Upstream version 3.6.0
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
2014-08-13 10:39:27 +01:00

151 lines
5.0 KiB
C#

// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
namespace Microsoft.DbContextPackage.Utilities
{
using System;
using System.CodeDom.Compiler;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization.Formatters.Binary;
using Microsoft.VisualStudio.TextTemplating;
using Xunit;
public class EfTextTemplateHostTests
{
public class ResolveAssemblyReference
{
[Fact]
public void Resolves_assembly_locations()
{
var host = new EfTextTemplateHost();
var assemblyLocation = typeof(Type).Assembly.Location;
var resolvedReference = host.ResolveAssemblyReference(
assemblyLocation);
Assert.True(File.Exists(resolvedReference));
Assert.Equal("mscorlib.dll", Path.GetFileName(resolvedReference));
}
[Fact]
public void Resolves_full_assembly_names()
{
var host = new EfTextTemplateHost();
var assemblyName = typeof(Type).Assembly.GetName();
var resolvedReference = host.ResolveAssemblyReference(
assemblyName.FullName);
Assert.True(File.Exists(resolvedReference));
Assert.Equal("mscorlib.dll", Path.GetFileName(resolvedReference));
}
[Fact]
public void Resolves_simple_assembly_names()
{
var host = new EfTextTemplateHost();
var assemblyName = typeof(Type).Assembly.GetName();
var resolvedReference = host.ResolveAssemblyReference(
assemblyName.Name);
Assert.True(File.Exists(resolvedReference));
Assert.Equal("mscorlib.dll", Path.GetFileName(resolvedReference));
}
}
[Fact]
public void StandardAssemblyReferences_includes_basic_references()
{
ITextTemplatingEngineHost host = new EfTextTemplateHost();
var powerToolsAssemblyName = typeof(EfTextTemplateHost)
.Assembly
.GetName()
.Name;
var references = host.StandardAssemblyReferences
.Select(r => Path.GetFileNameWithoutExtension(r))
.ToArray();
Assert.Contains(powerToolsAssemblyName, references);
Assert.Contains("System", references);
Assert.Contains("System.Core", references);
Assert.Contains("System.Data.Entity", references);
}
[Fact]
public void StandardImports_includes_basic_imports()
{
ITextTemplatingEngineHost host = new EfTextTemplateHost();
var hostNamespace = typeof(EfTextTemplateHost).Namespace;
var imports = host.StandardImports;
Assert.Contains("System", imports);
Assert.Contains(hostNamespace, imports);
}
[Fact]
public void LogErrors_sets_Errors()
{
var efHost = new EfTextTemplateHost();
var host = (ITextTemplatingEngineHost)efHost;
var errors = new CompilerErrorCollection();
host.LogErrors(errors);
Assert.Same(errors, efHost.Errors);
}
public class ResolvePath
{
[Fact]
public void Resolves_absolute_paths()
{
const string path = @"C:\File.ext";
ITextTemplatingEngineHost host = new EfTextTemplateHost();
var resolvedPath = host.ResolvePath(path);
Assert.Equal(path, resolvedPath);
}
[Fact]
public void Resolves_relative_paths_when_TemplateFile_absolute()
{
ITextTemplatingEngineHost host = new EfTextTemplateHost
{
TemplateFile = @"C:\Template.tt"
};
var resolvedPath = host.ResolvePath("File.ext");
Assert.Equal(@"C:\File.ext", resolvedPath);
}
[Fact]
public void Returns_original_path_when_unresolvable()
{
const string path = "File.ext";
ITextTemplatingEngineHost host = new EfTextTemplateHost();
var resolvedPath = host.ResolvePath(path);
Assert.Equal(path, resolvedPath);
}
}
[Fact]
public void SetFileExtension_sets_FileExtension()
{
const string extension = ".ext";
var efHost = new EfTextTemplateHost();
var host = (ITextTemplatingEngineHost)efHost;
host.SetFileExtension(extension);
Assert.Equal(extension, efHost.FileExtension);
}
}
}