Completed
Push — master ( 31497c...f2958e )
by Ionel Cristian
01:00
created

test_cnamedtuple()   A

Complexity

Conditions 2

Size

Total Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
dl 0
loc 2
rs 10
c 0
b 0
f 0
1
from collections import namedtuple
2
from functools import partial
3
4
from attr import ib as badly_named_field
5
from attr import s as badly_named_class_decorator
6
from attr import Factory
7
from attr import make_class
8
from characteristic import Attribute
9
from characteristic import attributes
10
from cnamedtuple import namedtuple as cnamedtuple
11
12
from fields import Fields
13
from fields import SlotsFields
14
from fields import Tuple
15
from fields import __base__
16
from fields import class_sealer
17
from fields import factory
18
from fields import make_init_func
19
20
21
@attributes(["a", "b", Attribute("c", default_value="abc")])
22
class characteristic_class(object):
23
    pass
24
25
26
@badly_named_class_decorator
27
class attrs_decorated_class(object):
28
    a = badly_named_field()
29
    b = badly_named_field()
30
    c = badly_named_field(default=Factory("abc"))
31
32
33
class fields_nosuper_class(
34
    factory(
35
        class_sealer,
36
        base=object,
37
        make_init_func=partial(make_init_func, super_call=False)
38
    ).a.b.c["abc"]
39
):
40
    pass
41
42
43
class fields_class(Fields.a.b.c["abc"]):
44
    pass
45
46
47
class slots_class(SlotsFields.a.b.c["abc"]):
48
    pass
49
50
51
class tuple_class(Tuple.a.b.c["abc"]):
52
    pass
53
54
55
def make_super_dumb_class():
56
    class super_dumb_class(__base__):
57
        def __init__(self, a, b, c="abc"):
58
            self.a = a
59
            self.b = b
60
            self.c = c
61
            super(super_dumb_class, self).__init__(a=a, b=b, c=c)
62
    return super_dumb_class
63
super_dumb_class = make_super_dumb_class()
64
65
class dumb_class(object):
66
    def __init__(self, a, b, c="abc"):
67
        self.a = a
68
        self.b = b
69
        self.c = c
70
71
namedtuple_class = namedtuple("namedtuple_class", ["a", "b", "c"])
72
cnamedtuple_class = cnamedtuple("namedtuple_class", ["a", "b", "c"])
73
attrs_class = make_class("attrs_class", ["a", "b", "c"])
74
75
76
def test_characteristic(benchmark):
77
    assert benchmark(partial(characteristic_class, a=1, b=2, c=1))
78
79
80
def test_fields(benchmark):
81
    assert benchmark(partial(fields_class, a=1, b=2, c=1))
82
83
84
def test_fields_nosuper(benchmark):
85
    assert benchmark(partial(fields_nosuper_class, a=1, b=2, c=1))
86
87
88
def test_slots_fields(benchmark):
89
    assert benchmark(partial(slots_class, a=1, b=2, c=1))
90
91
92
def test_super_dumb(benchmark):
93
    assert benchmark(partial(super_dumb_class, a=1, b=2, c=1))
94
95
96
def test_dumb(benchmark):
97
    assert benchmark(partial(dumb_class, a=1, b=2, c=1))
98
99
100
def test_tuple(benchmark):
101
    assert benchmark(partial(tuple_class, a=1, b=2, c=1))
102
103
104
def test_namedtuple(benchmark):
105
    assert benchmark(partial(namedtuple_class, a=1, b=2, c=1))
106
107
def test_cnamedtuple(benchmark):
108
    assert benchmark(partial(cnamedtuple_class, a=1, b=2, c=1))
109
110
111
def test_attrs_decorated_class(benchmark):
112
    assert benchmark(partial(attrs_decorated_class, a=1, b=2, c=1))
113
114
115
def test_attrs_class(benchmark):
116
    assert benchmark(partial(attrs_class, a=1, b=2, c=1))
117