Imported Upstream version 4.3.2.467

Former-commit-id: 9c2cb47f45fa221e661ab616387c9cda183f283d
This commit is contained in:
Xamarin Public Jenkins
2016-02-22 11:00:01 -05:00
parent f302175246
commit f3e3aab35a
4097 changed files with 122406 additions and 82300 deletions

View File

@ -728,5 +728,71 @@ namespace MonoTests.System.Reflection.Emit
catch (ArgumentException) {
}
}
[Test]
public void GetType_Escaped_Chars ()
{
AssemblyName an = genAssemblyName ();
AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly (an, AssemblyBuilderAccess.Run);
ModuleBuilder module = ab.DefineDynamicModule ("mod");
var tb = module.DefineType ("NameSpace,+*&[]\\.Type,+*&[]\\",
TypeAttributes.Class | TypeAttributes.Public);
var nestedTb = tb.DefineNestedType ("Nested,+*&[]\\",
TypeAttributes.Class | TypeAttributes.NestedPublic);
var escapedOuterName =
"NameSpace\\,\\+\\*\\&\\[\\]\\\\"
+ "."
+ "Type\\,\\+\\*\\&\\[\\]\\\\";
var escapedNestedName =
escapedOuterName
+ "+"
+ "Nested\\,\\+\\*\\&\\[\\]\\\\";
Assert.AreEqual (escapedOuterName, tb.FullName);
Assert.AreEqual (escapedNestedName, nestedTb.FullName);
Type outerCreatedTy = tb.CreateType ();
Type nestedCreatedTy = nestedTb.CreateType ();
Type outerTy = module.GetType (escapedOuterName);
Type nestedTy = module.GetType (escapedNestedName);
Assert.IsNotNull (outerTy, "A");
Assert.IsNotNull (nestedTy, "B");
Assert.AreEqual (escapedNestedName, nestedTy.FullName);
Assert.AreEqual (nestedCreatedTy, nestedTy);
}
[Test]
public void GetMethodTokenNullParam ()
{
AssemblyName an = genAssemblyName ();
AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly (an, AssemblyBuilderAccess.Run);
ModuleBuilder module = ab.DefineDynamicModule ("mod");
var method = typeof (object).GetMethod ("GetType");
// ArgumentNullException should not occur.
module.GetMethodToken (method, null);
}
[Test]
public void GetConstructorTokenNullParam ()
{
AssemblyName an = genAssemblyName ();
AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly (an, AssemblyBuilderAccess.Run);
ModuleBuilder module = ab.DefineDynamicModule ("mod");
var method = typeof (object).GetConstructor (Type.EmptyTypes);
// ArgumentNullException should not occur.
module.GetConstructorToken (method, null);
}
}
}