X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2Fcorlib%2FTest%2FSystem.Reflection.Emit%2FModuleBuilderTest.cs;h=88ae954687a88ce11d5f10cb3545a875e77c0d35;hb=4df88aea4b841eed9614455a8b71d4a446a44cc6;hp=96102b18920561ba0437d271641a8b650af65821;hpb=381708c6cd7a339c51800ea786881f6474214d5a;p=mono.git diff --git a/mcs/class/corlib/Test/System.Reflection.Emit/ModuleBuilderTest.cs b/mcs/class/corlib/Test/System.Reflection.Emit/ModuleBuilderTest.cs index 96102b18920..88ae954687a 100644 --- a/mcs/class/corlib/Test/System.Reflection.Emit/ModuleBuilderTest.cs +++ b/mcs/class/corlib/Test/System.Reflection.Emit/ModuleBuilderTest.cs @@ -136,6 +136,7 @@ namespace MonoTests.System.Reflection.Emit } [Test] + [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly public void DefineType_Name_Null () { AssemblyBuilder ab = genAssembly (); @@ -152,6 +153,7 @@ namespace MonoTests.System.Reflection.Emit } [Test] + [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly public void DefineType_Name_Empty () { AssemblyBuilder ab = genAssembly (); @@ -169,6 +171,7 @@ namespace MonoTests.System.Reflection.Emit } [Test] + [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly public void DefineType_Name_NullChar () { AssemblyBuilder ab = genAssembly (); @@ -188,6 +191,7 @@ namespace MonoTests.System.Reflection.Emit } [Test] + [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly public void DefineType_InterfaceNotAbstract () { AssemblyBuilder ab = genAssembly (); @@ -224,6 +228,7 @@ namespace MonoTests.System.Reflection.Emit } [Test] + [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly public void DefineType_Parent_Interface () { TypeBuilder tb; @@ -241,6 +246,7 @@ namespace MonoTests.System.Reflection.Emit } [Test] + [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly public void DefineType_TypeSize () { AssemblyBuilder ab = genAssembly (); @@ -252,6 +258,7 @@ namespace MonoTests.System.Reflection.Emit } [Test] + [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly [ExpectedException (typeof (ArgumentException))] public void DuplicateTypeName () { AssemblyBuilder ab = genAssembly (); @@ -267,6 +274,7 @@ namespace MonoTests.System.Reflection.Emit } [Test] + [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly public void DuplicateSymbolDocument () { AssemblyBuilder ab = genAssembly (); @@ -720,5 +728,84 @@ 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); + } + + [Test] + public void GetType () + { + AssemblyBuilder ab = genAssembly (); + ModuleBuilder module = ab.DefineDynamicModule ("foo.dll", "foo.dll", true); + TypeBuilder tb = module.DefineType ("t1", TypeAttributes.Public); + + Assert.AreEqual ("t1[]", module.GetType ("t1[]").FullName); + Assert.AreEqual ("t1*", module.GetType ("t1*").FullName); + Assert.AreEqual ("t1&", module.GetType ("t1&").FullName); + Assert.AreEqual ("t1[]&", module.GetType ("t1[]&").FullName); + } } }