// Zoltan Varga (vargaz@freemail.hu)\r
//\r
// (C) Ximian, Inc. http://www.ximian.com\r
+// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
//\r
-//\r
-\r
\r
using System;\r
using System.Threading;\r
using System.Reflection;\r
using System.Reflection.Emit;\r
+using System.Runtime.Serialization;
using System.IO;\r
using System.Collections;\r
\r
// Some of these tests overlap with the tests for ModuleBuilder\r
\r
[Test]\r
+ [Category("NotDotNet")] // path length can cause suprious failures\r
public void TestGlobalData () {\r
\r
string name = "moduletest-assembly";\r
AssertEquals (m2.GetField ("DATA"), null);\r
AssertEquals (m2.GetField ("DATA", BindingFlags.Public), null);\r
}\r
- \r
+\r
+#if NET_2_0\r
+\r
+ [Test]\r
+ public void ResolveType () {\r
+ Type t = typeof (ModuleTest);\r
+ Module module = t.Module;\r
+\r
+ AssertEquals (t, module.ResolveType (t.MetadataToken));\r
+\r
+ /* We currently throw ArgumentException for this one */\r
+ try {\r
+ module.ResolveType (1234);\r
+ Fail ();\r
+ }\r
+ catch (ArgumentException) {\r
+ }\r
+\r
+ try {\r
+ module.ResolveType (t.GetMethod ("ResolveType").MetadataToken);\r
+ Fail ();\r
+ }\r
+ catch (ArgumentException) {\r
+ }\r
+\r
+ try {\r
+ module.ResolveType (t.MetadataToken + 10000);\r
+ Fail ();\r
+ }\r
+ catch (ArgumentOutOfRangeException) {\r
+ }\r
+ }\r
+\r
+ [Test]\r
+ public void ResolveMethod () {\r
+ Type t = typeof (ModuleTest);\r
+ Module module = t.Module;\r
+\r
+ AssertEquals (t.GetMethod ("ResolveMethod"), module.ResolveMethod (t.GetMethod ("ResolveMethod").MetadataToken));\r
+\r
+ try {\r
+ module.ResolveMethod (1234);\r
+ Fail ();\r
+ }\r
+ catch (ArgumentException) {\r
+ }\r
+\r
+ try {\r
+ module.ResolveMethod (t.MetadataToken);\r
+ Fail ();\r
+ }\r
+ catch (ArgumentException) {\r
+ }\r
+\r
+ try {\r
+ module.ResolveMethod (t.GetMethod ("ResolveMethod").MetadataToken + 10000);\r
+ Fail ();\r
+ }\r
+ catch (ArgumentOutOfRangeException) {\r
+ }\r
+ }\r
+\r
+ public int aField;\r
+\r
+ [Test]\r
+ public void ResolveField () {\r
+ Type t = typeof (ModuleTest);\r
+ Module module = t.Module;\r
+\r
+ AssertEquals (t.GetField ("aField"), module.ResolveField (t.GetField ("aField").MetadataToken));\r
+\r
+ try {\r
+ module.ResolveField (1234);\r
+ Fail ();\r
+ }\r
+ catch (ArgumentException) {\r
+ }\r
+\r
+ try {\r
+ module.ResolveField (t.MetadataToken);\r
+ Fail ();\r
+ }\r
+ catch (ArgumentException) {\r
+ }\r
+\r
+ try {\r
+ module.ResolveField (t.GetField ("aField").MetadataToken + 10000);\r
+ Fail ();\r
+ }\r
+ catch (ArgumentOutOfRangeException) {\r
+ }\r
+ }\r
+
+ [Ignore ("it breaks nunit-console.exe execution under .NET 2.0")]\r
+ [Test]\r
+ public void ResolveString () {\r
+ Type t = typeof (ModuleTest);\r
+ Module module = t.Module;\r
+\r
+ for (int i = 1; i < 10000; ++i) {\r
+ try {\r
+ module.ResolveString (0x70000000 + i);\r
+ }\r
+ catch (Exception) {\r
+ }\r
+ }\r
+\r
+ try {\r
+ module.ResolveString (1234);\r
+ Fail ();\r
+ }\r
+ catch (ArgumentException) {\r
+ }\r
+\r
+ try {\r
+ module.ResolveString (t.MetadataToken);\r
+ Fail ();\r
+ }\r
+ catch (ArgumentException) {\r
+ }\r
+\r
+ try {\r
+ module.ResolveString (0x70000000 | 10000);\r
+ Fail ();\r
+ }\r
+ catch (ArgumentOutOfRangeException) {\r
+ }\r
+ }\r
+\r
+\r
+ [Test]\r
+ public void ResolveMember () {\r
+ Type t = typeof (ModuleTest);\r
+ Module module = t.Module;\r
+\r
+ AssertEquals (t, module.ResolveMember (t.MetadataToken));\r
+ AssertEquals (t.GetField ("aField"), module.ResolveMember (t.GetField ("aField").MetadataToken));\r
+ AssertEquals (t.GetMethod ("ResolveMember"), module.ResolveMember (t.GetMethod ("ResolveMember").MetadataToken));\r
+\r
+ try {\r
+ module.ResolveMember (module.MetadataToken);\r
+ }\r
+ catch (ArgumentException) {\r
+ }\r
+ }\r
+#endif\r
+\r
+ [Test]\r
+ public void FindTypes () {\r
+ Module m = typeof (ModuleTest).Module;\r
+\r
+ Type[] t;\r
+\r
+ t = m.FindTypes (Module.FilterTypeName, "FindTypesTest*");\r
+ AssertEquals (2, t.Length);\r
+ AssertEquals ("FindTypesTestFirstClass", t [0].Name);\r
+ AssertEquals ("FindTypesTestSecondClass", t [1].Name);\r
+ t = m.FindTypes (Module.FilterTypeNameIgnoreCase, "findtypestest*");\r
+ AssertEquals (2, t.Length);\r
+ AssertEquals ("FindTypesTestFirstClass", t [0].Name);\r
+ AssertEquals ("FindTypesTestSecondClass", t [1].Name);\r
+ }\r
+
+ [Test]
+ [ExpectedException (typeof (ArgumentNullException))]
+ public void GetObjectData_Null ()
+ {
+ Module m = typeof (ModuleTest).Module;\r
+ m.GetObjectData (null, new StreamingContext (StreamingContextStates.All));\r
+ }\r
+\r
+ class FindTypesTestFirstClass { \r
+ }\r
+\r
+ class FindTypesTestSecondClass {\r
+ }\r
+\r
private static void AssertArrayEqualsSorted (Array o1, Array o2) {\r
Array s1 = (Array)o1.Clone ();\r
Array s2 = (Array)o2.Clone ();\r