added new test for my latest ModuleBuilde.cs change
authorRadek Doulik <rodo@mono-cvs.ximian.com>
Mon, 29 Jan 2007 19:25:03 +0000 (19:25 -0000)
committerRadek Doulik <rodo@mono-cvs.ximian.com>
Mon, 29 Jan 2007 19:25:03 +0000 (19:25 -0000)
svn path=/trunk/mcs/; revision=71905

mcs/tests/test-555.cs [new file with mode: 0644]

diff --git a/mcs/tests/test-555.cs b/mcs/tests/test-555.cs
new file mode 100644 (file)
index 0000000..2fa51da
--- /dev/null
@@ -0,0 +1,61 @@
+using System;
+using System.Reflection;
+using System.Reflection.Emit;
+
+public class Test
+{
+   public static int Main()
+   {
+          AssemblyName assemblyName = new AssemblyName ();
+          assemblyName.Name = "TestAssembly";
+          AssemblyBuilder assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly (assemblyName, AssemblyBuilderAccess.Run);
+
+          ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule ("TestModule");
+          TypeBuilder typeBuilder = moduleBuilder.DefineType ("TestType", TypeAttributes.Public);
+
+          FieldBuilder fieldBuilder = typeBuilder.DefineField ("TestField",
+                                                                                                                       typeof (int),
+                                                                                                                       FieldAttributes.Private);
+
+
+          PropertyBuilder propertyBuilder = typeBuilder.DefineProperty ("TestProperty",
+                                                                                                                                        PropertyAttributes.HasDefault,
+                                                                                                                                        typeof (int),
+                                                                                                                                        new Type[] { typeof (int) });
+
+          MethodBuilder getMethodBuilder = typeBuilder.DefineMethod ("TestGetMethod",
+                                                                                                                                 MethodAttributes.Public,
+                                                                                                                                 typeof (int),
+                                                                                                                                 new Type[] { });
+
+
+          ILGenerator IL = getMethodBuilder.GetILGenerator();
+
+          IL.Emit (OpCodes.Ldarg_0);
+          IL.Emit (OpCodes.Ldfld, fieldBuilder);
+          IL.Emit (OpCodes.Ret);
+
+
+          MethodBuilder setMethodBuilder = typeBuilder.DefineMethod ("TestSetMethod",
+                                                                                                                                 MethodAttributes.Public,
+                                                                                                                                 null,
+                                                                                                                                 new Type[] { typeof(int) });
+          IL = setMethodBuilder.GetILGenerator();
+
+          IL.Emit (OpCodes.Ldarg_0);
+          IL.Emit (OpCodes.Ldarg_1);
+          IL.Emit (OpCodes.Stfld, fieldBuilder);
+          IL.Emit (OpCodes.Ret);
+
+          propertyBuilder.SetGetMethod (getMethodBuilder);
+          propertyBuilder.SetSetMethod (setMethodBuilder);
+
+          typeBuilder.CreateType ();
+
+       Type type = moduleBuilder.GetType ("TestType", true);
+
+          PropertyInfo propertyInfo = type.GetProperty ("TestProperty");
+
+          return 0;
+   }
+}