def run(self, state_machine, print_steps=None): if print_steps is None: print_steps = current_verbosity() >= Verbosity.debug try: for i in hrange(self.n_steps): strategy = state_machine.steps() template_set = False if i < len(self.record): if self.record[i] is TOMBSTONE: continue _, data = self.record[i] data = list(data) for data_index in hrange(len(data) - 1, -1, -1): try: template = strategy.from_basic(data[data_index]) template_set = True break except BadData: pass if template_set: data[data_index], data[-1] = ( data[-1], data[data_index] ) else: data = [] if not template_set: parameter = strategy.draw_parameter(Random( self.parameter_seed )) template = strategy.draw_template( Random(self.templates[i]), parameter) data.append(strategy.to_basic(template)) new_record = ( strategy, data, ) if i < len(self.record): self.record[i] = new_record else: self.record.append(new_record) strategy.from_basic(self.record[i][1][-1]) value = strategy.reify(template) if print_steps: state_machine.print_step(value) state_machine.execute_step(value) finally: state_machine.teardown()
def run(self, state_machine, print_steps=None): if print_steps is None: print_steps = current_verbosity() >= Verbosity.debug try: for i in hrange(self.n_steps): strategy = state_machine.steps() template_set = False if i < len(self.record): if self.record[i] is TOMBSTONE: continue _, data = self.record[i] try: template = strategy.from_basic(data) template_set = True except BadData: pass if not template_set: parameter = strategy.draw_parameter(Random( self.parameter_seed )) template = strategy.draw_template( BuildContext(Random(self.templates[i])), parameter) new_record = ( strategy, strategy.to_basic(template) ) if i < len(self.record): self.record[i] = new_record else: self.record.append(new_record) value = strategy.reify(template) if print_steps: state_machine.print_step(value) state_machine.execute_step(value) finally: state_machine.teardown()