Merge pull request #3749 from BrzVlad/fix-mips-fix
[mono.git] / mcs / class / corlib / Test / System.Reflection.Emit / ModuleBuilderTest.cs
index aa6f1ba35833bdb3b1c4bf28e54fedd5b0a83718..7f5e1ee5000932c728fd8a48396d04bb37744518 100644 (file)
@@ -506,6 +506,8 @@ namespace MonoTests.System.Reflection.Emit
                }
 
                [Test]
+               // The token is not guaranteed to be 0x0a000001
+               [Category ("NotWorking")]
                public void ResolveFieldMemberRefWithGenericArguments ()
                {
                        var assembly = genAssembly ();
@@ -533,6 +535,8 @@ namespace MonoTests.System.Reflection.Emit
                }
 
                [Test]
+               // The token is not guaranteed to be 0x0a000002
+               [Category ("NotWorking")]
                public void ResolveMethodMemberRefWithGenericArguments ()
                {
                        var assembly = genAssembly ();
@@ -566,6 +570,8 @@ namespace MonoTests.System.Reflection.Emit
                }
 
                [Test]
+               // The token is not guaranteed to be 0x2b000001
+               [Category("NotWorking")]
                public void ResolveMethodSpecWithGenericArguments ()
                {
                        var assembly = genAssembly ();
@@ -729,6 +735,46 @@ namespace MonoTests.System.Reflection.Emit
                        }
                }
 
+               [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 ()
                {
@@ -754,5 +800,18 @@ namespace MonoTests.System.Reflection.Emit
                        // 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);
+               }
        }
 }