def test_wrap(self):
        """
        Test the wrap decorator

        @raise AssertionError: If the test fails.
        """
        class SlowClass(DecoratorComplex):

            def __init__(self, sleep_time):
                self.sleep_time = sleep_time
                self.end_time = None

            @CallWrapper
            def __call__(self, func, *args, **kwargs):
                start_time = time.time()
                return_val = func(*args, **kwargs)
                time.sleep(self.sleep_time)
                end_time = time.time() - start_time
                self.end_time = end_time
                return return_val, self.sleep_time, self.end_time

        @SlowClass(1)
        def hello_world(n):
            return ['hello world' for _ in range(n)]

        return_val, sleeptime, end_time = hello_world(5)

        self.assertEquals(1, sleeptime)
        self.assertAlmostEquals(1, end_time, delta=1)
        self.assertListEqual(['hello world' for _ in range(5)], return_val)

        Test the wrap decorator

        @raise AssertionError: If the test fails.
        
tests/structural_tests/test_decorator.py