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 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 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 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 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 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_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 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_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 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 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_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 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 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()