[Pkg-mono-svn-commits] [mono] 01/04: Add test from Jb Evain to test biner with user method types
Jo Shields
directhex at moszumanska.debian.org
Wed Dec 4 00:47:09 UTC 2013
This is an automated email from the git hooks/post-receive script.
directhex pushed a commit to annotated tag debian/3.0.6+dfsg2-10
in repository mono.
commit 3fc971b0114a5e62b406dd1afb5d3c5c33151e69
Author: Marek Safar <marek.safar at gmail.com>
Date: Wed Mar 6 10:23:47 2013 +0100
Add test from Jb Evain to test biner with user method types
(cherry picked from commit 80d342ff7555e95bfa3917543ce66910175cf61d)
---
mcs/class/corlib/System.Reflection/MethodBase.cs | 13 +++-
.../corlib/Test/System.Reflection/BinderTests.cs | 87 ++++++++++++++++++++++
2 files changed, 98 insertions(+), 2 deletions(-)
diff --git a/mcs/class/corlib/System.Reflection/MethodBase.cs b/mcs/class/corlib/System.Reflection/MethodBase.cs
index 671f11d..dd57144 100644
--- a/mcs/class/corlib/System.Reflection/MethodBase.cs
+++ b/mcs/class/corlib/System.Reflection/MethodBase.cs
@@ -88,8 +88,17 @@ namespace System.Reflection {
// This is a quick version for our own use. We should override
// it where possible so that it does not allocate an array.
//
- internal abstract ParameterInfo[] GetParametersInternal ();
- internal abstract int GetParametersCount ();
+ internal virtual ParameterInfo[] GetParametersInternal ()
+ {
+ // Override me
+ return GetParameters ();
+ }
+
+ internal virtual int GetParametersCount ()
+ {
+ // Override me
+ return GetParametersInternal ().Length;
+ }
internal virtual Type GetParameterType (int pos) {
throw new NotImplementedException ();
diff --git a/mcs/class/corlib/Test/System.Reflection/BinderTests.cs b/mcs/class/corlib/Test/System.Reflection/BinderTests.cs
index 33aea7c..b055078 100644
--- a/mcs/class/corlib/Test/System.Reflection/BinderTests.cs
+++ b/mcs/class/corlib/Test/System.Reflection/BinderTests.cs
@@ -101,6 +101,80 @@ namespace MonoTests.System.Reflection
}
}
+ class MethodInfoWrapper : MethodInfo
+ {
+ private readonly MethodInfo method;
+
+ public MethodInfoWrapper (MethodInfo method)
+ {
+ this.method = method;
+ }
+
+ public override object[] GetCustomAttributes (bool inherit)
+ {
+ return method.GetCustomAttributes (inherit);
+ }
+
+ public override bool IsDefined (Type attributeType, bool inherit)
+ {
+ return method.IsDefined (attributeType, inherit);
+ }
+
+ public override ParameterInfo[] GetParameters ()
+ {
+ return method.GetParameters ();
+ }
+
+ public override MethodImplAttributes GetMethodImplementationFlags ()
+ {
+ return method.GetMethodImplementationFlags ();
+ }
+
+ public override object Invoke (object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture)
+ {
+ return method.Invoke (obj, invokeAttr, binder, parameters, culture);
+ }
+
+ public override MethodInfo GetBaseDefinition ()
+ {
+ return method.GetBaseDefinition ();
+ }
+
+ public override ICustomAttributeProvider ReturnTypeCustomAttributes {
+ get { return method.ReturnTypeCustomAttributes; }
+ }
+
+ public override string Name {
+ get { return method.Name; }
+ }
+
+ public override Type ReturnType {
+ get { return method.ReturnType; }
+ }
+
+ public override Type DeclaringType {
+ get { return method.DeclaringType; }
+ }
+
+ public override Type ReflectedType {
+ get { return method.ReflectedType; }
+ }
+
+ public override RuntimeMethodHandle MethodHandle {
+ get { return method.MethodHandle; }
+ }
+
+ public override MethodAttributes Attributes {
+ get { return method.Attributes; }
+ }
+
+ public override object[] GetCustomAttributes (Type attributeType, bool inherit)
+ {
+ return method.GetCustomAttributes (attributeType, inherit);
+ }
+ }
+
+
[TestFixture]
public class BinderTest
{
@@ -1395,5 +1469,18 @@ namespace MonoTests.System.Reflection
null, // target
new object [] { CultureInfo.CurrentCulture, "foo{0}{1}", "bar", "baz" }));
}
+
+ public static void CustomMethodType_Helper ()
+ {
+ }
+
+ [Test]
+ public void CustomMethodType ()
+ {
+ var method = new MethodInfoWrapper (GetType ().GetMethod ("CustomMethodType_Helper"));
+
+ var res = Type.DefaultBinder.SelectMethod (BindingFlags.Static | BindingFlags.Public, new[] { method }, Type.EmptyTypes, new ParameterModifier[0]);
+ Assert.AreSame (method, res);
+ }
}
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mono/packages/mono.git
More information about the Pkg-mono-svn-commits
mailing list