# coding: utf-8 import autopath #from py.test import raises from tiramisu.config import Config from tiramisu.option import BoolOption, OptionDescription import weakref def test_deref_storage(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) c = Config(o) w = weakref.ref(c.cfgimpl_get_values()._p_) del(c) assert w() is None def test_deref_value(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) c = Config(o) w = weakref.ref(c.cfgimpl_get_values()) del(c) assert w() is None def test_deref_setting(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) c = Config(o) w = weakref.ref(c.cfgimpl_get_settings()) del(c) assert w() is None def test_deref_config(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) c = Config(o) w = weakref.ref(c) del(c) assert w() is None def test_deref_option(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) w = weakref.ref(b) del(b) assert w() is not None del(o) #FIXME #assert w() is None def test_deref_optiondescription(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) w = weakref.ref(o) del(b) assert w() is not None del(o) #FIXME #assert w() is None #def test_deref_option_cache(): # FIXME quand c'est un dico, il faut garder la reference # mais la comme c'est dans la base, forcement c'est dereference # b = BoolOption('b', '') # o = OptionDescription('od', '', [b]) # o.impl_build_cache_option() # w = weakref.ref(b) # del(b) # assert w() is not None # del(o) # #FIXME l'objet n'est plus en mémoire mais par contre reste dans la base # #Voir comment supprimer (et quand) # #assert w() is None def test_deref_optiondescription_cache(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) o.impl_build_cache_option() w = weakref.ref(o) del(b) assert w() is not None del(o) #FIXME #assert w() is None #def test_deref_option_config(): # b = BoolOption('b', '') # o = OptionDescription('od', '', [b]) # c = Config(o) # w = weakref.ref(b) # del(b) # assert w() is not None # del(o) # assert w() is not None # del(c) # #FIXME meme chose # #assert w() is None #FIXME rien a voir mais si je fais un config.impl_get_path_by_opt() ca me retourne la methode ! def test_deref_optiondescription_config(): b = BoolOption('b', '') o = OptionDescription('od', '', [b]) c = Config(o) w = weakref.ref(o) del(b) assert w() is not None del(o) assert w() is not None del(c) #FIXME #assert w() is None