def test_shrinks_down_to_sorted_the_slow_way(ls): # We normally would short-circuit and find that we can sort this # automatically, but here we test that a single run_step could put the # list in sorted order anyway if it had to, and that that is just an # optimisation. shrinker = Ordering(ls, lambda ls: True, random=Random(0), full=False) shrinker.run_step() assert list(shrinker.current) == sorted(ls)
def test_adaptively_shrinks_around_hole(): initial = list(range(1000, 0, -1)) initial[500] = 2000 intended_result = sorted(initial) intended_result.insert(500, intended_result.pop()) shrinker = Ordering(initial, lambda ls: ls[500] == 2000, random=Random(0), full=True) shrinker.run() assert shrinker.current[500] == 2000 assert list(shrinker.current) == intended_result assert shrinker.calls <= 60