Browse Source

In System.Reflection.Emit:
2009-10-29 Sebastien Pouliot <[email protected]>

* 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 <[email protected]>

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


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

Sebastien Pouliot 16 years ago
parent
commit
1bcf41ee8e

+ 6 - 0
mcs/class/corlib/System.Reflection.Emit/ChangeLog

@@ -1,3 +1,9 @@
+2009-10-29  Sebastien Pouliot  <[email protected]>
+
+	* ModuleBuilder.cs: Add missing 'className' validations in GetType
+	* TypeBuilder.cs: Add missing 'names' validations in 
+	DefineGenericParameters
+
 2009-10-27  Marek Safar  <[email protected]>
 
 	* GenericTypeParameterBuilder.cs: Attributes work under NET_4_0.

+ 7 - 1
mcs/class/corlib/System.Reflection.Emit/ModuleBuilder.cs

@@ -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;

+ 11 - 3
mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs

@@ -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;
 		}

+ 5 - 0
mcs/class/corlib/Test/System.Reflection.Emit/ChangeLog

@@ -1,3 +1,8 @@
+2009-10-29  Sebastien Pouliot  <[email protected]>
+
+	* ModuleBuilderTest.cs: Add test cases for GetType overloads
+	* TypeBuilderTest.cs: Remove NotWorking from two DefineGenericParameters test case.
+
 2009-10-24  Sebastien Pouliot  <[email protected]>
 
 	* TypeBuilderTest.cs: Validation test cases for GetConstructor

+ 50 - 2
mcs/class/corlib/Test/System.Reflection.Emit/ModuleBuilderTest.cs

@@ -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) {
+			}
 		}
 	}
 }

+ 6 - 4
mcs/class/corlib/Test/System.Reflection.Emit/TypeBuilderTest.cs

@@ -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);