示例#1
0
 def test_onearg_and_default(self):
     """Tests if reassign works correctly with one arg and default 
     """
     varargs = (12,)
     kwargs = {}
     method = getattr(self.foo,'f_onearg_and_default')
     var_dict = reassign_function_arguments(method, varargs, kwargs)
     self.assert_(var_dict['arg1'] == 12)
     self.assert_(var_dict['default'] == 1)
     self.assert_(len(var_dict) == 2)
     var_dict = reassign_function_arguments(method, (12, 13), kwargs)
     self.assert_(var_dict['arg1'] == 12)
     self.assert_(var_dict['default'] == 13)
     self.assert_(len(var_dict) == 2)
 def test_onearg_and_default(self):
     """Tests if reassign works correctly with one arg and default 
     """
     varargs = (12, )
     kwargs = {}
     method = getattr(self.foo, 'f_onearg_and_default')
     var_dict = reassign_function_arguments(method, varargs, kwargs)
     self.assert_(var_dict['arg1'] == 12)
     self.assert_(var_dict['default'] == 1)
     self.assert_(len(var_dict) == 2)
     var_dict = reassign_function_arguments(method, (12, 13), kwargs)
     self.assert_(var_dict['arg1'] == 12)
     self.assert_(var_dict['default'] == 13)
     self.assert_(len(var_dict) == 2)
示例#3
0
 def test_named_params(self):
     """tests calling f by naming all arguments"""
     varargs = ()
     kwargs = {'arg1' : "arg1_val", 'default' : "default_val"}
     method = getattr(self.foo,'f_onearg_and_default')
     var_dict = reassign_function_arguments(method, varargs, kwargs)
     self.assertEquals(kwargs, var_dict)
 def test_named_params(self):
     """tests calling f by naming all arguments"""
     varargs = ()
     kwargs = {'arg1': "arg1_val", 'default': "default_val"}
     method = getattr(self.foo, 'f_onearg_and_default')
     var_dict = reassign_function_arguments(method, varargs, kwargs)
     self.assertEquals(kwargs, var_dict)
示例#5
0
 def test_noarg(self):
     """Tests if reassign works correctly with no args 
     """
     varargs = ()
     kwargs = {}
     method = getattr(self.foo,'f_noarg')
     var_dict = reassign_function_arguments(method, varargs, kwargs)
     self.assert_(var_dict == {})
 def test_noarg(self):
     """Tests if reassign works correctly with no args 
     """
     varargs = ()
     kwargs = {}
     method = getattr(self.foo, 'f_noarg')
     var_dict = reassign_function_arguments(method, varargs, kwargs)
     self.assert_(var_dict == {})
示例#7
0
 def test_keyword(self):
     """Tests if reassign works correctly with a keyword arg
     """
     varargs = ()
     kwargs = {'default' : 12}
     method = getattr(self.foo,'f_default')
     var_dict = reassign_function_arguments(method, varargs, kwargs)
     self.assert_(var_dict['default'] == 12)
     self.assert_(len(var_dict) == 1)
 def test_onearg(self):
     """Tests if reassign works correctly with one arg
     """
     varargs = (12, )
     kwargs = {}
     method = getattr(self.foo, 'f_onearg')
     var_dict = reassign_function_arguments(method, varargs, kwargs)
     self.assert_(var_dict['arg1'] == 12)
     self.assert_(len(var_dict) == 1)
 def test_keyword(self):
     """Tests if reassign works correctly with a keyword arg
     """
     varargs = ()
     kwargs = {'default': 12}
     method = getattr(self.foo, 'f_default')
     var_dict = reassign_function_arguments(method, varargs, kwargs)
     self.assert_(var_dict['default'] == 12)
     self.assert_(len(var_dict) == 1)
示例#10
0
 def test_onearg(self):
     """Tests if reassign works correctly with one arg
     """
     varargs = (12,)
     kwargs = {}
     method = getattr(self.foo,'f_onearg')
     var_dict = reassign_function_arguments(method, varargs, kwargs)
     self.assert_(var_dict['arg1'] == 12)
     self.assert_(len(var_dict) == 1)
示例#11
0
 def test_twoargs(self):
     """Tests if reassign works correctly with two args
     """
     varargs = (12, 13)
     kwargs = {}
     method = getattr(self.foo,'f_twoargs')
     var_dict = reassign_function_arguments(method, varargs, kwargs)
     self.assert_(var_dict['arg1'] == 12)
     self.assert_(var_dict['arg2'] == 13)
     self.assert_(len(var_dict) == 2)
示例#12
0
 def test_twoargs(self):
     """Tests if reassign works correctly with two args
     """
     varargs = (12, 13)
     kwargs = {}
     method = getattr(self.foo, 'f_twoargs')
     var_dict = reassign_function_arguments(method, varargs, kwargs)
     self.assert_(var_dict['arg1'] == 12)
     self.assert_(var_dict['arg2'] == 13)
     self.assert_(len(var_dict) == 2)
示例#13
0
 def before(self, wobj, context, *args, **kwargs):
     """Before method
     """
     met_name = context['method_name']
     classname = context['__class__'].__name__
     method = self._get_base_method(wobj, met_name)
     self.log_device.write("Calling %s (%s) \n" % (met_name, classname))
     self.log_device.write("\twith values : \n")
     call_dict = reassign_function_arguments(method, args, kwargs)
     for var, val in call_dict.items():
         self.log_device.write('\t\t "%s" = %r\n' % (repr(var), val))
示例#14
0
 def before(self, wobj, context, *args, **kwargs):
     """Before method"""
     self.base_info(wobj, context)
     write = self.output.write
     if self.config.parameters:
         write("(")
         method = self._get_base_method(wobj, context['method_name'])
         call_dict = reassign_function_arguments(method, args, kwargs)
         write(', '.join(['%s=%r' % (var, val)
                          for var, val in call_dict.items()]))
         write(")")
     write('\n')
示例#15
0
 def before(self, wobj, context, *args, **kwargs):
     """Before method
     """
     met_name = context['method_name']
     classname = context['__class__'].__name__
     property_func = context['property_func']
     method = self._get_base_method(wobj, met_name, property_func)
     self.log_device.write("[%s] Calling %s (%s) \n" % (
         self._log_date_time_string(), met_name, classname))
     self.log_device.write(
         "[%s]\twith values : \n" % self._log_date_time_string())
     call_dict = reassign_function_arguments(method, args, kwargs)
     for var, val in call_dict.items():
         self.log_device.write('[%s]\t\t "%s" = %r\n' % (
             self._log_date_time_string(), repr(var), val))
示例#16
0
    def after(self, wobj, context, *args, **kwargs):
        """
        self    : aspect instance
        wobj    : the weaved object instance
        global_dict : the wrapped_func globals dict (f.func_globals)
        ret_v   : the return value of the wrapped method
        exec_excpt : the exception raised by the wrapped method or None
        if no exception has been raised
        """
        met_name = context['method_name']
        ret_v = context['ret_v']
        exec_excpt = context['exception']
        
        base_method = self._get_base_method(wobj, met_name)
        local_dict = {}
        method_dict = base_method.im_func.func_globals
        local_dict.update(method_dict)

        dummy, post, inv, holder = self._get_definitions(wobj, met_name)

        local_dict.update(reassign_function_arguments(
            base_method, args, kwargs))
        local_dict['self'] = wobj
        local_dict['__return__'] = ret_v
        local_dict['__old__'] = holder
        local_dict['exists'] = exists
        local_dict['forall'] = forall

        # First check invariants
        ##########################################################
        # We use __aspecting_inv__ a bit as a lock() to prevent
        # infinite loops if method calls are done on self in
        # invariant conditions
        ##########################################################
        
        # Skip invariant checks if we're already in one of those
        if '__aspecting_inv__' not in wobj.__dict__:
            wobj.__dict__['__aspecting_inv__'] = True
            # self._check_invariants(wobj, local_dict)
            if inv is not None:
                self._check_conditions(inv, local_dict, "inv")
            del wobj.__dict__['__aspecting_inv__']

        # Check post-conditions if no exception has been raised
        if exec_excpt is None:
            # self._check_post_conditions(wobj, local_dict)
            if post is not None:
                self._check_conditions(post, local_dict, "post")
示例#17
0
 def before(self, wobj, context, *args, **kwargs):
     """
     self : aspect instance
     wobj : the weaved object instance
     global_dict : the wrapped_func globals dict (f.func_globals)
     """
     met_name = context['method_name']
     base_method = self._get_base_method(wobj, met_name)
     local_dict = {}
     method_dict = base_method.im_func.func_globals
     local_dict.update(method_dict)
     pre, dummy, inv, holder = self._get_definitions(wobj, met_name)
     
     local_dict.update(reassign_function_arguments(base_method,
                                                   args, kwargs))
     local_dict['self'] = wobj
     local_dict['exists'] = exists
     local_dict['forall'] = forall
     
     # Memorize state of variables which are needed with __old__ in post
     # conditions.
     # for var in holder.memo_list:
     #     holder.set(var, eval(var, local_dict))
     for var in holder.iterkeys():
         holder[var] = eval(var, local_dict)
     
     # First check invariants
     ##########################################################
     # We use __aspecting_inv__ a bit as a lock() to prevent
     # infinite loops if method calls are done on self in
     # invariant conditions
     ##########################################################
     
     # Skip invariant checks if we're already in one of those
     if '__aspecting_inv__' not in wobj.__dict__:
         wobj.__dict__['__aspecting_inv__'] = True
         if inv is not None:
             self._check_conditions(inv, local_dict, "inv")
         # self._check_invariants(wobj, local_dict)
         del wobj.__dict__['__aspecting_inv__']
         
     # Then check pre-conditions
     # self._check_pre_conditions(wobj, local_dict)
     if pre is not None:
         self._check_conditions(pre, local_dict, "pre")