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;
21 using System.Collections;
23 using NUnit.Framework;
25 namespace MonoTests.System
29 public class ModuleHandleTest
31 public static int foo;
33 public static int bar {
39 public ModuleHandleTest () {
42 public static void gnaf (int i, int j) {
45 public ModuleHandle module;
48 public void SetUp () {
49 module = typeof (ModuleHandleTest).Assembly.GetModules ()[0].ModuleHandle;
53 public void ResolveTypeToken () {
55 Assert.AreEqual (typeof (ModuleHandleTest), Type.GetTypeFromHandle (module.ResolveTypeHandle (typeof (ModuleHandleTest).MetadataToken)));
59 [ExpectedException (typeof (ArgumentNullException))]
60 public void ResolveTypeTokenInvalidHandle () {
61 ModuleHandle.EmptyHandle.ResolveTypeHandle (typeof (ModuleHandleTest).MetadataToken);
65 [ExpectedException (typeof (TypeLoadException))]
66 public void ResolveTypeTokenInvalidTokenType () {
67 module.ResolveTypeHandle (1234);
71 [ExpectedException (typeof (TypeLoadException))]
72 public void ResolveTypeTokenInvalidTokenType2 () {
73 module.ResolveTypeHandle (0x4000001);
79 public void ResolveFieldToken () {
80 FieldInfo fi = typeof (ModuleHandleTest).GetField ("foo");
82 Assert.AreEqual (fi, FieldInfo.GetFieldFromHandle (module.ResolveFieldHandle (fi.MetadataToken)));
86 [ExpectedException (typeof (ArgumentNullException))]
87 public void ResolveFieldTokenInvalidHandle () {
88 ModuleHandle.EmptyHandle.ResolveFieldHandle (typeof (ModuleHandleTest).MetadataToken);
92 [ExpectedException (typeof (Exception))]
93 public void ResolveFieldTokenInvalidTokenType () {
94 module.ResolveFieldHandle (1234);
98 [ExpectedException (typeof (Exception))]
99 public void ResolveFieldTokenInvalidTokenType2 () {
101 module.ResolveFieldHandle (0x2000002);
105 [ExpectedException (typeof (Exception))]
106 public void ResolveFieldTokenInvalidTokenType3 () {
107 /* A memberref which points to a method */
108 module.ResolveFieldHandle (typeof (Console).GetMethod ("ReadLine").MetadataToken);
112 [ExpectedException (typeof (Exception))]
113 public void ResolveFieldTokenInvalidToken () {
114 /* An out-of-range field def */
115 module.ResolveFieldHandle (0x40f0001);
122 public void ResolveMethodToken () {
123 MethodInfo mi = typeof (ModuleHandleTest).GetMethod ("ResolveMethodToken");
125 Assert.AreEqual (mi, MethodInfo.GetMethodFromHandle (module.ResolveMethodHandle (mi.MetadataToken)));
129 [ExpectedException (typeof (ArgumentNullException))]
130 public void ResolveMethodTokenInvalidHandle () {
131 ModuleHandle.EmptyHandle.ResolveMethodHandle (typeof (ModuleHandleTest).GetMethod ("ResolveMethodToken").MetadataToken);
135 [ExpectedException (typeof (Exception))]
136 public void ResolveMethodTokenInvalidTokenType () {
137 module.ResolveMethodHandle (1234);
141 [ExpectedException (typeof (Exception))]
142 public void ResolveMethodTokenInvalidTokenType2 () {
144 module.ResolveMethodHandle (0x2000002);
148 [ExpectedException (typeof (Exception))]
149 public void ResolveMethodTokenInvalidTokenType3 () {
150 /* A memberref which points to a field */
151 module.ResolveMethodHandle (typeof (Type).GetField ("Delimiter").MetadataToken);
155 [ExpectedException (typeof (Exception))]
156 public void ResolveMethodTokenInvalidToken () {
157 /* An out-of-range method def */
158 module.ResolveMethodHandle (0x60f0001);
161 /* it is not public in 2.0 RTM.
163 public void GetPEKind () {
164 PortableExecutableKinds pe_kind;
165 ImageFileMachine machine;
167 module.GetPEKind (out pe_kind, out machine);
169 Assert.AreEqual (PortableExecutableKinds.ILOnly, pe_kind);
173 [ExpectedException (typeof (ArgumentNullException))]
174 public void GetPEKindInvalidHandle () {
175 PortableExecutableKinds pe_kind;
176 ImageFileMachine machine;
178 ModuleHandle.EmptyHandle.GetPEKind (out pe_kind, out machine);