示例#1
0
        public void TestMultipleGenericMethodBinding()
        {
            // Test matching multiple generics
            // i.e. function signature is <T,K>(Generic<T,K> var1)

            // Run in C#
            var class1 = new TestMultipleGenericClass1();
            var class2 = new TestMultipleGenericClass2();

            TestMultipleGenericMethod(class1);
            TestMultipleGenericMethod(class2);

            Assert.AreEqual(1, class1.Value);
            Assert.AreEqual(1, class2.Value);

            // Run in Python
            Assert.DoesNotThrow(() => PyModule.FromString("test", @"
from clr import AddReference
AddReference(""System"")
AddReference(""Python.EmbeddingTest"")
from Python.EmbeddingTest import *
class1 = TestMethodBinder.TestMultipleGenericClass1()
class2 = TestMethodBinder.TestMultipleGenericClass2()

TestMethodBinder.TestMultipleGenericMethod(class1)
TestMethodBinder.TestMultipleGenericMethod(class2)

if class1.Value != 1 or class2.Value != 1:
    raise AssertionError('Values were not updated')
"));
        }
示例#2
0
        public void TestMultipleGenericParamMethodBinding()
        {
            // Test multiple param generics matching
            // i.e. function signature is <T,K>(Generic1<T> var1, Generic<T,K> var2)

            // Run in C#
            var class1a = new TestGenericClass1();
            var class1b = new TestMultipleGenericClass1();

            TestMultipleGenericParamsMethod(class1a, class1b);

            Assert.AreEqual(1, class1a.Value);
            Assert.AreEqual(1, class1a.Value);


            var class2a = new TestGenericClass2();
            var class2b = new TestMultipleGenericClass2();

            TestMultipleGenericParamsMethod(class2a, class2b);

            Assert.AreEqual(1, class2a.Value);
            Assert.AreEqual(1, class2b.Value);

            // Run in Python
            Assert.DoesNotThrow(() => PyModule.FromString("test", @"
from clr import AddReference
AddReference(""System"")
AddReference(""Python.EmbeddingTest"")
from Python.EmbeddingTest import *
class1a = TestMethodBinder.TestGenericClass1()
class1b = TestMethodBinder.TestMultipleGenericClass1()

TestMethodBinder.TestMultipleGenericParamsMethod(class1a, class1b)

if class1a.Value != 1 or class1b.Value != 1:
    raise AssertionError('Values were not updated')

class2a = TestMethodBinder.TestGenericClass2()
class2b = TestMethodBinder.TestMultipleGenericClass2()

TestMethodBinder.TestMultipleGenericParamsMethod(class2a, class2b)

if class2a.Value != 1 or class2b.Value != 1:
    raise AssertionError('Values were not updated')
"));
        }