예제 #1
0
def test_smallish_sparse_map():
    data = "1 2 3 4 5 6 7 8 9 10 11".split()
    incomplete_data = data[:-6]
    sparse_spec = SparseEnumap("ThingSparse", "a b c d e f g h i j k")
    spec = Enumap("Thing", sparse_spec.names())

    print()
    print(spec.map(*data))
    print(spec.map(*data, d="override"))
    print(sparse_spec.map(*incomplete_data))

    # time Enumap.map() when all data is given
    enumap_map_time = timeit("spec.map(*data)",
                             globals=dict(data=data, spec=spec),
                             number=N_RUNS)

    # time Enumap.map() when all data is given as kwargs
    kwarg_data = dict(zip(spec.names(), data))
    enumap_kwargs_map_time = timeit("spec.map(**data)",
                                    globals=dict(data=kwarg_data, spec=spec),
                                    number=N_RUNS)

    # time Enumap.map() when data is given with overrides
    enumap_override_map_time = timeit("spec.map(*data, d='override')",
                                      globals=dict(data=data, spec=spec),
                                      number=N_RUNS)

    # time SparseEnumap.map() when partial data is given
    enumap_sparse_map_time = timeit("spec.map(*data)",
                                    globals=dict(data=incomplete_data,
                                                 spec=sparse_spec),
                                    number=N_RUNS)

    # time a regular dict(zip(...)) call
    regular_dict_time = timeit("dict(zip(spec.names(), data))",
                               globals=dict(data=data, spec=spec),
                               number=N_RUNS)

    # time a regular OrderedDict(zip(...)) call
    ordered_dict_time = timeit("OrderedDict(zip(spec.names(), data))",
                               globals=dict(data=data,
                                            OrderedDict=OrderedDict,
                                            spec=spec),
                               number=N_RUNS)

    print(f"{'Enumap.map':<40} {enumap_map_time:.2f}")
    print(f"{'Enumap.map (with kwargs)':<40} {enumap_kwargs_map_time:.2f}")
    print(f"{'Enumap.map (with override)':<40} {enumap_override_map_time:.2f}")
    print(f"{'Enumap.map (sparse)':<40} {enumap_sparse_map_time:.2f}")
    print(f"{'dict':<40} {regular_dict_time:.2f}")
    print(f"{'OrderedDict':<40} {ordered_dict_time:.2f}")
예제 #2
0
파일: test.py 프로젝트: TadLeonard/enumap
def test_map():
    a = Enumap("a", names="b c e")
    assert (a.map(1, 2, 3, e=33) ==
            OrderedDict([('b', 1), ('c', 2), ('e', 33)]))
예제 #3
0
파일: test.py 프로젝트: TadLeonard/enumap
def test_copy_from_names():
    """Check that Enumap.names() can be used to construct another Enumap"""
    a = Enumap("a", "b c d")
    b = Enumap("b", a.names())
    assert a.map(*range(3)) == b.map(*range(3))