public MethodTests()
        {
            MethodInfo mi = typeof(string).GetMethod("IndexOf", new[] { typeof(string) });

            m_IndexOf1 = Accelerator.CreateFunction2(mi);
            m_IndexOf2 = Accelerator.CreateInvocationDelegate(mi);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }