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') ")); }
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') ")); }