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
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
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
def _initializeArgumentSymbolic(self, inv: FunctionInvocation, f: str, val, st: SymbolicType): inv.addArgumentConstructor(f, val, lambda n, v: st(n, v))
def _initializeArgumentConcrete(self, inv: FunctionInvocation, f, val): inv.addArgumentConstructor(f, val, lambda n, v: val)
def createInvocation(self): return FunctionInvocation(self._execute, "main", self._reset)
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