[tests] No Mono.CompilerServices.SymbolWriter in XA
[mono.git] / mcs / class / corlib / Test / System.Reflection.Emit / ModuleBuilderTest.cs
index 783f0937f666865389c20e99b0ed659c76d84311..d9292c16ad2733324e1ec08b5321cd636d1f1213 100644 (file)
@@ -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,19 @@ namespace MonoTests.System.Reflection.Emit
                }
 
                [Test]
+               [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly
+               public void DefineType_TypeSize ()
+               {
+                       AssemblyBuilder ab = genAssembly ();
+                       ModuleBuilder mb = ab.DefineDynamicModule ("foo.dll", "foo.dll", true);
+
+                       TypeBuilder tb = mb.DefineType ("Foo", TypeAttributes.Public | TypeAttributes.Sealed | TypeAttributes.SequentialLayout,
+                               typeof (ValueType), 1);
+                       Assert.AreEqual (1, tb.Size);
+               }
+
+               [Test]
+               [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly
                [ExpectedException (typeof (ArgumentException))]
                public void DuplicateTypeName () {
                        AssemblyBuilder ab = genAssembly ();
@@ -256,6 +274,7 @@ namespace MonoTests.System.Reflection.Emit
                }
 
                [Test]
+               [Category ("AndroidNotWorking")] // Missing Mono.CompilerServices.SymbolWriter assembly
                public void DuplicateSymbolDocument ()
                {
                        AssemblyBuilder ab = genAssembly ();
@@ -360,6 +379,32 @@ namespace MonoTests.System.Reflection.Emit
                        Assert.AreEqual ("Frub", mi.Name);
                }
 
+               [Test]
+               public void GetMethodTokenCrossMethodBuilders ()
+               {
+                       AssemblyBuilder ab = genAssembly ();
+                       ModuleBuilder moduleb = ab.DefineDynamicModule ("foo.dll", "foo.dll");
+
+                       TypeBuilder tb = moduleb.DefineType ("foo");
+                       MethodBuilder mb = tb.DefineMethod("Frub", MethodAttributes.Static, null, new Type[] { typeof(IntPtr) });
+                       int tok = mb.GetToken().Token;
+                       mb.SetImplementationFlags(MethodImplAttributes.NoInlining);
+                       ILGenerator ilgen = mb.GetILGenerator();
+                       ilgen.Emit(OpCodes.Ret);
+
+                       tb.CreateType ();
+
+                       var mi = (MethodInfo) moduleb.ResolveMember (tok);
+                       Assert.IsNotNull (mi);
+
+                       ModuleBuilder moduleb2 = ab.DefineDynamicModule ("foo2.dll", "foo2.dll");
+                       var tok2 = moduleb2.GetMethodToken (mi).Token;
+
+                       MethodBase mi2 = moduleb.ResolveMethod (tok2);
+                       Assert.IsNotNull (mi2);
+                       Assert.AreEqual ("Frub", mi.Name);
+               }
+
                [Test]
                public void ResolveMemberField ()
                {