diff options
author | Stephen Toub <stoub@microsoft.com> | 2017-01-04 02:16:30 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-04 02:16:30 +0300 |
commit | e3ee974bfb1cdd938561ace61ce462ca389ff375 (patch) | |
tree | a0cbc347ecd641bc977f9b4f1fa66fd6b221c0b9 /src | |
parent | a384f0ad82aa75cd3a4c8b0bb41dd84643781c77 (diff) | |
parent | 31b0b4b5a300266cca0643b8538c31507afddf5b (diff) |
Merge pull request #14602 from hughbe/refemit-desktop
Support System.Reflection.Emit tests on the full .NET Framework
Diffstat (limited to 'src')
-rw-r--r-- | src/System.Reflection.Emit/tests/AssemblyBuilderTests.cs | 67 |
1 files changed, 52 insertions, 15 deletions
diff --git a/src/System.Reflection.Emit/tests/AssemblyBuilderTests.cs b/src/System.Reflection.Emit/tests/AssemblyBuilderTests.cs index cc73b6ffd9..be1c7d2ad1 100644 --- a/src/System.Reflection.Emit/tests/AssemblyBuilderTests.cs +++ b/src/System.Reflection.Emit/tests/AssemblyBuilderTests.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Linq; +using System.Runtime.InteropServices; using Xunit; namespace System.Reflection.Emit.Tests @@ -71,11 +72,20 @@ namespace System.Reflection.Emit.Tests } [Theory] - [InlineData((AssemblyBuilderAccess)0)] // No such case - [InlineData((AssemblyBuilderAccess)10)] // No such case + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The coreclr doesn't support Save or ReflectionOnly AssemblyBuilders.")] [InlineData((AssemblyBuilderAccess)2)] // Save (not supported) [InlineData((AssemblyBuilderAccess)2 | AssemblyBuilderAccess.Run)] // RunAndSave (not supported) [InlineData((AssemblyBuilderAccess)6)] // ReflectionOnly (not supported) + public void DefineDynamicAssembly_CoreclrNotSupportedAccess_ThrowsArgumentException(AssemblyBuilderAccess access) + { + DefineDynamicAssembly_InvalidAccess_ThrowsArgumentException(access); + } + + [Theory] + [InlineData((AssemblyBuilderAccess)(-1))] + [InlineData((AssemblyBuilderAccess)0)] + [InlineData((AssemblyBuilderAccess)10)] + [InlineData((AssemblyBuilderAccess)int.MaxValue)] public void DefineDynamicAssembly_InvalidAccess_ThrowsArgumentException(AssemblyBuilderAccess access) { Assert.Throws<ArgumentException>("access", () => AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("Name"), access)); @@ -87,10 +97,10 @@ namespace System.Reflection.Emit.Tests { AssemblyName name = new AssemblyName("Name") { Version = new Version(0, 0, 0, 0) }; AssemblyBuilder assembly = AssemblyBuilder.DefineDynamicAssembly(name, AssemblyBuilderAccess.Run); - Assert.Equal(name.ToString(), assembly.FullName); + Assert.StartsWith(name.ToString(), assembly.FullName); name.Name = "NewName"; - Assert.NotEqual(name.ToString(), assembly.FullName); + Assert.False(assembly.FullName.StartsWith(name.ToString())); } public static IEnumerable<object[]> DefineDynamicModule_TestData() @@ -113,26 +123,53 @@ namespace System.Reflection.Emit.Tests Assert.Empty(module.CustomAttributes); Assert.Equal("<In Memory Module>", module.Name); - Assert.Equal("RefEmit_InMemoryManifestModule", module.FullyQualifiedName); + + // The coreclr ignores the name passed to AssemblyBuilder.DefineDynamicModule + if (RuntimeInformation.FrameworkDescription.StartsWith(".NET Framework")) + { + Assert.Equal(name, module.FullyQualifiedName); + } + else + { + Assert.Equal("RefEmit_InMemoryManifestModule", module.FullyQualifiedName); + } Assert.Equal(module, assembly.GetDynamicModule(module.FullyQualifiedName)); } + [Fact] + public void DefineDynamicModule_NullName_ThrowsArgumentNullException() + { + AssemblyBuilder assembly = Helpers.DynamicAssembly(); + Assert.Throws<ArgumentNullException>("name", () => assembly.DefineDynamicModule(null)); + } + [Theory] - [InlineData(null, typeof(ArgumentNullException))] - [InlineData("", typeof(ArgumentException))] - [InlineData("\0test", typeof(ArgumentException))] - public void DefineDyamicModule_InvalidName_ThrowsArgumentException(string name, Type exceptionType) + [InlineData("")] + [InlineData("\0test")] + public void DefineDynamicModule_InvalidName_ThrowsArgumentException(string name) + { + AssemblyBuilder assembly = Helpers.DynamicAssembly(); + Assert.Throws<ArgumentException>("name", () => assembly.DefineDynamicModule(name)); + } + + [Fact] + [SkipOnTargetFramework(~TargetFrameworkMonikers.NetFramework, "The coreclr only supports AssemblyBuilders with one module.")] + public void DefineDynamicModule_NetFxModuleAlreadyDefined_ThrowsInvalidOperationException() { AssemblyBuilder assembly = Helpers.DynamicAssembly(); - Assert.Throws(exceptionType, () => assembly.DefineDynamicModule(name)); + assembly.DefineDynamicModule("module1"); + assembly.DefineDynamicModule("module2"); + Assert.Throws<ArgumentException>(null, () => assembly.DefineDynamicModule("module1")); } [Fact] - public void DefineDyamicModule_ModuleAlreadyDefined_ThrowsInvalidOperationException() + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "The coreclr only supports AssemblyBuilders with one module.")] + public void DefineDynamicModule_CoreFxModuleAlreadyDefined_ThrowsInvalidOperationException() { AssemblyBuilder assembly = Helpers.DynamicAssembly(); - ModuleBuilder mb = assembly.DefineDynamicModule("module1"); + assembly.DefineDynamicModule("module1"); + Assert.Throws<InvalidOperationException>(() => assembly.DefineDynamicModule("module1")); Assert.Throws<InvalidOperationException>(() => assembly.DefineDynamicModule("module2")); } @@ -258,9 +295,9 @@ namespace System.Reflection.Emit.Tests public static void VerifyAssemblyBuilder(AssemblyBuilder assembly, AssemblyName name, IEnumerable<CustomAttributeBuilder> attributes) { - Assert.Equal(name.ToString(), assembly.FullName); - Assert.Equal(name.ToString(), assembly.GetName().ToString()); - + Assert.StartsWith(name.ToString(), assembly.FullName); + Assert.StartsWith(name.ToString(), assembly.GetName().ToString()); + Assert.True(assembly.IsDynamic); Assert.Equal(attributes?.Count() ?? 0, assembly.CustomAttributes.Count()); |