158 lines
5.4 KiB
Python
158 lines
5.4 KiB
Python
from __future__ import print_function
|
|
|
|
import unittest
|
|
|
|
import wrapt
|
|
|
|
from wrapt import six
|
|
|
|
class TestClassInheritence(unittest.TestCase):
|
|
|
|
def test_function_type_inheritence(self):
|
|
@wrapt.decorator
|
|
def _decorator(wrapped, instance, args, kwargs):
|
|
return wrapped(*args, **kwargs)
|
|
|
|
@_decorator
|
|
def _function(*args, **kwargs):
|
|
return args, kwargs
|
|
|
|
self.assertTrue(isinstance(_function, wrapt.FunctionWrapper))
|
|
self.assertTrue(isinstance(_function, wrapt.ObjectProxy))
|
|
|
|
def test_instancemethod_type_inheritence(self):
|
|
@wrapt.decorator
|
|
def _decorator(wrapped, instance, args, kwargs):
|
|
return wrapped(*args, **kwargs)
|
|
|
|
class Class(object):
|
|
@_decorator
|
|
def function(self, args, **kwargs):
|
|
return args, kwargs
|
|
|
|
self.assertTrue(isinstance(function, wrapt.FunctionWrapper))
|
|
self.assertTrue(isinstance(function, wrapt.ObjectProxy))
|
|
|
|
instance = Class()
|
|
|
|
self.assertFalse(isinstance(instance.function, wrapt.FunctionWrapper))
|
|
self.assertTrue(isinstance(instance.function, wrapt.ObjectProxy))
|
|
|
|
def test_classmethod_type_inheritence(self):
|
|
@wrapt.decorator
|
|
def _decorator(wrapped, instance, args, kwargs):
|
|
return wrapped(*args, **kwargs)
|
|
|
|
class Class(object):
|
|
@_decorator
|
|
@classmethod
|
|
def function(cls, *args, **kwargs):
|
|
return args, kwargs
|
|
|
|
self.assertTrue(isinstance(function, wrapt.FunctionWrapper))
|
|
self.assertTrue(isinstance(function, wrapt.ObjectProxy))
|
|
|
|
instance = Class()
|
|
|
|
self.assertFalse(isinstance(instance.function, wrapt.FunctionWrapper))
|
|
self.assertTrue(isinstance(instance.function, wrapt.ObjectProxy))
|
|
|
|
def test_staticmethod_type_inheritence(self):
|
|
@wrapt.decorator
|
|
def _decorator(wrapped, instance, args, kwargs):
|
|
return wrapped(*args, **kwargs)
|
|
|
|
class Class(object):
|
|
@_decorator
|
|
@staticmethod
|
|
def function(*args, **kwargs):
|
|
return args, kwargs
|
|
|
|
self.assertTrue(isinstance(function, wrapt.FunctionWrapper))
|
|
self.assertTrue(isinstance(function, wrapt.ObjectProxy))
|
|
|
|
instance = Class()
|
|
|
|
self.assertFalse(isinstance(instance.function, wrapt.FunctionWrapper))
|
|
self.assertTrue(isinstance(instance.function, wrapt.ObjectProxy))
|
|
|
|
class TestAttributeAccess(unittest.TestCase):
|
|
|
|
def test_function_attributes(self):
|
|
def decorator1(wrapped, instance, args, kwargs):
|
|
return wrapped(*args, **kwargs)
|
|
decorator2 = wrapt.decorator(decorator1)
|
|
|
|
def function1(*args, **kwargs):
|
|
return args, kwargs
|
|
function2 = decorator2(function1)
|
|
|
|
self.assertEqual(function2._self_wrapped, function1)
|
|
self.assertEqual(function2._self_wrapper, decorator1)
|
|
self.assertNotEqual(function2._self_bound_type, None)
|
|
|
|
def test_instancemethod_attributes(self):
|
|
def decorator1(wrapped, instance, args, kwargs):
|
|
return wrapped(*args, **kwargs)
|
|
decorator2 = wrapt.decorator(decorator1)
|
|
|
|
class Class(object):
|
|
def function1(self, *args, **kwargs):
|
|
return args, kwargs
|
|
function2 = decorator2(function1)
|
|
|
|
self.assertEqual(function2._self_wrapped, function1)
|
|
self.assertEqual(function2._self_wrapper, decorator1)
|
|
self.assertNotEqual(function2._self_bound_type, None)
|
|
|
|
instance = Class()
|
|
|
|
self.assertEqual(instance.function2._self_wrapped, instance.function1)
|
|
self.assertEqual(instance.function2._self_instance, instance)
|
|
self.assertEqual(instance.function2._self_wrapper, decorator1)
|
|
|
|
def test_classmethod_attributes(self):
|
|
def decorator1(wrapped, instance, args, kwargs):
|
|
return wrapped(*args, **kwargs)
|
|
decorator2 = wrapt.decorator(decorator1)
|
|
|
|
class Class(object):
|
|
@classmethod
|
|
def function1(cls, *args, **kwargs):
|
|
return args, kwargs
|
|
function2 = decorator2(function1)
|
|
|
|
self.assertEqual(function2._self_wrapped, function1)
|
|
self.assertEqual(function2._self_wrapper, decorator1)
|
|
self.assertNotEqual(function2._self_bound_type, None)
|
|
|
|
instance = Class()
|
|
|
|
self.assertEqual(instance.function2._self_wrapped, instance.function1)
|
|
self.assertEqual(instance.function2._self_instance, instance)
|
|
self.assertEqual(instance.function2._self_wrapper, decorator1)
|
|
|
|
def test_staticmethod_attributes(self):
|
|
def decorator1(wrapped, instance, args, kwargs):
|
|
return wrapped(*args, **kwargs)
|
|
decorator2 = wrapt.decorator(decorator1)
|
|
|
|
class Class(object):
|
|
@staticmethod
|
|
def function1(*args, **kwargs):
|
|
return args, kwargs
|
|
function2 = decorator2(function1)
|
|
|
|
self.assertEqual(function2._self_wrapped, function1)
|
|
self.assertEqual(function2._self_wrapper, decorator1)
|
|
self.assertNotEqual(function2._self_bound_type, None)
|
|
|
|
instance = Class()
|
|
|
|
self.assertEqual(instance.function2._self_wrapped, instance.function1)
|
|
self.assertEqual(instance.function2._self_instance, instance)
|
|
self.assertEqual(instance.function2._self_wrapper, decorator1)
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|