Merge branch 'master' into orm
[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     #FIXME
54     #assert w() is None
55
56
57 def test_deref_optiondescription():
58     b = BoolOption('b', '')
59     o = OptionDescription('od', '', [b])
60     w = weakref.ref(o)
61     del(b)
62     assert w() is not None
63     del(o)
64     #FIXME
65     #assert w() is None
66
67
68 def test_deref_option_cache():
69     b = BoolOption('b', '')
70     o = OptionDescription('od', '', [b])
71     o.impl_build_cache_option()
72     w = weakref.ref(b)
73     del(b)
74     assert w() is not None
75     del(o)
76     #FIXME l'objet n'est plus en mémoire mais par contre reste dans la base
77     #Voir comment supprimer (et quand)
78     #assert w() is None
79
80
81 def test_deref_optiondescription_cache():
82     b = BoolOption('b', '')
83     o = OptionDescription('od', '', [b])
84     o.impl_build_cache_option()
85     w = weakref.ref(o)
86     del(b)
87     assert w() is not None
88     del(o)
89     #FIXME
90     #assert w() is None
91
92
93 def test_deref_option_config():
94     b = BoolOption('b', '')
95     o = OptionDescription('od', '', [b])
96     c = Config(o)
97     w = weakref.ref(b)
98     del(b)
99     assert w() is not None
100     del(o)
101     assert w() is not None
102     del(c)
103     #FIXME meme chose
104     #assert w() is None
105
106
107 #FIXME rien a voir mais si je fais un config.impl_get_path_by_opt() ca me retourne la methode !
108 def test_deref_optiondescription_config():
109     b = BoolOption('b', '')
110     o = OptionDescription('od', '', [b])
111     c = Config(o)
112     w = weakref.ref(o)
113     del(b)
114     assert w() is not None
115     del(o)
116     assert w() is not None
117     del(c)
118     #FIXME
119     #assert w() is None