Author: zoltan
Date: 2007-12-10 16:26:16 -0500 (Mon, 10 Dec 2007)
New Revision: 91067

Modified:
   trunk/mcs/class/corlib/Test/System.Reflection.Emit/ChangeLog
   trunk/mcs/class/corlib/Test/System.Reflection.Emit/ModuleBuilderTest.cs
Log:
2007-12-10  Zoltan Varga  <[EMAIL PROTECTED]>

        * ModuleBuilderTest.cs: Simplify some code. Add tests for ResolveField 
()
        and FieldBuilders.


Modified: trunk/mcs/class/corlib/Test/System.Reflection.Emit/ChangeLog
===================================================================
--- trunk/mcs/class/corlib/Test/System.Reflection.Emit/ChangeLog        
2007-12-10 21:24:33 UTC (rev 91066)
+++ trunk/mcs/class/corlib/Test/System.Reflection.Emit/ChangeLog        
2007-12-10 21:26:16 UTC (rev 91067)
@@ -1,3 +1,8 @@
+2007-12-10  Zoltan Varga  <[EMAIL PROTECTED]>
+
+       * ModuleBuilderTest.cs: Simplify some code. Add tests for ResolveField 
()
+       and FieldBuilders.
+
 2007-11-16  Atsushi Enomoto  <[EMAIL PROTECTED]>
 
        * SignatureHelperTest.cs : new test.

Modified: 
trunk/mcs/class/corlib/Test/System.Reflection.Emit/ModuleBuilderTest.cs
===================================================================
--- trunk/mcs/class/corlib/Test/System.Reflection.Emit/ModuleBuilderTest.cs     
2007-12-10 21:24:33 UTC (rev 91066)
+++ trunk/mcs/class/corlib/Test/System.Reflection.Emit/ModuleBuilderTest.cs     
2007-12-10 21:26:16 UTC (rev 91067)
@@ -24,16 +24,17 @@
        [TestFixture]
        public class ModuleBuilderTest
        {
-               static string TempFolder = Path.Combine (Path.GetTempPath (), 
"MT.S.R.E.MBT");
+               static string tempDir = Path.Combine (Path.GetTempPath (), 
typeof (ModuleBuilderTest).FullName);
+               static int nameIndex = 0;
 
                [SetUp]
                public void SetUp ()
                {
                        Random AutoRand = new Random ();
-                       string TempPath = TempFolder;
-                       while (Directory.Exists (TempFolder))
-                               TempFolder = Path.Combine (TempPath, 
AutoRand.Next ().ToString ());
-                       Directory.CreateDirectory (TempFolder);
+                       string basePath = tempDir;
+                       while (Directory.Exists (tempDir))
+                               tempDir = Path.Combine (basePath, AutoRand.Next 
().ToString ());
+                       Directory.CreateDirectory (tempDir);
                }
 
                [TearDown]
@@ -42,20 +43,29 @@
                        try {
                                // This throws an exception under MS.NET, since 
the directory contains loaded
                                // assemblies.
-                               Directory.Delete (TempFolder, true);
+                               Directory.Delete (tempDir, true);
                        } catch (Exception) {
                        }
                }
 
+               private AssemblyName genAssemblyName ()
+               {
+                       AssemblyName assemblyName = new AssemblyName();
+                       assemblyName.Name = typeof (ModuleBuilderTest).FullName 
+ (nameIndex ++);
+                       return assemblyName;
+               }
+
+               private AssemblyBuilder genAssembly ()
+               {
+                       return Thread.GetDomain ().DefineDynamicAssembly 
(genAssemblyName (),
+                                                                               
                                          AssemblyBuilderAccess.RunAndSave,
+                                                                               
                                          tempDir);
+               }
+
                [Test]
                public void TestIsTransient ()
                {
-                       AssemblyName assemblyName = new AssemblyName ();
-                       assemblyName.Name = "foo";
-
-                       AssemblyBuilder ab
-                               = Thread.GetDomain ().DefineDynamicAssembly (
-                                       assemblyName, 
AssemblyBuilderAccess.RunAndSave, TempFolder);
+                       AssemblyBuilder ab = genAssembly ();
                        ModuleBuilder mb1 = ab.DefineDynamicModule ("foo.dll");
                        Assert.IsTrue (mb1.IsTransient (), "#1");
                        ModuleBuilder mb2 = ab.DefineDynamicModule ("foo2.dll", 
"foo2.dll");
@@ -67,15 +77,9 @@
                [Test]
                public void TestGlobalData ()
                {
+                       AssemblyBuilder ab = genAssembly ();
 
-                       AssemblyName assemblyName = new AssemblyName ();
-                       assemblyName.Name = "foo";
-
-                       AssemblyBuilder ab
-                               = Thread.GetDomain ().DefineDynamicAssembly (
-                                       assemblyName, 
AssemblyBuilderAccess.RunAndSave, TempFolder);
-
-                       string resfile = Path.Combine (TempFolder, "res");
+                       string resfile = Path.Combine (tempDir, "res");
                        using (StreamWriter sw = new StreamWriter (resfile)) {
                                sw.WriteLine ("FOO");
                        }
@@ -91,7 +95,7 @@
 
                        ab.Save ("foo.dll");
 
-                       Assembly assembly = Assembly.LoadFrom (Path.Combine 
(TempFolder, "foo.dll"));
+                       Assembly assembly = Assembly.LoadFrom (Path.Combine 
(tempDir, "foo.dll"));
 
                        Module module = assembly.GetLoadedModules () [0];
 
@@ -114,10 +118,7 @@
                [Test]
                public void TestGlobalMethods ()
                {
-                       AssemblyName an = new AssemblyName ();
-                       an.Name = "TestGlobalMethods";
-                       AssemblyBuilder builder =
-                               AppDomain.CurrentDomain.DefineDynamicAssembly 
(an, AssemblyBuilderAccess.Run);
+                       AssemblyBuilder builder = genAssembly ();
                        ModuleBuilder module = builder.DefineDynamicModule 
("MessageModule");
                        MethodBuilder method = module.DefinePInvokeMethod 
("printf", "libc.so",
                                                                                
                                          MethodAttributes.PinvokeImpl | 
MethodAttributes.Static | MethodAttributes.Public,
@@ -133,13 +134,7 @@
                [Test]
                public void TestDefineType_InterfaceNotAbstract ()
                {
-                       AssemblyName assemblyName = new AssemblyName ();
-                       assemblyName.Name = 
"ModuleBuilderTest.DuplicateSymbolDocument";
-
-                       AssemblyBuilder ab
-                               = Thread.GetDomain ().DefineDynamicAssembly (
-                                       assemblyName, 
AssemblyBuilderAccess.RunAndSave, TempFolder);
-
+                       AssemblyBuilder ab = genAssembly ();
                        ModuleBuilder mb = ab.DefineDynamicModule ("foo.dll", 
"foo.dll", true);
 
                        try {
@@ -177,13 +172,7 @@
                [Test]
                public void DuplicateSymbolDocument ()
                {
-                       AssemblyName assemblyName = new AssemblyName ();
-                       assemblyName.Name = 
"ModuleBuilderTest.DuplicateSymbolDocument";
-
-                       AssemblyBuilder ab
-                               = Thread.GetDomain ().DefineDynamicAssembly (
-                                       assemblyName, 
AssemblyBuilderAccess.RunAndSave, TempFolder);
-
+                       AssemblyBuilder ab = genAssembly ();
                        ModuleBuilder mb = ab.DefineDynamicModule ("foo.dll", 
"foo.dll", true);
 
                        // Check that it is possible to redefine a symbol 
document
@@ -198,10 +187,7 @@
                [Test] // Test case for #80435.
                public void GetArrayMethodToStringTest ()
                {
-                       AssemblyName name = new AssemblyName ();
-                       name.Name = "a";
-                       AssemblyBuilder assembly = 
AppDomain.CurrentDomain.DefineDynamicAssembly (name, 
AssemblyBuilderAccess.RunAndSave);
-
+                       AssemblyBuilder assembly = genAssembly ();
                        ModuleBuilder module = assembly.DefineDynamicModule 
("m", "test.dll");
 
                        Type [] myArrayClass = new Type [1];
@@ -226,5 +212,32 @@
                        for (int i = 0; i < s1.Length; ++i)
                                Assert.AreEqual (s1.GetValue (i), s2.GetValue 
(i), "#2: " + i);
                }
+
+#if NET_2_0
+               [Test]
+               public void ResolveFieldTokenFieldBuilder ()
+               {
+                       AssemblyBuilder ab = genAssembly ();
+                       ModuleBuilder mb = ab.DefineDynamicModule ("foo.dll", 
"foo.dll");
+
+                       TypeBuilder tb = mb.DefineType ("foo");
+                       FieldBuilder fb = tb.DefineField ("foo", typeof (int), 
0);
+                       tb.CreateType ();
+
+                       FieldInfo fi = mb.ResolveField (fb.GetToken ().Token);
+                       Assert.IsNotNull (fi);
+                       Assert.AreEqual ("foo", fi.Name);
+               }
+
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void ResolveFieldTokenInvalidToken ()
+               {
+                       AssemblyBuilder ab = genAssembly ();
+                       ModuleBuilder mb = ab.DefineDynamicModule ("foo.dll", 
"foo.dll");
+
+                       mb.ResolveField (0x4001234);
+               }
+#endif
        }
 }

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to