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, GroupConfig, MetaConfig
6 from tiramisu.option import BoolOption, IntOption, 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 #    FIXME quand c'est un dico, il faut garder la reference
70 #    mais la comme c'est dans la base, forcement c'est dereference
71 #    b = BoolOption('b', '')
72 #    o = OptionDescription('od', '', [b])
73 #    o.impl_build_cache_option()
74 #    w = weakref.ref(b)
75 #    del(b)
76 #    assert w() is not None
77 #    del(o)
78 #    #FIXME l'objet n'est plus en mémoire mais par contre reste dans la base
79 #    #Voir comment supprimer (et quand)
80 #    #assert w() is None
81
82
83 def test_deref_optiondescription_cache():
84     b = BoolOption('b', '')
85     o = OptionDescription('od', '', [b])
86     o.impl_build_cache_option()
87     w = weakref.ref(o)
88     del(b)
89     assert w() is not None
90     del(o)
91     #FIXME
92     #assert w() is None
93
94
95 #def test_deref_option_config():
96 #    b = BoolOption('b', '')
97 #    o = OptionDescription('od', '', [b])
98 #    c = Config(o)
99 #    w = weakref.ref(b)
100 #    del(b)
101 #    assert w() is not None
102 #    del(o)
103 #    assert w() is not None
104 #    del(c)
105 #    #FIXME meme chose
106 #    #assert w() is None
107
108
109 #FIXME rien a voir mais si je fais un config.impl_get_path_by_opt() ca me retourne la methode !
110 def test_deref_optiondescription_config():
111     b = BoolOption('b', '')
112     o = OptionDescription('od', '', [b])
113     c = Config(o)
114     w = weakref.ref(o)
115     del(b)
116     assert w() is not None
117     del(o)
118     assert w() is not None
119     del(c)
120     #FIXME
121     #assert w() is None
122
123
124 def test_deref_groupconfig():
125     i1 = IntOption('i1', '')
126     od1 = OptionDescription('od1', '', [i1])
127     od2 = OptionDescription('od2', '', [od1])
128     conf1 = Config(od2)
129     conf2 = Config(od2)
130     meta = GroupConfig([conf1, conf2])
131     w = weakref.ref(conf1)
132     del(conf1)
133     assert w() is not None
134     del(meta)
135     assert w() is None
136
137
138 def test_deref_metaconfig():
139     i1 = IntOption('i1', '')
140     od1 = OptionDescription('od1', '', [i1])
141     od2 = OptionDescription('od2', '', [od1])
142     conf1 = Config(od2)
143     conf2 = Config(od2)
144     meta = MetaConfig([conf1, conf2])
145     w = weakref.ref(conf1)
146     del(conf1)
147     assert w() is not None
148     del(meta)
149     assert w() is None