2 // ModuleHandleTest - NUnit Test Cases for the ModuleHandle class
4 // Zoltan Varga (vargaz@freemail.hu)
6 // (C) Ximian, Inc. http://www.ximian.com
12 // - dynamic assemblies
18 using System.Threading;
19 using System.Reflection;
20 using System.Reflection.Emit;
22 using System.Collections;
24 using NUnit.Framework;
26 namespace MonoTests.System
30 public class ModuleHandleTest : Assertion
32 public static int foo;
34 public static int bar {
40 public ModuleHandleTest () {
43 public static void gnaf (int i, int j) {
46 public ModuleHandle module;
49 public void SetUp () {
50 module = typeof (ModuleHandleTest).Assembly.GetModules ()[0].ModuleHandle;
54 public void ResolveTypeToken () {
56 AssertEquals (typeof (ModuleHandleTest), Type.GetTypeFromHandle (module.ResolveTypeHandle (typeof (ModuleHandleTest).MetadataToken)));
60 [ExpectedException (typeof (ArgumentNullException))]
61 public void ResolveTypeTokenInvalidHandle () {
62 ModuleHandle.EmptyHandle.ResolveTypeHandle (typeof (ModuleHandleTest).MetadataToken);
66 [ExpectedException (typeof (TypeLoadException))]
67 public void ResolveTypeTokenInvalidTokenType () {
68 module.ResolveTypeHandle (1234);
72 [ExpectedException (typeof (TypeLoadException))]
73 public void ResolveTypeTokenInvalidTokenType2 () {
74 module.ResolveTypeHandle (0x4000001);
80 public void ResolveFieldToken () {
81 FieldInfo fi = typeof (ModuleHandleTest).GetField ("foo");
83 AssertEquals (fi, FieldInfo.GetFieldFromHandle (module.ResolveFieldHandle (fi.MetadataToken)));
87 [ExpectedException (typeof (ArgumentNullException))]
88 public void ResolveFieldTokenInvalidHandle () {
89 ModuleHandle.EmptyHandle.ResolveFieldHandle (typeof (ModuleHandleTest).MetadataToken);
93 [ExpectedException (typeof (Exception))]
94 public void ResolveFieldTokenInvalidTokenType () {
95 module.ResolveFieldHandle (1234);
99 [ExpectedException (typeof (Exception))]
100 public void ResolveFieldTokenInvalidTokenType2 () {
102 module.ResolveFieldHandle (0x2000002);
106 [ExpectedException (typeof (Exception))]
107 public void ResolveFieldTokenInvalidTokenType3 () {
108 /* A memberref which points to a method */
109 module.ResolveFieldHandle (typeof (Console).GetMethod ("ReadLine").MetadataToken);
113 [ExpectedException (typeof (Exception))]
114 public void ResolveFieldTokenInvalidToken () {
115 /* An out-of-range field def */
116 module.ResolveFieldHandle (0x40f0001);
123 public void ResolveMethodToken () {
124 MethodInfo mi = typeof (ModuleHandleTest).GetMethod ("ResolveMethodToken");
126 AssertEquals (mi, MethodInfo.GetMethodFromHandle (module.ResolveMethodHandle (mi.MetadataToken)));
130 [ExpectedException (typeof (ArgumentNullException))]
131 public void ResolveMethodTokenInvalidHandle () {
132 ModuleHandle.EmptyHandle.ResolveMethodHandle (typeof (ModuleHandleTest).GetMethod ("ResolveMethodToken").MetadataToken);
136 [ExpectedException (typeof (Exception))]
137 public void ResolveMethodTokenInvalidTokenType () {
138 module.ResolveMethodHandle (1234);
142 [ExpectedException (typeof (Exception))]
143 public void ResolveMethodTokenInvalidTokenType2 () {
145 module.ResolveMethodHandle (0x2000002);
149 [ExpectedException (typeof (Exception))]
150 public void ResolveMethodTokenInvalidTokenType3 () {
151 /* A memberref which points to a field */
152 module.ResolveMethodHandle (typeof (Type).GetField ("Delimiter").MetadataToken);
156 [ExpectedException (typeof (Exception))]
157 public void ResolveMethodTokenInvalidToken () {
158 /* An out-of-range method def */
159 module.ResolveMethodHandle (0x60f0001);
162 /* it is not public in 2.0 RTM.
164 public void GetPEKind () {
165 PortableExecutableKinds pe_kind;
166 ImageFileMachine machine;
168 module.GetPEKind (out pe_kind, out machine);
170 AssertEquals (PortableExecutableKinds.ILOnly, pe_kind);
174 [ExpectedException (typeof (ArgumentNullException))]
175 public void GetPEKindInvalidHandle () {
176 PortableExecutableKinds pe_kind;
177 ImageFileMachine machine;
179 ModuleHandle.EmptyHandle.GetPEKind (out pe_kind, out machine);