In System.Reflection.Emit:
authorSebastien Pouliot <sebastien@ximian.com>
Thu, 29 Oct 2009 12:51:36 +0000 (12:51 -0000)
committerSebastien Pouliot <sebastien@ximian.com>
Thu, 29 Oct 2009 12:51:36 +0000 (12:51 -0000)
2009-10-29  Sebastien Pouliot  <sebastien@ximian.com>

* ModuleBuilder.cs: Add missing 'className' validations in GetType
* TypeBuilder.cs: Add missing 'names' validations in
DefineGenericParameters

In Test/System.Reflection.Emit:
2009-10-29  Sebastien Pouliot  <sebastien@ximian.com>

* ModuleBuilderTest.cs: Add test cases for GetType overloads
* TypeBuilderTest.cs: Remove NotWorking from two DefineGenericParameters test case.

svn path=/trunk/mcs/; revision=145013

mcs/class/corlib/System.Reflection.Emit/ChangeLog
mcs/class/corlib/System.Reflection.Emit/ModuleBuilder.cs
mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs
mcs/class/corlib/Test/System.Reflection.Emit/ChangeLog
mcs/class/corlib/Test/System.Reflection.Emit/ModuleBuilderTest.cs
mcs/class/corlib/Test/System.Reflection.Emit/TypeBuilderTest.cs

index 97ea20959c72d1834043fcfcf7f664872bb702fc..c6a6d3baa7ae9ef429776f703a810e2190dd3c97 100644 (file)
@@ -1,3 +1,9 @@
+2009-10-29  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * ModuleBuilder.cs: Add missing 'className' validations in GetType
+       * TypeBuilder.cs: Add missing 'names' validations in 
+       DefineGenericParameters
+
 2009-10-27  Marek Safar  <marek.safar@gmail.com>
 
        * GenericTypeParameterBuilder.cs: Attributes work under NET_4_0.
index 4e4eb8f0c5713dc280dc68cf510ed1503ab8ecbd..0ff6e252b0d0699c82d717ad6684bc0f5c502889 100644 (file)
@@ -384,7 +384,13 @@ namespace System.Reflection.Emit {
 #if NET_2_0
                [ComVisible (true)]
 #endif         
-               public override Type GetType (string className, bool throwOnError, bool ignoreCase) {
+               public override Type GetType (string className, bool throwOnError, bool ignoreCase)
+               {
+                       if (className == null)
+                               throw new ArgumentNullException ("className");
+                       if (className.Length == 0)
+                               throw new ArgumentException ("className");
+
                        int subt;
                        string orig = className;
                        string modifiers;
index fd284ad635c7338115d34dd2f6f6cdca9020f6ce..19302ac9b31f6f48d60e37f845ff9fd3547d3149 100644 (file)
@@ -1755,12 +1755,20 @@ namespace System.Reflection.Emit
 
                public GenericTypeParameterBuilder[] DefineGenericParameters (params string[] names)
                {
+                       if (names == null)
+                               throw new ArgumentNullException ("names");
+                       if (names.Length == 0)
+                               throw new ArgumentException ("names");
+
                        setup_generic_class ();
 
                        generic_params = new GenericTypeParameterBuilder [names.Length];
-                       for (int i = 0; i < names.Length; i++)
-                               generic_params [i] = new GenericTypeParameterBuilder (
-                                       this, null, names [i], i);
+                       for (int i = 0; i < names.Length; i++) {
+                               string item = names [i];
+                               if (item == null)
+                                       throw new ArgumentNullException ("names");
+                               generic_params [i] = new GenericTypeParameterBuilder (this, null, item, i);
+                       }
 
                        return generic_params;
                }
index a2b1ff58c52a851bda4ba740ff5aa397c12655b5..7d15dfd3dd93d2237fde7d1265393fb0f4c46d08 100644 (file)
@@ -1,3 +1,8 @@
+2009-10-29  Sebastien Pouliot  <sebastien@ximian.com>
+
+       * ModuleBuilderTest.cs: Add test cases for GetType overloads
+       * TypeBuilderTest.cs: Remove NotWorking from two DefineGenericParameters test case.
+
 2009-10-24  Sebastien Pouliot  <sebastien@ximian.com>
 
        * TypeBuilderTest.cs: Validation test cases for GetConstructor
index a9a4ffc6e763217ea9a5030fc9e6b1cb4aa53a45..21cf8ec2f1bb015c0caff5e6598a9ddd2937b71f 100644 (file)
@@ -418,9 +418,57 @@ namespace MonoTests.System.Reflection.Emit
 #endif
 
                [Test]
-               public void GetGenericArguments_Returns_Null_For_Non_Generic_Methods ()
+               public void GetType_String_Null ()
                {
-                       
+                       AssemblyName an = genAssemblyName ();
+                       AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly (an, AssemblyBuilderAccess.Run);
+                       ModuleBuilder module = ab.DefineDynamicModule ("GetTypeNullCheck");
+
+                       try {
+                               module.GetType (null);
+                               Assert.Fail ("Expected ArgumentNullException for GetType(string)");
+                       }
+                       catch (ArgumentNullException) {
+                       }
+                       try {
+                               module.GetType (null, true); // ignoreCase
+                               Assert.Fail ("Expected ArgumentNullException for GetType(string,bool)");
+                       }
+                       catch (ArgumentNullException) {
+                       }
+                       try {
+                               module.GetType (null, true, true); // throwOnError, ignoreCase
+                               Assert.Fail ("Expected ArgumentNullException for GetType(string,bool,bool)");
+                       }
+                       catch (ArgumentNullException) {
+                       }
+               }
+
+               [Test]
+               public void GetType_String_Empty ()
+               {
+                       AssemblyName an = genAssemblyName ();
+                       AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly (an, AssemblyBuilderAccess.Run);
+                       ModuleBuilder module = ab.DefineDynamicModule ("GetTypeEmptyCheck");
+
+                       try {
+                               module.GetType (String.Empty);
+                               Assert.Fail ("Expected ArgumentNullException for GetType(string)");
+                       }
+                       catch (ArgumentException) {
+                       }
+                       try {
+                               module.GetType (String.Empty, true); // ignoreCase
+                               Assert.Fail ("Expected ArgumentNullException for GetType(string,bool)");
+                       }
+                       catch (ArgumentException) {
+                       }
+                       try {
+                               module.GetType (String.Empty, true, true); // throwOnError, ignoreCase
+                               Assert.Fail ("Expected ArgumentNullException for GetType(string,bool,bool)");
+                       }
+                       catch (ArgumentException) {
+                       }
                }
        }
 }
index cc632f9fd70e288948473acdd0252abbfc1d3ec5..deebf56804de46b61eeabe80cbe73329b5655360 100644 (file)
@@ -2206,13 +2206,17 @@ namespace MonoTests.System.Reflection.Emit
                }
 
                [Test]
-               [ExpectedException (typeof (NullReferenceException))]
                public void Static_GetConstructor_TypeBuilderGeneric_ConstructorInfoNull ()
                {
                        TypeBuilder tb = module.DefineType ("XXX");
                        GenericTypeParameterBuilder [] typeParams = tb.DefineGenericParameters ("T");
                        Type fooOfT = tb.MakeGenericType (typeParams [0]);
-                       TypeBuilder.GetConstructor (fooOfT, null);
+                       try {
+                               TypeBuilder.GetConstructor (fooOfT, null);
+                               Assert.Fail ("Expected NullReferenceException");
+                       }
+                       catch (NullReferenceException) {
+                       }
                }
 #endif
 
@@ -9512,7 +9516,6 @@ namespace MonoTests.System.Reflection.Emit
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void DefineGenericParameters_Names_Empty ()
                {
                        TypeBuilder tb = module.DefineType (genTypeName (), TypeAttributes.Public);
@@ -9530,7 +9533,6 @@ namespace MonoTests.System.Reflection.Emit
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void DefineGenericParameters_Names_Null ()
                {
                        TypeBuilder tb = module.DefineType (genTypeName (), TypeAttributes.Public);