Exemplo n.º 1
0
	def create_invocation(self):
		inv = FunctionInvocation(self.execute)
		# associate a SymbolicInteger with each formal parameter of function
		func = self.app.__dict__[self.test_name]
		argspec = inspect.getargspec(func)
		for a in argspec.args:
			inv.addSymbolicParameter(a, a, newInteger)
		return inv
Exemplo n.º 2
0
def createInvocation(fn, symarg, reset=lambda: None):
    inv = FunctionInvocation(fn, reset)
    argspec = inspect.getargspec(fn)
    for a in argspec.args:
        if not a in inv.getNames():
            symarg(inv, a)
            #inv.addArgumentConstructor(a, 0, symarg)
    return inv
Exemplo n.º 3
0
 def createInvocation(self):
     inv = FunctionInvocation(self._execute, self.entrypoint, self._reset)
     func = self.app.__dict__[self.entrypoint]
     argspec = inspect.getargspec(func)
     # check to see if user specified initial values of arguments
     if "concrete_args" in func.__dict__:
         for (f, v) in func.concrete_args.items():
             if not f in argspec.args:
                 print("Error in @concrete: " + self.entrypoint +
                       " has no argument named " + f)
                 raise ImportError()
             else:
                 self._initializeArgumentConcrete(inv, f, v)
     if "symbolic_args" in func.__dict__:
         for (f, v) in func.symbolic_args.items():
             if not f in argspec.args:
                 print("Error (@symbolic): " + self.entrypoint +
                       " has no argument named " + f)
                 raise ImportError()
             elif f in inv.getNames():
                 print("Argument " + f +
                       " defined in both @concrete and @symbolic")
                 raise ImportError()
             else:
                 s = getSymbolic(v)
                 if (s == None):
                     print(
                         "Error at argument " + f + " of entry point " +
                         self.entrypoint +
                         " : no corresponding symbolic type found for type "
                         + str(type(v)))
                     raise ImportError()
                 self._initializeArgumentSymbolic(inv, f, v, s)
     for a in argspec.args:
         if not a in inv.getNames():
             self._initializeArgumentSymbolic(inv, a, 0, SymbolicInteger)
     if "policy" in func.__dict__:
         inv.addPolicy(func.policy)
     if "precondition" in func.__dict__:
         inv.addPrecondition(func.precondition)
     return inv
Exemplo n.º 4
0
 def createInvocation(self):
     inv = FunctionInvocation(self._execute, self.entrypoint, self._reset)
     func = self.app.__dict__[self.entrypoint]
     argspec = inspect.getargspec(func)
     # check to see if user specified initial values of arguments
     if "concrete_args" in func.__dict__:
         for (f, v) in func.concrete_args.items():
             if not f in argspec.args:
                 print("Error in @concrete: " + self.entrypoint + " has no argument named " + f)
                 raise ImportError()
             else:
                 self._initializeArgumentConcrete(inv, f, v)
     if "symbolic_args" in func.__dict__:
         for (f, v) in func.symbolic_args.items():
             if not f in argspec.args:
                 print("Error (@symbolic): " + self.entrypoint + " has no argument named " + f)
                 raise ImportError()
             elif f in inv.getNames():
                 print("Argument " + f + " defined in both @concrete and @symbolic")
                 raise ImportError()
             else:
                 s = getSymbolic(v)
                 if (s == None):
                     print(
                         "Error at argument " + f + " of entry point " + self.entrypoint +
                         " : no corresponding symbolic type found for type " + str(type(v)))
                     raise ImportError()
                 self._initializeArgumentSymbolic(inv, f, v, s)
     for a in argspec.args:
         if not a in inv.getNames():
             self._initializeArgumentSymbolic(inv, a, 0, SymbolicInteger)
     if "policy" in func.__dict__:
         inv.addPolicy(func.policy)
     if "precondition" in func.__dict__:
         inv.addPrecondition(func.precondition)
     return inv
Exemplo n.º 5
0
 def _initializeArgumentSymbolic(self, inv: FunctionInvocation, f: str, val, st: SymbolicType):
     inv.addArgumentConstructor(f, val, lambda n, v: st(n, v))
Exemplo n.º 6
0
 def _initializeArgumentConcrete(self, inv: FunctionInvocation, f, val):
     inv.addArgumentConstructor(f, val, lambda n, v: val)
Exemplo n.º 7
0
 def createInvocation(self):
     return FunctionInvocation(self._execute, "main", self._reset)
Exemplo n.º 8
0
 def _initializeArgumentSymbolic(self, inv: FunctionInvocation, f: str, val,
                                 st: SymbolicType):
     inv.addArgumentConstructor(f, val, lambda n, v: st(n, v))
Exemplo n.º 9
0
 def _initializeArgumentConcrete(self, inv: FunctionInvocation, f, val):
     inv.addArgumentConstructor(f, val, lambda n, v: val)
Exemplo n.º 10
0
 def createInvocation(self):
     inv = FunctionInvocation(self._execute, "main", self._reset)
     for variable, type in self.tracked_inputs.items():
         self._initializeArgumentSymbolic(inv, variable, type(),
                                          getSymbolic(type()))
     return inv