my_falsify("cycle false", lambda x: (not x) or (get_from_gen(cycle(x), 1) == get_from_gen(cycle(x), 2 + 2 * len(x))), # +1 would be correct [int]) my_falsify("strict evaluation", lambda x: implies(x, (get_from_gen(cycle(x), 0) == get_from_gen(cycle(x), len(x)))), [int]) my_falsify("lazy implies", lambda x: implies(x, lambda: (get_from_gen(cycle(x), 0) == get_from_gen(cycle(x), len(x)))), [int]) my_falsify("fix string", lambda s, ps, cs: for_all_not_in(ps, fix_string(s, ps, cs), cs), str, [str], [str]) class MyInt(int): def __new__(cls, v): return super(MyInt, cls).__new__(cls, v) @strategy_for(MyInt) class MyIntStrategy(SearchStrategy): # simplified def produce(self, size, flags): return MyInt(randint(-2 ** 5, 2 ** 5))
def fix_one(self, problem, correction): self.target = fix_string(self.target, [problem], [correction]) assert problem not in self.target or problem == correction self.target = " ".join(self.target)
def test_fix_string(s, ps, cs): assert for_all_not_in(ps, fix_string(s, ps, cs), cs)