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
17 using System.Threading;
18 using System.Reflection;
20 using System.Collections;
22 using NUnit.Framework;
24 namespace MonoTests.System
28 public class ModuleHandleTest
30 public static int foo;
32 public static int bar {
38 public ModuleHandleTest () {
41 public static void gnaf (int i, int j) {
44 public ModuleHandle module;
47 public void SetUp () {
48 module = typeof (ModuleHandleTest).Assembly.GetModules ()[0].ModuleHandle;
52 public void ResolveTypeToken () {
54 Assert.AreEqual (typeof (ModuleHandleTest), Type.GetTypeFromHandle (module.ResolveTypeHandle (typeof (ModuleHandleTest).MetadataToken)));
58 [ExpectedException (typeof (ArgumentNullException))]
59 public void ResolveTypeTokenInvalidHandle () {
60 ModuleHandle.EmptyHandle.ResolveTypeHandle (typeof (ModuleHandleTest).MetadataToken);
64 [ExpectedException (typeof (TypeLoadException))]
65 public void ResolveTypeTokenInvalidTokenType () {
66 module.ResolveTypeHandle (1234);
70 [ExpectedException (typeof (TypeLoadException))]
71 public void ResolveTypeTokenInvalidTokenType2 () {
72 module.ResolveTypeHandle (0x4000001);
78 public void ResolveFieldToken () {
79 FieldInfo fi = typeof (ModuleHandleTest).GetField ("foo");
81 Assert.AreEqual (fi, FieldInfo.GetFieldFromHandle (module.ResolveFieldHandle (fi.MetadataToken)));
85 [ExpectedException (typeof (ArgumentNullException))]
86 public void ResolveFieldTokenInvalidHandle () {
87 ModuleHandle.EmptyHandle.ResolveFieldHandle (typeof (ModuleHandleTest).MetadataToken);
91 [ExpectedException (typeof (Exception))]
92 public void ResolveFieldTokenInvalidTokenType () {
93 module.ResolveFieldHandle (1234);
97 [ExpectedException (typeof (Exception))]
98 public void ResolveFieldTokenInvalidTokenType2 () {
100 module.ResolveFieldHandle (0x2000002);
104 [ExpectedException (typeof (Exception))]
105 public void ResolveFieldTokenInvalidTokenType3 () {
106 /* A memberref which points to a method */
107 module.ResolveFieldHandle (typeof (Console).GetMethod ("ReadLine").MetadataToken);
111 [ExpectedException (typeof (Exception))]
112 public void ResolveFieldTokenInvalidToken () {
113 /* An out-of-range field def */
114 module.ResolveFieldHandle (0x40f0001);
121 public void ResolveMethodToken () {
122 MethodInfo mi = typeof (ModuleHandleTest).GetMethod ("ResolveMethodToken");
124 Assert.AreEqual (mi, MethodInfo.GetMethodFromHandle (module.ResolveMethodHandle (mi.MetadataToken)));
128 [ExpectedException (typeof (ArgumentNullException))]
129 public void ResolveMethodTokenInvalidHandle () {
130 ModuleHandle.EmptyHandle.ResolveMethodHandle (typeof (ModuleHandleTest).GetMethod ("ResolveMethodToken").MetadataToken);
134 [ExpectedException (typeof (Exception))]
135 public void ResolveMethodTokenInvalidTokenType () {
136 module.ResolveMethodHandle (1234);
140 [ExpectedException (typeof (Exception))]
141 public void ResolveMethodTokenInvalidTokenType2 () {
143 module.ResolveMethodHandle (0x2000002);
147 [ExpectedException (typeof (Exception))]
148 public void ResolveMethodTokenInvalidTokenType3 () {
149 /* A memberref which points to a field */
150 module.ResolveMethodHandle (typeof (Type).GetField ("Delimiter").MetadataToken);
154 [ExpectedException (typeof (Exception))]
155 public void ResolveMethodTokenInvalidToken () {
156 /* An out-of-range method def */
157 module.ResolveMethodHandle (0x60f0001);
160 /* it is not public in 2.0 RTM.
162 public void GetPEKind () {
163 PortableExecutableKinds pe_kind;
164 ImageFileMachine machine;
166 module.GetPEKind (out pe_kind, out machine);
168 Assert.AreEqual (PortableExecutableKinds.ILOnly, pe_kind);
172 [ExpectedException (typeof (ArgumentNullException))]
173 public void GetPEKindInvalidHandle () {
174 PortableExecutableKinds pe_kind;
175 ImageFileMachine machine;
177 ModuleHandle.EmptyHandle.GetPEKind (out pe_kind, out machine);