2004-09-22 Zoltan Varga <vargaz@freemail.hu>
authorZoltan Varga <vargaz@gmail.com>
Wed, 22 Sep 2004 13:05:24 +0000 (13:05 -0000)
committerZoltan Varga <vargaz@gmail.com>
Wed, 22 Sep 2004 13:05:24 +0000 (13:05 -0000)
* ModuleTest.cs: Add tests for NET 2.0 ResolveXXX methods.

svn path=/trunk/mcs/; revision=34218

mcs/class/corlib/Test/System.Reflection/ChangeLog
mcs/class/corlib/Test/System.Reflection/ModuleTest.cs

index 3448dcbfc16a1788a4c6fac530fdcaddf5f29f36..33c9155e2031e05b3567b8213c3ca5c21ea8d434 100644 (file)
@@ -1,3 +1,7 @@
+2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
+
+       * ModuleTest.cs: Add tests for NET 2.0 ResolveXXX methods.
+
 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
 
        * AssemblyTest.cs: Add tests for MetadataToken and ManifestModule.
index 2169790f3e2d2ec4a24c916ee387a858161702df..c1fdbfe9fca967ffd7512e7029bf8d8fdd70d0a0 100644 (file)
@@ -118,6 +118,151 @@ public class ModuleTest : Assertion
                AssertEquals (m2.GetField ("DATA", BindingFlags.Public), null);\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
+\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