add test test/test_dereference.py + memoryleaks in optiondescription's cache
[tiramisu.git] / test / test_dereference.py
1 # coding: utf-8
2 import autopath
3 #from py.test import raises
4
5 from tiramisu.config import Config
6 from tiramisu.option import BoolOption, OptionDescription
7 import weakref
8
9
10 def test_deref_storage():
11     b = BoolOption('b', '')
12     o = OptionDescription('od', '', [b])
13     c = Config(o)
14     w = weakref.ref(c.cfgimpl_get_values()._p_)
15     del(c)
16     assert w() is None
17
18
19 def test_deref_value():
20     b = BoolOption('b', '')
21     o = OptionDescription('od', '', [b])
22     c = Config(o)
23     w = weakref.ref(c.cfgimpl_get_values())
24     del(c)
25     assert w() is None
26
27
28 def test_deref_setting():
29     b = BoolOption('b', '')
30     o = OptionDescription('od', '', [b])
31     c = Config(o)
32     w = weakref.ref(c.cfgimpl_get_settings())
33     del(c)
34     assert w() is None
35
36
37 def test_deref_config():
38     b = BoolOption('b', '')
39     o = OptionDescription('od', '', [b])
40     c = Config(o)
41     w = weakref.ref(c)
42     del(c)
43     assert w() is None
44
45
46 def test_deref_option():
47     b = BoolOption('b', '')
48     o = OptionDescription('od', '', [b])
49     w = weakref.ref(b)
50     del(b)
51     assert w() is not None
52     del(o)
53     assert w() is None
54
55
56 def test_deref_optiondescription():
57     b = BoolOption('b', '')
58     o = OptionDescription('od', '', [b])
59     w = weakref.ref(o)
60     del(b)
61     assert w() is not None
62     del(o)
63     assert w() is None
64
65
66 def test_deref_option_cache():
67     b = BoolOption('b', '')
68     o = OptionDescription('od', '', [b])
69     o.impl_build_cache()
70     w = weakref.ref(b)
71     del(b)
72     assert w() is not None
73     del(o)
74     assert w() is None
75
76
77 def test_deref_optiondescription_cache():
78     b = BoolOption('b', '')
79     o = OptionDescription('od', '', [b])
80     o.impl_build_cache()
81     w = weakref.ref(o)
82     del(b)
83     assert w() is not None
84     del(o)
85     assert w() is None
86
87
88 def test_deref_option_config():
89     b = BoolOption('b', '')
90     o = OptionDescription('od', '', [b])
91     c = Config(o)
92     w = weakref.ref(b)
93     del(b)
94     assert w() is not None
95     del(o)
96     assert w() is not None
97     del(c)
98     assert w() is None
99
100
101 def test_deref_optiondescription_config():
102     b = BoolOption('b', '')
103     o = OptionDescription('od', '', [b])
104     c = Config(o)
105     w = weakref.ref(o)
106     del(b)
107     assert w() is not None
108     del(o)
109     assert w() is not None
110     del(c)
111     assert w() is None