def testDelegateFromClassMethod(self): """Test delegate implemented with a Python class method.""" class Hello: def sayhello(self): return "hello" sayhello = classmethod(sayhello) d = StringDelegate(Hello.sayhello) ob = DelegateTest() self.failUnless(ob.CallStringDelegate(d) == "hello") self.failUnless(d() == "hello") ob.stringDelegate = d self.failUnless(ob.CallStringDelegate(ob.stringDelegate) == "hello") self.failUnless(ob.stringDelegate() == "hello") inst = Hello() d = StringDelegate(inst.sayhello) ob = DelegateTest() self.failUnless(ob.CallStringDelegate(d) == "hello") self.failUnless(d() == "hello") ob.stringDelegate = d self.failUnless(ob.CallStringDelegate(ob.stringDelegate) == "hello") self.failUnless(ob.stringDelegate() == "hello")
def testDelegateFromStaticMethod(self): """Test delegate implemented with a Python static method.""" class Hello: def sayhello(): return "hello" sayhello = staticmethod(sayhello) d = StringDelegate(Hello.sayhello) ob = DelegateTest() self.assertTrue(ob.CallStringDelegate(d) == "hello") self.assertTrue(d() == "hello") ob.stringDelegate = d self.assertTrue(ob.CallStringDelegate(ob.stringDelegate) == "hello") self.assertTrue(ob.stringDelegate() == "hello") inst = Hello() d = StringDelegate(inst.sayhello) ob = DelegateTest() self.assertTrue(ob.CallStringDelegate(d) == "hello") self.assertTrue(d() == "hello") ob.stringDelegate = d self.assertTrue(ob.CallStringDelegate(ob.stringDelegate) == "hello") self.assertTrue(ob.stringDelegate() == "hello")
def test_delegate_with_invalid_args(): """Test delegate instantiation with invalid (non-callable) args.""" with pytest.raises(TypeError): _ = StringDelegate(None) with pytest.raises(TypeError): _ = StringDelegate("spam") with pytest.raises(TypeError): _ = StringDelegate(1)
def test_delegate_from_delegate(): """Test delegate implemented with another delegate.""" d1 = StringDelegate(hello_func) d2 = StringDelegate(d1) ob = DelegateTest() assert ob.CallStringDelegate(d2) == "hello" assert d2() == "hello" ob.stringDelegate = d2 assert ob.CallStringDelegate(ob.stringDelegate) == "hello" assert ob.stringDelegate() == "hello"
def test_multicast_delegate(): """Test multicast delegates.""" inst = MultipleHandler() d1 = StringDelegate(inst.count) d2 = StringDelegate(inst.count) md = System.Delegate.Combine(d1, d2) ob = DelegateTest() assert ob.CallStringDelegate(md) == "ok" assert inst.value == 2 assert md() == "ok" assert inst.value == 4
def testDelegateFromDelegate(self): """Test delegate implemented with another delegate.""" def sayhello(): return "hello" d1 = StringDelegate(sayhello) d2 = StringDelegate(d1) ob = DelegateTest() self.assertTrue(ob.CallStringDelegate(d2) == "hello") self.assertTrue(d2() == "hello") ob.stringDelegate = d2 self.assertTrue(ob.CallStringDelegate(ob.stringDelegate) == "hello") self.assertTrue(ob.stringDelegate() == "hello")
def test_delegate_equality(): """Test delegate equality.""" d = StringDelegate(hello_func) ob = DelegateTest() ob.stringDelegate = d assert ob.stringDelegate == d
def testDelegateEquality(self): """Test delegate equality.""" def sayhello(): return "hello" d = StringDelegate(sayhello) ob = DelegateTest() ob.stringDelegate = d self.assertTrue(ob.stringDelegate == d)
def test_delegate_from_managed_instance_method(): """Test delegate implemented with a managed instance method.""" ob = DelegateTest() d = StringDelegate(ob.SayHello) assert ob.CallStringDelegate(d) == "hello" assert d() == "hello" ob.stringDelegate = d assert ob.CallStringDelegate(ob.stringDelegate) == "hello" assert ob.stringDelegate() == "hello"
def testDelegateFromManagedInstanceMethod(self): """Test delegate implemented with a managed instance method.""" ob = DelegateTest() d = StringDelegate(ob.SayHello) self.failUnless(ob.CallStringDelegate(d) == "hello") self.failUnless(d() == "hello") ob.stringDelegate = d self.failUnless(ob.CallStringDelegate(ob.stringDelegate) == "hello") self.failUnless(ob.stringDelegate() == "hello")
def test_delegate_from_managed_static_method(): """Test delegate implemented with a managed static method.""" d = StringDelegate(DelegateTest.StaticSayHello) ob = DelegateTest() assert ob.CallStringDelegate(d) == "hello" assert d() == "hello" ob.stringDelegate = d assert ob.CallStringDelegate(ob.stringDelegate) == "hello" assert ob.stringDelegate() == "hello"
def testDelegateFromManagedStaticMethod(self): """Test delegate implemented with a managed static method.""" d = StringDelegate(DelegateTest.StaticSayHello) ob = DelegateTest() self.failUnless(ob.CallStringDelegate(d) == "hello") self.failUnless(d() == "hello") ob.stringDelegate = d self.failUnless(ob.CallStringDelegate(ob.stringDelegate) == "hello") self.failUnless(ob.stringDelegate() == "hello")
def test_delegate_from_function(): """Test delegate implemented with a Python function.""" d = StringDelegate(hello_func) ob = DelegateTest() assert ob.CallStringDelegate(d) == "hello" assert d() == "hello" ob.stringDelegate = d assert ob.CallStringDelegate(ob.stringDelegate) == "hello" assert ob.stringDelegate() == "hello"
def testMulticastDelegate(self): """Test multicast delegates.""" class Multi: def __init__(self): self.value = 0 def count(self): self.value += 1 return 'ok' inst = Multi() d1 = StringDelegate(inst.count) d2 = StringDelegate(inst.count) md = System.Delegate.Combine(d1, d2) ob = DelegateTest() self.assertTrue(ob.CallStringDelegate(md) == "ok") self.assertTrue(inst.value == 2) self.assertTrue(md() == "ok") self.assertTrue(inst.value == 4)
def test_delegate_from_method(): """Test delegate implemented with a Python instance method.""" inst = HelloClass() d = StringDelegate(inst.hello) ob = DelegateTest() assert ob.CallStringDelegate(d) == "hello" assert d() == "hello" ob.stringDelegate = d assert ob.CallStringDelegate(ob.stringDelegate) == "hello" assert ob.stringDelegate() == "hello"
def test_delegate_from_callable(): """Test delegate implemented with a Python callable object.""" inst = HelloClass() d = StringDelegate(inst) ob = DelegateTest() assert ob.CallStringDelegate(d) == "hello" assert d() == "hello" ob.stringDelegate = d assert ob.CallStringDelegate(ob.stringDelegate) == "hello" assert ob.stringDelegate() == "hello"
def testDelegateFromFunction(self): """Test delegate implemented with a Python function.""" def sayhello(): return "hello" d = StringDelegate(sayhello) ob = DelegateTest() self.assertTrue(ob.CallStringDelegate(d) == "hello") self.assertTrue(d() == "hello") ob.stringDelegate = d self.assertTrue(ob.CallStringDelegate(ob.stringDelegate) == "hello") self.assertTrue(ob.stringDelegate() == "hello")
def testDelegateFromCallable(self): """Test delegate implemented with a Python callable object.""" class Hello: def __call__(self): return "hello" inst = Hello() d = StringDelegate(inst) ob = DelegateTest() self.assertTrue(ob.CallStringDelegate(d) == "hello") self.assertTrue(d() == "hello") ob.stringDelegate = d self.assertTrue(ob.CallStringDelegate(ob.stringDelegate) == "hello") self.assertTrue(ob.stringDelegate() == "hello")
def test_classes(self): from System.Collections import Hashtable from Python.Test import StringDelegate self.notify("Running class leak check...") for i in range(self.count): if i == 10: self.start_test() # Reference type x = Hashtable() del x # Value type x = System.Int32(99) del x # Delegate type x = StringDelegate(hello_func) del x self.end_test()
def testDelegates(self): from Python.Test import DelegateTest, StringDelegate import System self.notify("Running delegate leak check...") for i in xrange(self.count): if i == 10: self.start_test() # Delegate from function testob = DelegateTest() d = StringDelegate(hello) testob.CallStringDelegate(d) testob.stringDelegate = d testob.stringDelegate() testob.stringDelegate = None del testob del d # Delegate from instance method inst = Hello() testob = DelegateTest() d = StringDelegate(inst.hello) testob.CallStringDelegate(d) testob.stringDelegate = d testob.stringDelegate() testob.stringDelegate = None del testob del inst del d # Delegate from static method testob = DelegateTest() d = StringDelegate(Hello.s_hello) testob.CallStringDelegate(d) testob.stringDelegate = d testob.stringDelegate() testob.stringDelegate = None del testob del d # Delegate from class method testob = DelegateTest() d = StringDelegate(Hello.c_hello) testob.CallStringDelegate(d) testob.stringDelegate = d testob.stringDelegate() testob.stringDelegate = None del testob del d # Delegate from callable object inst = Hello() testob = DelegateTest() d = StringDelegate(inst) testob.CallStringDelegate(d) testob.stringDelegate = d testob.stringDelegate() testob.stringDelegate = None del testob del inst del d # Delegate from managed instance method testob = DelegateTest() d = StringDelegate(testob.SayHello) testob.CallStringDelegate(d) testob.stringDelegate = d testob.stringDelegate() testob.stringDelegate = None del testob del d # Delegate from managed static method testob = DelegateTest() d = StringDelegate(DelegateTest.StaticSayHello) testob.CallStringDelegate(d) testob.stringDelegate = d testob.stringDelegate() testob.stringDelegate = None del testob del d # Nested delegates testob = DelegateTest() d1 = StringDelegate(hello) d2 = StringDelegate(d1) testob.CallStringDelegate(d2) testob.stringDelegate = d2 testob.stringDelegate() testob.stringDelegate = None del testob del d1 del d2 # Multicast delegates testob = DelegateTest() d1 = StringDelegate(hello) d2 = StringDelegate(hello) md = System.Delegate.Combine(d1, d2) testob.CallStringDelegate(md) testob.stringDelegate = md testob.stringDelegate() testob.stringDelegate = None del testob del d1 del d2 del md self.end_test()
def test(): d = StringDelegate(Hello.sayhello) d()
def test(): d = StringDelegate(1)
def test(): d = StringDelegate("spam")
def test_delegate_from_unbound_method(): """Test failure mode for unbound methods.""" with pytest.raises(TypeError): d = StringDelegate(HelloClass.hello) d()
def test(): d = StringDelegate(None)