def test_get_optimal_sequence_caching(self): """Test caching of ``get_optimal_sequence()``.""" _, generator, _ = set_random_seed(seed=42) for shapes in _generate_shapes(iterations=10, generator=generator): # get optimal sequence first_time = timeit.default_timer() get_optimal_sequence(*shapes) first_time = timeit.default_timer() - first_time # check caching samples, second_time = timeit.Timer(stmt="get_optimal_sequence(*shapes)", globals=dict( get_optimal_sequence=get_optimal_sequence, shapes=shapes, )).autorange() second_time /= samples assert second_time < first_time
def test_get_optimal_sequence(self): """Test ``get_optimal_sequence()``.""" _, generator, _ = set_random_seed(seed=42) for shapes in _generate_shapes(generator=generator): # get optimal sequence opt_cost, opt_seq = get_optimal_sequence(*shapes) # check correct cost exp_opt_cost = estimate_cost_of_sequence(*(shapes[i] for i in opt_seq)) assert exp_opt_cost == opt_cost # check optimality for perm in itertools.permutations(list(range(len(shapes)))): cost = estimate_cost_of_sequence(*(shapes[i] for i in perm)) assert cost >= opt_cost