aspnetcore/test/Microsoft.AspNetCore.Mvc.Co.../ApplicationParts/AssemblyPartTest.cs

105 lines
3.2 KiB
C#

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using Xunit;
namespace Microsoft.AspNetCore.Mvc.ApplicationParts
{
public class AssemblyPartTest
{
[Fact]
public void AssemblyPart_Name_ReturnsAssemblyName()
{
// Arrange
var part = new AssemblyPart(typeof(AssemblyPartTest).GetTypeInfo().Assembly);
// Act
var name = part.Name;
// Assert
Assert.Equal("Microsoft.AspNetCore.Mvc.Core.Test", name);
}
[Fact]
public void AssemblyPart_Types_ReturnsDefinedTypes()
{
// Arrange
var assembly = typeof(AssemblyPartTest).GetTypeInfo().Assembly;
var part = new AssemblyPart(assembly);
// Act
var types = part.Types;
// Assert
Assert.Equal(assembly.DefinedTypes, types);
Assert.NotSame(assembly.DefinedTypes, types);
}
[Fact]
public void AssemblyPart_Assembly_ReturnsAssembly()
{
// Arrange
var assembly = typeof(AssemblyPartTest).GetTypeInfo().Assembly;
var part = new AssemblyPart(assembly);
// Act & Assert
Assert.Equal(part.Assembly, assembly);
}
[Fact]
public void GetReferencePaths_ReturnsReferencesFromDependencyContext_IfPreserveCompilationContextIsSet()
{
// Arrange
var assembly = GetType().GetTypeInfo().Assembly;
var part = new AssemblyPart(assembly);
// Act
var references = part.GetReferencePaths().ToList();
// Assert
Assert.Contains(assembly.Location, references);
Assert.Contains(
typeof(AssemblyPart).GetTypeInfo().Assembly.GetName().Name,
references.Select(Path.GetFileNameWithoutExtension));
}
[Fact]
public void GetReferencePaths_ReturnsAssemblyLocation_IfPreserveCompilationContextIsNotSet()
{
// Arrange
// src projects do not have preserveCompilationContext specified.
var assembly = typeof(AssemblyPart).GetTypeInfo().Assembly;
var part = new AssemblyPart(assembly);
// Act
var references = part.GetReferencePaths().ToList();
// Assert
var actual = Assert.Single(references);
Assert.Equal(assembly.Location, actual);
}
[Fact]
public void GetReferencePaths_ReturnsEmptySequenceForDynamicAssembly()
{
// Arrange
var name = new AssemblyName($"DynamicAssembly-{Guid.NewGuid()}");
var assembly = AssemblyBuilder.DefineDynamicAssembly(name,
AssemblyBuilderAccess.RunAndCollect);
var part = new AssemblyPart(assembly);
// Act
var references = part.GetReferencePaths().ToList();
// Assert
Assert.Empty(references);
}
}
}