From 0364bbe9570e4a5f6f26c4fc51d6108d4c8f242d Mon Sep 17 00:00:00 2001 From: Hugh Bellamy Date: Sat, 18 Jun 2016 20:58:33 +0100 Subject: [PATCH] Cleanup GenericTypeParameterBuilder tests Commit migrated from https://github.com/dotnet/corefx/commit/d11b1091aadf6c5c63ed107a800f9d80fb9ef9f4 --- ...ricTyepParameterBuilderSetBaseTypeConstraint.cs | 58 ++---- .../GenericTypeParameterBuilderAssembly.cs | 28 +-- ...ricTypeParameterBuilderAssemblyQualifiedName.cs | 28 +-- .../GenericTypeParameterBuilderBaseType.cs | 53 +----- ...ypeParameterBuilderContainsGenericParameters.cs | 28 +-- .../GenericTypeParameterBuilderDeclaringMethod.cs | 28 +-- .../GenericTypeParameterBuilderDeclaringType.cs | 28 +-- .../GenericTypeParameterBuilderFullName.cs | 28 +-- .../GenericTypeParameterBuilderGUID.cs | 23 +-- ...TypeParameterBuilderGenericParameterPosition.cs | 55 +----- ...enericTypeParameterBuilderIsGenericParameter.cs | 29 +-- .../GenericTypeParameterBuilderIsGenericType.cs | 29 +-- ...cTypeParameterBuilderIsGenericTypeDefinition.cs | 29 +-- .../GenericTypeParameterBuilderMakeArrayType.cs | 53 ++++++ .../GenericTypeParameterBuilderMakeArrayType1.cs | 38 ---- .../GenericTypeParameterBuilderMakeArrayType2.cs | 99 ----------- .../GenericTypeParameterBuilderMakeByRefType.cs | 29 +-- .../GenericTypeParameterBuilderMakeGenericType.cs | 65 ++----- .../GenericTypeParameterBuilderMakePointerType.cs | 28 +-- .../GenericTypeParameterBuilderModule.cs | 29 +-- .../GenericTypeParameterBuilderName.cs | 29 +-- .../GenericTypeParameterBuilderNamespace.cs | 29 +-- ...enericTypeParameterBuilderSetCustomAttribute.cs | 72 ++++++++ ...nericTypeParameterBuilderSetCustomAttribute1.cs | 85 --------- ...nericTypeParameterBuilderSetCustomAttribute2.cs | 55 ------ ...arameterBuilderSetGenericParameterAttributes.cs | 195 ++------------------- ...cTypeParameterBuilderSetInterfaceConstraints.cs | 85 +++------ .../GenericTypeParameterBuilderToString.cs | 27 +-- .../tests/System.Reflection.Emit.Tests.csproj | 12 +- .../System.Reflection.Emit/tests/Utilities.cs | 2 + 30 files changed, 305 insertions(+), 1071 deletions(-) create mode 100644 src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeArrayType.cs delete mode 100644 src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeArrayType1.cs delete mode 100644 src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeArrayType2.cs create mode 100644 src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetCustomAttribute.cs delete mode 100644 src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetCustomAttribute1.cs delete mode 100644 src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetCustomAttribute2.cs diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTyepParameterBuilderSetBaseTypeConstraint.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTyepParameterBuilderSetBaseTypeConstraint.cs index 7a68257..b298c98 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTyepParameterBuilderSetBaseTypeConstraint.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTyepParameterBuilderSetBaseTypeConstraint.cs @@ -2,62 +2,24 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests { public class GenericTypeParameterBuilderSetBaseTypeConstraint { - [Fact] - public void TestWithStringBaseType() + [Theory] + [InlineData(typeof(string), typeof(string))] + [InlineData(null, typeof(object))] + public void SetBaseTypeConstraint(Type baseTypeConstraint, Type expectedBaseType) { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - Type expectedValue = typeof(string); - Type actualValue; - - TFirst.SetBaseTypeConstraint(typeof(string)); - actualValue = TFirst.BaseType; - Assert.Equal(expectedValue, actualValue); - } - - [Fact] - public void TestWithNullArgument() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - Type expectedValue = typeof(object); - Type actualValue; - TFirst.SetBaseTypeConstraint(null); - actualValue = TFirst.BaseType; - Assert.Equal(expectedValue, actualValue); + GenericTypeParameterBuilder firstParam = typeParams[0]; + firstParam.SetBaseTypeConstraint(baseTypeConstraint); + Assert.Equal(expectedBaseType, firstParam.BaseType); } } - - public class ExampleBase { } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderAssembly.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderAssembly.cs index 3d6f789..aa99aa7 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderAssembly.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderAssembly.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,26 +9,15 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderAssembly { [Fact] - public void TestAssemblyProperty() + public void Assembly() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); + AssemblyBuilder assembly = Helpers.DynamicAssembly(); + ModuleBuilder module = assembly.DefineDynamicModule("Module"); + TypeBuilder type = module.DefineType("Sample", TypeAttributes.Public); - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - Assembly expectedValue = myAssembly; - Assembly actualValue; - actualValue = TFirst.Assembly; - - Assert.True(actualValue.Equals(expectedValue)); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + Assert.Equal(assembly, typeParams[0].Assembly); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderAssemblyQualifiedName.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderAssemblyQualifiedName.cs index 3de7d1a..4aeeae4 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderAssemblyQualifiedName.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderAssemblyQualifiedName.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,27 +9,12 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderAssemblyQualifiedName { [Fact] - public void TestAssemblyQualifiedNameProperty() + public void AssemblyQualifiedName_ReturnsNull() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - string actualValue; - - actualValue = TFirst.AssemblyQualifiedName; - //this method only returns null - - Assert.Null(actualValue); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + Assert.Null(typeParams[0].AssemblyQualifiedName); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderBaseType.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderBaseType.cs index 4d36958..e323ac0 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderBaseType.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderBaseType.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,52 +9,12 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderBaseType { [Fact] - public void TestBaseTypeWithNotSet() + public void BaseType_NotSet_ReturnsNull() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - Type actualValue; - - actualValue = TFirst.BaseType; - - Assert.Null(actualValue); - } - - [Fact] - public void TestBaseTypeWithSetValue() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - TFirst.SetBaseTypeConstraint(typeof(string)); - - Type expectedValue = typeof(string); - Type actualValue; - - actualValue = TFirst.BaseType; - - Assert.Equal(expectedValue, actualValue); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + Assert.Null(typeParams[0].BaseType); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderContainsGenericParameters.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderContainsGenericParameters.cs index a53183a..cf9aec4 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderContainsGenericParameters.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderContainsGenericParameters.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,27 +9,12 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderContainsGenericParameters { [Fact] - public void TestContainsGenericParameters() + public void ContainsGenericParameters_ReturnsTrue() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - bool expectedValue = true; - bool actualValue; - - actualValue = TFirst.ContainsGenericParameters; - - Assert.Equal(expectedValue, actualValue); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + Assert.True(typeParams[0].ContainsGenericParameters); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderDeclaringMethod.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderDeclaringMethod.cs index c21a079..f055231 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderDeclaringMethod.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderDeclaringMethod.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,27 +9,12 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderDeclaringMethod { [Fact] - public void TestDeclaringMethod() + public void DeclaringMethod_DefinedOnType_ReturnsNull() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - MethodBase expectedValue = null; - MethodBase actualValue; - - actualValue = TFirst.DeclaringMethod; - - Assert.Equal(expectedValue, actualValue); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + Assert.Null(typeParams[0].DeclaringMethod); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderDeclaringType.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderDeclaringType.cs index e158963..d830fc4 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderDeclaringType.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderDeclaringType.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,27 +9,12 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderDeclaringType { [Fact] - public void TestDeclaringType() + public void DeclaringType() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - Type expectedValue = myType.AsType(); - Type actualValue; - - actualValue = TFirst.DeclaringType; - - Assert.Equal(expectedValue, actualValue); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + Assert.Equal(type.AsType(), typeParams[0].DeclaringType); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderFullName.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderFullName.cs index f72d3d5..c9aa179 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderFullName.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderFullName.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,27 +9,12 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderFullName { [Fact] - public void TestFullNameProperty() + public void FullName_ReturnsNull() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - string expectedValue = null; - string actualValue; - - actualValue = TFirst.FullName; - - Assert.Equal(expectedValue, actualValue); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + Assert.Null(typeParams[0].FullName); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderGUID.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderGUID.cs index 7b5f198..9dee9e3 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderGUID.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderGUID.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,21 +9,13 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderGUID { [Fact] - public void TestThrowsExceptionForNotSupported() + public void Guid_ThrowsNotSupportedException() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - Assert.Throws(() => { Guid guid = TFirst.GUID; }); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + + Assert.Throws(() => typeParams[0].GUID); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderGenericParameterPosition.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderGenericParameterPosition.cs index f0a7c30..62a41e4 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderGenericParameterPosition.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderGenericParameterPosition.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,54 +9,14 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderGenericParameterPosition { [Fact] - public void TestGenericParameterPositionProperty() + public void GenericParameterPosition() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst", "TSecond" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst", "TSecond" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - GenericTypeParameterBuilder TSecond = typeParams[1]; - - - int expectedValue = 0; - int actualValue; - - actualValue = TFirst.GenericParameterPosition; - - Assert.Equal(expectedValue, actualValue); - } - - [Fact] - public void TestGenericParameterPositionWithDifferentPosition() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst", "TSecond" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - GenericTypeParameterBuilder TSecond = typeParams[1]; - - - int expectedValue = 1; - int actualValue; - actualValue = TSecond.GenericParameterPosition; - - Assert.Equal(expectedValue, actualValue); + Assert.Equal(0, typeParams[0].GenericParameterPosition); + Assert.Equal(1, typeParams[1].GenericParameterPosition); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderIsGenericParameter.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderIsGenericParameter.cs index 95153c9..c8fcf64 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderIsGenericParameter.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderIsGenericParameter.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,28 +9,12 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderIsGenericParameter { [Fact] - public void TestIsGenericParameter() + public void IsGenericParameter_ReturnsTrue() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - - bool expectedValue = true; - bool actualValue; - - actualValue = TFirst.IsGenericParameter; - - Assert.Equal(expectedValue, actualValue); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + Assert.True(typeParams[0].IsGenericParameter); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderIsGenericType.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderIsGenericType.cs index 2187712..925b79c 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderIsGenericType.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderIsGenericType.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,28 +9,12 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderIsGenericType { [Fact] - public void TestIsGenericType() + public void IsGenericType_ReturnsFalse() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - - bool expectedValue = false; - bool actualValue; - - actualValue = TFirst.IsGenericType; - - Assert.Equal(expectedValue, actualValue); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + Assert.False(typeParams[0].IsGenericType); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderIsGenericTypeDefinition.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderIsGenericTypeDefinition.cs index 9df9cac..ad9f05d 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderIsGenericTypeDefinition.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderIsGenericTypeDefinition.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,28 +9,12 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderIsGenericTypeDefinition { [Fact] - public void TestIsGenericTypeDefinition() + public void IsGenericTypeDefinition_ReturnsFalse() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - - bool expectedValue = false; - bool actualValue; - - actualValue = TFirst.IsGenericTypeDefinition; - - Assert.Equal(expectedValue, actualValue); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + Assert.False(typeParams[0].IsGenericTypeDefinition); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeArrayType.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeArrayType.cs new file mode 100644 index 0000000..32961c9 --- /dev/null +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeArrayType.cs @@ -0,0 +1,53 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Xunit; + +namespace System.Reflection.Emit.Tests +{ + public class GenericTypeParameterBuilderMakeArrayType + { + [Fact] + public void MakeArrayType() + { + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + + Assert.Equal("TFirst[]", typeParams[0].MakeArrayType().Name); + } + + [Fact] + public void MakeArrayType_Int_RankOfOne() + { + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + + Assert.Equal("TFirst[*]", typeParams[0].MakeArrayType(1).Name); + } + + [Fact] + public void MakeArrayType_Int_RankOfTwo() + { + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + + Assert.Equal("TFirst[,]", typeParams[0].MakeArrayType(2).Name); + } + + [Theory] + [InlineData(0)] + [InlineData(-1)] + public void MakeArrayType_Int_RankLessThanOne_ThrowsIndexOutOfRangeException(int rank) + { + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + + Assert.Throws(() => typeParams[0].MakeArrayType(rank)); + } + } +} diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeArrayType1.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeArrayType1.cs deleted file mode 100644 index aa1f59a..0000000 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeArrayType1.cs +++ /dev/null @@ -1,38 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Reflection; -using System.Reflection.Emit; -using Xunit; - -namespace System.Reflection.Emit.Tests -{ - public class GenericTypeParameterBuilderMakeArrayType1 - { - [Fact] - public void TestMakeArrayType() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - string expectedValue = "TFirst[]"; - string actualValue; - - Type type = TFirst.MakeArrayType(); - actualValue = type.Name; - Assert.Equal(expectedValue, actualValue); - } - } -} diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeArrayType2.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeArrayType2.cs deleted file mode 100644 index 9446e7b..0000000 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeArrayType2.cs +++ /dev/null @@ -1,99 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Reflection; -using System.Reflection.Emit; -using Xunit; - -namespace System.Reflection.Emit.Tests -{ - public class GenericTypeParameterBuilderMakeArrayType - { - [Fact] - public void TestWithRankOne() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - string expectedValue = "TFirst[*]"; - string actualValue; - - Type type = TFirst.MakeArrayType(1); - actualValue = type.Name; - - Assert.Equal(expectedValue, actualValue); - } - - [Fact] - public void TestWithRankTwo() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - string expectedValue = "TFirst[,]"; - string actualValue; - - Type type = TFirst.MakeArrayType(2); - actualValue = type.Name; - - Assert.Equal(expectedValue, actualValue); - } - - [Fact] - public void TestThrowsExceptionForZeroRank() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - Assert.Throws(() => { Type type = TFirst.MakeArrayType(0); }); - } - - [Fact] - public void TestThrowsExceptionForNegativeRank() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - Assert.Throws(() => { Type type = TFirst.MakeArrayType(-1); }); - } - } -} diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeByRefType.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeByRefType.cs index 2e406fb..acfb82e 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeByRefType.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeByRefType.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,27 +9,15 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderMakeByRefType { [Fact] - public void TestMakeByRefType() + public void MakeByRefType() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - bool expectedValue = true; - bool actualValue; - - Type type = TFirst.MakeByRefType(); - actualValue = (type.Name == "TFirst&") && (type.GetTypeInfo().BaseType == typeof(Array)); - Assert.Equal(expectedValue, actualValue); + Type byRefType = typeParams[0].MakeByRefType(); + Assert.Equal(typeof(Array), byRefType.GetTypeInfo().BaseType); + Assert.Equal("TFirst&", byRefType.Name); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeGenericType.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeGenericType.cs index 841ba39..552472a 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeGenericType.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakeGenericType.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,59 +9,33 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderMakeGenericType { [Fact] - public void TestThrowsExceptionForNullTypeArguments() + public void MakeGenericType_NullTypeArguments_ThrowsInvalidOperationException() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - Assert.Throws(() => { Type type = TFirst.MakeGenericType(null); }); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + + Assert.Throws(() => typeParams[0].MakeGenericType(null)); } [Fact] - public void TestThrowsExceptionForOneMemberArray() + public void MakeGenericType_SingleTypeArgument_ThrowsInvalidOperationException() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - Assert.Throws(() => { Type type = TFirst.MakeGenericType(new Type[] { typeof(Type) }); }); - //this method only throw exceptions + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + + Assert.Throws(() => typeParams[0].MakeGenericType(new Type[] { typeof(Type) })); } [Fact] - public void TestThrowsExceptionForIncorrectNumberOfTypeParams() + public void MakeGenericType_TwoTypeArguments_ThrowsInvalidOperationException() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - Assert.Throws(() => { Type type = TFirst.MakeGenericType(new Type[] { typeof(int), typeof(string) }); }); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + + Assert.Throws(() => typeParams[0].MakeGenericType(new Type[] { typeof(int), typeof(string) })); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakePointerType.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakePointerType.cs index 8ca49b8..d88804c 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakePointerType.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderMakePointerType.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,26 +9,15 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderMakePointerType { [Fact] - public void TestMakePointerType() + public void MakePointerType() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - bool expectedValue = true; - bool actualValue; - Type type = TFirst.MakePointerType(); - actualValue = (type.Name == "TFirst*") && (type.GetTypeInfo().BaseType == typeof(Array)); - Assert.Equal(expectedValue, actualValue); + Type pointerType = typeParams[0].MakePointerType(); + Assert.Equal(typeof(Array), pointerType.GetTypeInfo().BaseType); + Assert.Equal("TFirst*", pointerType.Name); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderModule.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderModule.cs index abaaffa..9805ad4 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderModule.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderModule.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,28 +9,14 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderModule { [Fact] - public void TestModuleProperty() + public void Module() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); + ModuleBuilder module = Helpers.DynamicModule(); + TypeBuilder type = module.DefineType("TestType", TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - - Module expectedValue = myModule; - Module actualValue; - - actualValue = TFirst.Module; - - Assert.Equal(expectedValue, actualValue); + Assert.Equal(module, typeParams[0].Module); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderName.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderName.cs index 2c6368d..71e94cc 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderName.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderName.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,28 +9,12 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderName { [Fact] - public void TestNameProperty() + public void Name() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - - string expectedValue = "TFirst"; - string actualValue; - - actualValue = TFirst.Name; - - Assert.Equal(expectedValue, actualValue); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + Assert.Equal("TFirst", typeParams[0].Name); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderNamespace.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderNamespace.cs index ec5fb6c..77dffbf 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderNamespace.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderNamespace.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,28 +9,12 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderNamespace { [Fact] - public void TestNamespaceProperty() + public void Namespace_ReturnsNull() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - - string expectedValue = null; - string actualValue; - - actualValue = TFirst.Namespace; - - Assert.Equal(expectedValue, actualValue); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + Assert.Null(typeParams[0].Namespace); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetCustomAttribute.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetCustomAttribute.cs new file mode 100644 index 0000000..b8ab349 --- /dev/null +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetCustomAttribute.cs @@ -0,0 +1,72 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using Xunit; + +namespace System.Reflection.Emit.Tests +{ + public class GenericTypeParameterBuilderSetCustomAttribute + { + [Fact] + public void SetCustomAttribute_ConstructorInfo_ByteArray() + { + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + ConstructorInfo attributeConstructor = typeof(HelperAttribute).GetConstructors()[0]; + byte[] binaryAttribute = new byte[128]; + + typeParams[0].SetCustomAttribute(attributeConstructor, binaryAttribute); + } + + [Fact] + public void SetCustomAttribute_ConstructorInfo_ByteArray_NullAttributeConstructor_ThrowsArgumentNullException() + { + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + + Assert.Throws("con", () => typeParams[0].SetCustomAttribute(null, new byte[128])); + } + + [Fact] + public void SetCustomAttribute_ConstructorInfo_ByteArray_NullBinaryAttribute_ThrowsArgumentNullException() + { + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + ConstructorInfo attributeConstructor = typeof(HelperAttribute).GetConstructor(new Type[0]); + + Assert.Throws("binaryAttribute", () => typeParams[0].SetCustomAttribute(attributeConstructor, null)); + } + + [Fact] + public void SetCustomAttribute_CustomAttributeBuilder() + { + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + ConstructorInfo constructorinfo = typeof(HelperAttribute).GetConstructor(new Type[] { typeof(string) }); + CustomAttributeBuilder attributeBuilder = new CustomAttributeBuilder(constructorinfo, new object[] { "TestString" }); + + typeParams[0].SetCustomAttribute(attributeBuilder); + } + + [Fact] + public void SetCustomAttribute_CustomAttributeBuilder_NullAttributeBuilder_ThrowsArgumentNullException() + { + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + + Assert.Throws("customBuilder", () => typeParams[0].SetCustomAttribute(null)); + } + } + + public class HelperAttribute + { + public HelperAttribute() { } + public HelperAttribute(string str) { } + } +} diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetCustomAttribute1.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetCustomAttribute1.cs deleted file mode 100644 index 80db3a2..0000000 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetCustomAttribute1.cs +++ /dev/null @@ -1,85 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Reflection; -using System.Reflection.Emit; -using Xunit; - -namespace System.Reflection.Emit.Tests -{ - public class GenericTypeParameterBuilderSetCustomAttribute1 - { - [Fact] - public void TestSetCustomAttribute() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - ConstructorInfo[] cons = typeof(HelperAttribute).GetConstructors(); - ConstructorInfo constructorinfo = cons[0]; - byte[] binaryAttribute = new byte[128]; - TFirst.SetCustomAttribute(constructorinfo, binaryAttribute); - } - - [Fact] - public void TestThrowsExceptionOnNullConstructorInfo() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - byte[] binaryAttribute = new byte[128]; - - Assert.Throws(() => { TFirst.SetCustomAttribute(null, binaryAttribute); }); - } - - [Fact] - public void TestThrowsExceptionForNullByteArray() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - ConstructorInfo con = typeof(HelperAttribute).GetConstructor(new Type[] { }); - - Assert.Throws(() => { TFirst.SetCustomAttribute(con, null); }); - } - } - - public class HelperAttribute - { - public HelperAttribute() - { - } - public HelperAttribute(string str) - { - } - } -} diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetCustomAttribute2.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetCustomAttribute2.cs deleted file mode 100644 index 1693499..0000000 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetCustomAttribute2.cs +++ /dev/null @@ -1,55 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Reflection; -using System.Reflection.Emit; -using Xunit; - -namespace System.Reflection.Emit.Tests -{ - public class GenericTypeParameterBuilderSetCustomAttribute - { - [Fact] - public void TestSetCustomAttribute() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - Type[] ctorParams = new Type[] { typeof(string) }; - ConstructorInfo constructorinfo = typeof(HelperAttribute).GetConstructor(ctorParams); - CustomAttributeBuilder cABB = new CustomAttributeBuilder(constructorinfo, new object[] { "TestString" }); - TFirst.SetCustomAttribute(cABB); - } - - [Fact] - public void TestThrowsExceptionForNullBuilder() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - Assert.Throws(() => { TFirst.SetCustomAttribute(null); }); - } - } -} diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetGenericParameterAttributes.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetGenericParameterAttributes.cs index 7700522..143f355 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetGenericParameterAttributes.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetGenericParameterAttributes.cs @@ -2,189 +2,30 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests { public class GenericTypeParameterBuilderSetGenericParameterAttributes { - [Fact] - public void TestContravariantGenericParameterAttribute() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - GenericParameterAttributes gPA = GenericParameterAttributes.Contravariant; - - - TFirst.SetGenericParameterAttributes(gPA); - Assert.True(TFirst.GenericParameterAttributes.Equals(gPA)); - } - - [Fact] - public void TestCovariantGenericParameterAttribute() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - GenericParameterAttributes gPA = GenericParameterAttributes.Covariant; - TFirst.SetGenericParameterAttributes(gPA); - Assert.True(TFirst.GenericParameterAttributes.Equals(gPA)); - } - - [Fact] - public void TestConstraintGenericParameterAttribute() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - GenericParameterAttributes gPA = GenericParameterAttributes.DefaultConstructorConstraint; - - TFirst.SetGenericParameterAttributes(gPA); - Assert.True(TFirst.GenericParameterAttributes.Equals(gPA)); - } - - [Fact] - public void TestGenericParameterAttributeWithNoneOption() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - GenericParameterAttributes gPA = GenericParameterAttributes.None; - - TFirst.SetGenericParameterAttributes(gPA); - Assert.True(TFirst.GenericParameterAttributes.Equals(gPA)); - } - - [Fact] - public void TestNotNullableConstraintGenericParameterAttribute() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - GenericParameterAttributes gPA = GenericParameterAttributes.NotNullableValueTypeConstraint; - - TFirst.SetGenericParameterAttributes(gPA); - Assert.True(TFirst.GenericParameterAttributes.Equals(gPA)); - } - - [Fact] - public void TestReferenceConstraintGenericParameterAttribute() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - GenericParameterAttributes gPA = GenericParameterAttributes.ReferenceTypeConstraint; - - TFirst.SetGenericParameterAttributes(gPA); - Assert.True(TFirst.GenericParameterAttributes.Equals(gPA)); - } - - [Fact] - public void TestSpecialConstraintMaskGenericParameterAttribute() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - GenericParameterAttributes gPA = GenericParameterAttributes.SpecialConstraintMask; - - TFirst.SetGenericParameterAttributes(gPA); - Assert.True(TFirst.GenericParameterAttributes.Equals(gPA)); - } - - [Fact] - public void TestVarianceMaskGenericParameterAttribute() - { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - GenericParameterAttributes gPA = GenericParameterAttributes.VarianceMask; - - TFirst.SetGenericParameterAttributes(gPA); - Assert.True(TFirst.GenericParameterAttributes.Equals(gPA)); + [Theory] + [InlineData(GenericParameterAttributes.Contravariant)] + [InlineData(GenericParameterAttributes.Covariant)] + [InlineData(GenericParameterAttributes.DefaultConstructorConstraint)] + [InlineData(GenericParameterAttributes.None)] + [InlineData(GenericParameterAttributes.NotNullableValueTypeConstraint)] + [InlineData(GenericParameterAttributes.ReferenceTypeConstraint)] + [InlineData(GenericParameterAttributes.SpecialConstraintMask)] + [InlineData(GenericParameterAttributes.VarianceMask)] + public void SetGenericParameterAttributes(GenericParameterAttributes genericParameterAttributes) + { + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + GenericTypeParameterBuilder firstTypeParam = typeParams[0]; + + firstTypeParam.SetGenericParameterAttributes(genericParameterAttributes); + Assert.Equal(genericParameterAttributes, firstTypeParam.GenericParameterAttributes); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetInterfaceConstraints.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetInterfaceConstraints.cs index dae6541..e3be6e0 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetInterfaceConstraints.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderSetInterfaceConstraints.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,75 +9,51 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderSetInterfaceConstraints { [Fact] - public void TestInterfaceConstraintsOnCustomInterface() + public void SetInterfaceConstraints_OneCustomInterface() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + + typeParams[0].SetInterfaceConstraints(typeof(EmptyInterface1)); + Type resultType = type.CreateTypeInfo().AsType(); + Type[] genericTypeParams = resultType.GetGenericArguments(); - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - TFirst.SetInterfaceConstraints(typeof(IExample)); - Type type = myType.CreateTypeInfo().AsType(); - Type[] genericTypeParams = type.GetGenericArguments(); Assert.Equal(1, genericTypeParams.Length); - Assert.Equal(new Type[] { typeof(IExample) }, genericTypeParams[0].GetTypeInfo().GetGenericParameterConstraints()); + Assert.Equal(new Type[] { typeof(EmptyInterface1) }, genericTypeParams[0].GetTypeInfo().GetGenericParameterConstraints()); } [Fact] - public void TestInterfaceConstraintsOnNull() + public void SetInterfaceConstraints_Null() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + + typeParams[0].SetInterfaceConstraints(null); + Type resultType = type.CreateTypeInfo().AsType(); + Type[] genericTypeParams = resultType.GetGenericArguments(); - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - TFirst.SetInterfaceConstraints(null); - Type type = myType.CreateTypeInfo().AsType(); - Type[] genericTypeParams = type.GetGenericArguments(); Assert.Equal(1, genericTypeParams.Length); - Assert.Equal(new Type[] { }, genericTypeParams[0].GetTypeInfo().GetGenericParameterConstraints()); + Assert.Equal(new Type[0], genericTypeParams[0].GetTypeInfo().GetGenericParameterConstraints()); } - [Fact] - public void TestMultipleInterfaceConstraints() + public void SetInterfaceConstraints_MultipleCustomInterfaces() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + + typeParams[0].SetInterfaceConstraints(new Type[] { typeof(EmptyInterface1), typeof(EmptyInterface2) }); + Type resultType = type.CreateTypeInfo().AsType(); + Type[] genericTypeParams = resultType.GetGenericArguments(); - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - TFirst.SetInterfaceConstraints(new Type[] { typeof(IExample), typeof(IExampleA) }); - Type type = myType.CreateTypeInfo().AsType(); - Type[] genericTypeParams = type.GetGenericArguments(); Assert.Equal(1, genericTypeParams.Length); - Assert.Equal(new Type[] { typeof(IExample), typeof(IExampleA) }, genericTypeParams[0].GetTypeInfo().GetGenericParameterConstraints()); + Assert.Equal(new Type[] { typeof(EmptyInterface1), typeof(EmptyInterface2) }, genericTypeParams[0].GetTypeInfo().GetGenericParameterConstraints()); } } - public interface IExample { } - - public interface IExampleA { } + public interface EmptyInterface1 { } + public interface EmptyInterface2 { } } diff --git a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderToString.cs b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderToString.cs index 791c9a8..b5dbb18 100644 --- a/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderToString.cs +++ b/src/libraries/System.Reflection.Emit/tests/GenericTypeParameterBuilder/GenericTypeParameterBuilderToString.cs @@ -2,9 +2,6 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -using System; -using System.Reflection; -using System.Reflection.Emit; using Xunit; namespace System.Reflection.Emit.Tests @@ -12,26 +9,12 @@ namespace System.Reflection.Emit.Tests public class GenericTypeParameterBuilderToString { [Fact] - public void TestToString() + public void ToString_ReturnsName() { - AssemblyName myAsmName = new AssemblyName("GenericEmitExample1"); - AssemblyBuilder myAssembly = AssemblyBuilder.DefineDynamicAssembly(myAsmName, AssemblyBuilderAccess.Run); - ModuleBuilder myModule = TestLibrary.Utilities.GetModuleBuilder(myAssembly, myAsmName.Name); - - Type baseType = typeof(ExampleBase); - - TypeBuilder myType = myModule.DefineType("Sample", TypeAttributes.Public); - - string[] typeParamNames = { "TFirst" }; - GenericTypeParameterBuilder[] typeParams = myType.DefineGenericParameters(typeParamNames); - - GenericTypeParameterBuilder TFirst = typeParams[0]; - - string expectedValue = TFirst.Name; - string actualValue; - - actualValue = TFirst.ToString(); - Assert.Equal(expectedValue, actualValue); + TypeBuilder type = Helpers.DynamicType(TypeAttributes.Public); + string[] typeParamNames = new string[] { "TFirst" }; + GenericTypeParameterBuilder[] typeParams = type.DefineGenericParameters(typeParamNames); + Assert.Equal(typeParams[0].Name, typeParams[0].ToString()); } } } diff --git a/src/libraries/System.Reflection.Emit/tests/System.Reflection.Emit.Tests.csproj b/src/libraries/System.Reflection.Emit/tests/System.Reflection.Emit.Tests.csproj index 3d8f68d..b3a7720 100644 --- a/src/libraries/System.Reflection.Emit/tests/System.Reflection.Emit.Tests.csproj +++ b/src/libraries/System.Reflection.Emit/tests/System.Reflection.Emit.Tests.csproj @@ -33,8 +33,7 @@ - - + @@ -43,8 +42,7 @@ - - + @@ -59,16 +57,14 @@ - - + - - + diff --git a/src/libraries/System.Reflection.Emit/tests/Utilities.cs b/src/libraries/System.Reflection.Emit/tests/Utilities.cs index 8e8aa3d..a484edb 100644 --- a/src/libraries/System.Reflection.Emit/tests/Utilities.cs +++ b/src/libraries/System.Reflection.Emit/tests/Utilities.cs @@ -6,6 +6,8 @@ using System.Reflection.Emit; namespace System.Reflection.Emit.Tests { + public class EmptyAttribute : Attribute { } + public static class Helpers { public static AssemblyBuilder DynamicAssembly(string name = "TestAssembly") -- 2.7.4