def testNonExistantInstance(self): #{{{ '''No longer existing instance returns None ''' A = DummyClass a = A() w = CallableWrapper(a.DummyMethod) del a self.assert_(w._getcallable() is None)
def testNormalFunction(self): #{{{ '''Return back normal functions and unbound methods''' _ = (lambda: None) ub_ = method(_, None, None) for f in (_, ub_): cw = CallableWrapper(f) ret = cw._getcallable() self.assertEqual(ret, f)
def testDeadReferences(self): #{{{ '''If the reference dies, return None''' class _(object): #{{{ def me(self): #{{{ pass # End def #}}} # End class #}}} t = _() cw = CallableWrapper(t.me, weak=True) del t self.assertTrue(cw._getcallable() is None)
def testMethod(self): #{{{ '''Bound and instance methods''' class _(object): #{{{ def me(self): #{{{ pass # End def #}}} # End class #}}} t1, i_ = _.me, _() t2 = i_.me for f in (t1, t2): cw = CallableWrapper(f) ret = cw._getcallable() self.assertNotEqual(ret, f) self.assertEqual(ret, f.im_func)
def testNonMethodCallable(self): #{{{ '''Non-method callable returns actual callable''' w = CallableWrapper(DummyFunction) self.assert_(w._getcallable() is DummyFunction)
def testClassInstance(self): #{{{ '''Class method callable's im_func returned''' A = DummyClass w = CallableWrapper(A.DummyMethod) self.assert_(w._getcallable() is A.DummyMethod.im_func)
def testMethodInstance(self): #{{{ '''Instance method callable's im_func returned''' A = DummyClass a = A() w = CallableWrapper(a.DummyMethod) self.assert_(w._getcallable() is a.DummyMethod.im_func)