import itertools


def generate_test_list(settings):
    """All options that need to be tested are multiplied together.
    This creates a full list of all possible benchmark permutations that
    need to be run.
    """
    loop_items = settings["loop_items"]
    dataset = []

    for item in loop_items:
        result = settings[item]
        dataset.append(result)

    benchmark_list = list(itertools.product(*dataset))
    result = [dict(zip(loop_items, item)) for item in benchmark_list]
    # Augment display with extra sanity check
    settings["benchmarks"] = len(result)
    # pprint.pprint(result)
    return result