remove pep8 validation errors
[tiramisu.git] / test / test_dereference.py
1 # coding: utf-8
2 from autopath import do_autopath
3 do_autopath()
4
5 from tiramisu.config import Config, GroupConfig, MetaConfig
6 from tiramisu.option import BoolOption, IntOption, StrOption, OptionDescription, submulti
7 import weakref
8
9
10 IS_DEREFABLE = True
11
12
13 def test_deref_storage():
14     b = BoolOption('b', '')
15     o = OptionDescription('od', '', [b])
16     c = Config(o)
17     w = weakref.ref(c.cfgimpl_get_values()._p_)
18     del(c)
19     assert w() is None
20
21
22 def test_deref_value():
23     b = BoolOption('b', '')
24     o = OptionDescription('od', '', [b])
25     c = Config(o)
26     w = weakref.ref(c.cfgimpl_get_values())
27     del(c)
28     assert w() is None
29
30
31 def test_deref_setting():
32     b = BoolOption('b', '')
33     o = OptionDescription('od', '', [b])
34     c = Config(o)
35     w = weakref.ref(c.cfgimpl_get_settings())
36     del(c)
37     assert w() is None
38
39
40 def test_deref_config():
41     b = BoolOption('b', '')
42     o = OptionDescription('od', '', [b])
43     c = Config(o)
44     w = weakref.ref(c)
45     del(c)
46     assert w() is None
47
48
49 def test_deref_option():
50     global IS_DEREFABLE
51     b = BoolOption('b', '')
52     o = OptionDescription('od', '', [b])
53     w = weakref.ref(b)
54     del(b)
55     try:
56         assert w() is not None
57     except AssertionError:
58         IS_DEREFABLE = False
59         return
60     del(o)
61     assert w() is None
62
63
64 def test_deref_optiondescription():
65     if not IS_DEREFABLE:
66         return
67     b = BoolOption('b', '')
68     o = OptionDescription('od', '', [b])
69     w = weakref.ref(o)
70     del(b)
71     assert w() is not None
72     del(o)
73     assert w() is None
74
75
76 def test_deref_option_cache():
77     if not IS_DEREFABLE:
78         return
79     b = BoolOption('b', '')
80     o = OptionDescription('od', '', [b])
81     o.impl_build_cache_option()
82     w = weakref.ref(b)
83     del(b)
84     assert w() is not None
85     del(o)
86     assert w() is None
87
88
89 def test_deref_optiondescription_cache():
90     b = BoolOption('b', '')
91     o = OptionDescription('od', '', [b])
92     o.impl_build_cache_option()
93     w = weakref.ref(o)
94     del(b)
95     assert w() is not None
96     del(o)
97     assert w() is None
98
99
100 def test_deref_option_config():
101     if not IS_DEREFABLE:
102         return
103     b = BoolOption('b', '')
104     o = OptionDescription('od', '', [b])
105     c = Config(o)
106     w = weakref.ref(b)
107     del(b)
108     assert w() is not None
109     del(o)
110     assert w() is not None
111     del(c)
112     assert w() is None
113
114
115 def test_deref_optiondescription_config():
116     b = BoolOption('b', '')
117     o = OptionDescription('od', '', [b])
118     c = Config(o)
119     w = weakref.ref(o)
120     del(b)
121     assert w() is not None
122     del(o)
123     assert w() is not None
124     del(c)
125     assert w() is None
126
127
128 def test_deref_groupconfig():
129     i1 = IntOption('i1', '')
130     od1 = OptionDescription('od1', '', [i1])
131     od2 = OptionDescription('od2', '', [od1])
132     conf1 = Config(od2, 'conf1')
133     conf2 = Config(od2, 'conf2')
134     meta = GroupConfig([conf1, conf2])
135     w = weakref.ref(conf1)
136     del(conf1)
137     assert w() is not None
138     del(meta)
139     assert w() is None
140
141
142 def test_deref_metaconfig():
143     i1 = IntOption('i1', '')
144     od1 = OptionDescription('od1', '', [i1])
145     od2 = OptionDescription('od2', '', [od1])
146     conf1 = Config(od2, 'conf1')
147     conf2 = Config(od2, 'conf2')
148     meta = MetaConfig([conf1, conf2])
149     w = weakref.ref(conf1)
150     del(conf1)
151     assert w() is not None
152     del(meta)
153     assert w() is None
154
155
156 def test_deref_submulti():
157     multi = StrOption('multi', '', multi=submulti)
158     od = OptionDescription('od', '', [multi])
159     cfg = Config(od)
160     cfg.cfgimpl_get_settings().remove('cache')
161     w = weakref.ref(cfg.multi)
162     assert w() is None
163     cfg.multi.append([])
164     w = weakref.ref(cfg.multi)
165     assert w() is None
166     m = cfg.multi
167     w = weakref.ref(m)
168     z = weakref.ref(w()[0])
169     del(m)
170     assert w() is None
171     assert z() is None