public MethodTests() { MethodInfo mi = typeof(string).GetMethod("IndexOf", new[] { typeof(string) }); m_IndexOf1 = Accelerator.CreateFunction2(mi); m_IndexOf2 = Accelerator.CreateInvocationDelegate(mi); }
public void TestCreateFunction2c() { string n = nameof(ExampleClass1.AppendTextAndGet); MethodInfo m = typeof(ExampleClass1).GetMethod(n, new Type[] { typeof(string) }); Func2 appendAndGet = Accelerator.CreateFunction2(m); var o = new ExampleClass1(); Assert.AreEqual("ABC", o.AppendTextAndGet("ABC")); Assert.AreEqual("ABC", o.Text); Assert.AreEqual("ABCXYZ", (string)appendAndGet(o, "XYZ")); Assert.AreEqual("ABCXYZ", o.Text); }
public void TestCreateFunction2a() { string n = nameof(ExampleClass2.IncrementAndGet); MethodInfo m = typeof(ExampleClass2).GetMethod(n, new Type[] { typeof(int) }); Func2 incAndGet = Accelerator.CreateFunction2(m); var o = new ExampleClass2(); Assert.AreEqual(0, o.Value); Assert.AreEqual(1, o.IncrementAndGet(1)); Assert.AreEqual(1, o.Value); Assert.AreEqual(3, (int)incAndGet(o, 2)); Assert.AreEqual(3, o.Value); Assert.AreEqual(6, (int)incAndGet(o, 3)); Assert.AreEqual(6, o.Value); }
public void TestCreateFunction2d() { string n = nameof(ExampleStruct1.AppendTextAndGet); MethodInfo m = typeof(ExampleStruct1).GetMethod(n, new Type[] { typeof(string) }); Func2 appendAndGet = Accelerator.CreateFunction2(m); var unboxed = new ExampleStruct1(); Assert.AreEqual("ABC", unboxed.AppendTextAndGet("ABC")); Assert.AreEqual("ABC", unboxed.Text); object boxed = unboxed; Assert.AreEqual("ABCXYZ", (string)appendAndGet(boxed, "XYZ")); Assert.AreEqual("ABCXYZ", ((ExampleStruct1)boxed).Text); }
public void TestCreateFunction2b() { string n = nameof(ExampleStruct2.IncrementAndGet); MethodInfo m = typeof(ExampleStruct2).GetMethod(n, new Type[] { typeof(int) }); Func2 incAndGet = Accelerator.CreateFunction2(m); var unboxed = new ExampleStruct2(); Assert.AreEqual(0, unboxed.Value); Assert.AreEqual(1, unboxed.IncrementAndGet(1)); Assert.AreEqual(1, unboxed.Value); object boxed = unboxed; Assert.AreEqual(3, (int)incAndGet(boxed, 2)); Assert.AreEqual(3, ((ExampleStruct2)boxed).Value); Assert.AreEqual(6, (int)incAndGet(boxed, 3)); Assert.AreEqual(6, ((ExampleStruct2)boxed).Value); }