optimisations and all is properties
[tiramisu.git] / test / test_option_type.py
index aab0ac7..4a83c4e 100644 (file)
@@ -7,22 +7,20 @@ from tiramisu.config import *
 from tiramisu.option import *
 
 def make_description():
-    gcoption = ChoiceOption('name', 'GC name', ['ref', 'framework'], 'ref')
-    gcdummy = BoolOption('dummy', 'dummy', default=False)
-    # hidding dummy here
-    gcdummy.hide()
+    gcoption = ChoiceOption('name', 'GC name', ('ref', 'framework'), 'ref')
+    gcdummy = BoolOption('dummy', 'dummy', default=False, properties=(('hidden'),))
     objspaceoption = ChoiceOption('objspace', 'Object space',
-                                ['std', 'thunk'], 'std')
+                                ('std', 'thunk'), 'std')
     booloption = BoolOption('bool', 'Test boolean option', default=True)
     intoption = IntOption('int', 'Test int option', default=0)
     floatoption = FloatOption('float', 'Test float option', default=2.3)
     stroption = StrOption('str', 'Test string option', default="abc")
 
     wantref_option = BoolOption('wantref', 'Test requires', default=False,
-                                    requires=[('gc.name', 'ref')])
+                                    requires=(('gc.name', 'ref', 'hidden'),))
     wantframework_option = BoolOption('wantframework', 'Test requires',
                                       default=False,
-                                      requires=[('gc.name', 'framework')])
+                                      requires=(('gc.name', 'framework', 'hidden'),))
 
     # ____________________________________________________________
     booloptiontwo = BoolOption('booltwo', 'Test boolean option two', default=False)
@@ -38,20 +36,20 @@ def make_description():
 #____________________________________________________________
 #freeze
 def make_description_freeze():
-    gcoption = ChoiceOption('name', 'GC name', ['ref', 'framework'], 'ref')
+    gcoption = ChoiceOption('name', 'GC name', ('ref', 'framework'), 'ref')
     gcdummy = BoolOption('dummy', 'dummy', default=False)
     objspaceoption = ChoiceOption('objspace', 'Object space',
-                                ['std', 'thunk'], 'std')
+                                ('std', 'thunk'), 'std')
     booloption = BoolOption('bool', 'Test boolean option', default=True)
     intoption = IntOption('int', 'Test int option', default=0)
     floatoption = FloatOption('float', 'Test float option', default=2.3)
     stroption = StrOption('str', 'Test string option', default="abc")
     boolop = BoolOption('boolop', 'Test boolean option op', default=True)
     wantref_option = BoolOption('wantref', 'Test requires', default=False,
-                                    requires=['boolop'])
+                                    requires=(('boolop', True, 'hidden'),))
     wantframework_option = BoolOption('wantframework', 'Test requires',
                                       default=False,
-                                      requires=['boolop'])
+                                      requires=(('boolop', True, 'hidden'),))
 
     gcgroup = OptionDescription('gc', '', [gcoption, gcdummy, floatoption])
     descr = OptionDescription('tiramisu', '', [gcgroup, booloption, objspaceoption,
@@ -64,10 +62,10 @@ def test_freeze_whole_config():
     descr = make_description_freeze()
     conf = Config(descr)
     settings = conf.cfgimpl_get_settings()
-    settings.freeze_everything()
+    settings.enable_property('everything_frozen')
     assert conf.gc.dummy == False
     raises(TypeError, "conf.gc.dummy = True")
-    settings.un_freeze_everything()
+    settings.disable_property('everything_frozen')
     conf.gc.dummy = True
     assert conf.gc.dummy == True
 
@@ -75,8 +73,11 @@ def test_freeze_one_option():
     "freeze an option "
     descr = make_description_freeze()
     conf = Config(descr)
+    setting = conf.cfgimpl_get_settings()
+    setting.read_write()
     #freeze only one option
-    conf.gc._cfgimpl_descr.dummy.freeze()
+    dummy = conf.unwrap_from_path('gc.dummy')
+    conf.gc.cfgimpl_get_settings().add_property('frozen', dummy)
     assert conf.gc.dummy == False
     raises(TypeError, "conf.gc.dummy = True")
 
@@ -85,45 +86,48 @@ def test_frozen_value():
     s = StrOption("string", "", default="string")
     descr = OptionDescription("options", "", [s])
     config = Config(descr)
-    settings = config.cfgimpl_get_settings()
-    settings.freeze()
-    s.freeze()
+    settings = config.cfgimpl_get_settings().enable_property('frozen')
+    config.cfgimpl_get_settings().add_property('frozen', s)
     raises(TypeError, 'config.string = "egg"')
 
 def test_freeze():
     "freeze a whole configuration object"
     descr = make_description()
     conf = Config(descr)
-    settings = conf.cfgimpl_get_settings()
-    settings.freeze()
+    settings = conf.cfgimpl_get_settings().enable_property('frozen')
     name = conf.unwrap_from_path("gc.name")
-    name.freeze()
+    conf.cfgimpl_get_settings().add_property('frozen', name)
     raises(TypeError, "conf.gc.name = 'framework'")
 # ____________________________________________________________
 def test_is_hidden():
     descr = make_description()
     config = Config(descr)
-    assert config.gc._cfgimpl_descr.dummy._is_hidden() == True
+    setting = config.cfgimpl_get_settings()
+    setting.read_write()
+    dummy = config.unwrap_from_path('gc.dummy')
+    assert not config.cfgimpl_get_settings().has_property('frozen', dummy)
     # setattr
     raises(PropertiesOptionError, "config.gc.dummy == False")
     # getattr
     raises(PropertiesOptionError, "config.gc.dummy")
     # I want to access to this option anyway
     opt = config.unwrap_from_path("gc.dummy")
-    assert config._cfgimpl_context._cfgimpl_values[opt] == False
+    assert config.cfgimpl_get_values()[opt] == False
 
 def test_group_is_hidden():
     descr = make_description()
     config = Config(descr)
+    setting = config.cfgimpl_get_settings()
+    setting.read_write()
     gc = config.unwrap_from_path('gc')
     dummy = config.unwrap_from_path('gc.dummy')
-    gc.hide()
+    config.cfgimpl_get_settings().add_property('hidden', gc)
     raises(PropertiesOptionError, "config.gc.dummy")
-    assert gc._is_hidden()
+    assert config.cfgimpl_get_settings().has_property('hidden', gc)
     raises(PropertiesOptionError, "config.gc.float")
     # manually set the subconfigs to "show"
-    gc.show()
-    assert gc._is_hidden() == False
+    config.cfgimpl_get_settings().del_property('hidden', gc)
+    assert not config.cfgimpl_get_settings().has_property('hidden', gc)
     assert config.gc.float == 2.3
     #dummy est en hide
     raises(PropertiesOptionError, "config.gc.dummy == False")
@@ -131,17 +135,22 @@ def test_group_is_hidden():
 def test_global_show():
     descr = make_description()
     config = Config(descr)
-    assert config.gc._cfgimpl_descr.dummy._is_hidden() == True
+    setting = config.cfgimpl_get_settings()
+    setting.read_write()
+    dummy = config.unwrap_from_path('gc.dummy')
+    config.cfgimpl_get_settings().add_property('hidden', dummy)
+    assert config.cfgimpl_get_settings().has_property('hidden', dummy)
     raises(PropertiesOptionError, "config.gc.dummy == False")
 
 def test_with_many_subgroups():
     descr = make_description()
     config = Config(descr)
-    assert config.gc.subgroup._cfgimpl_descr.booltwo._is_hidden() == False
+    booltwo = config.unwrap_from_path('gc.subgroup.booltwo')
+    assert not config.cfgimpl_get_settings().has_property('hidden', booltwo)
     assert config.gc.subgroup.booltwo == False
-    config.gc.subgroup._cfgimpl_descr.booltwo.hide()
+    config.cfgimpl_get_settings().add_property('hidden', booltwo)
     path = 'gc.subgroup.booltwo'
     homeconfig, name = config.cfgimpl_get_home_by_path(path)
     assert name == "booltwo"
     option = getattr(homeconfig._cfgimpl_descr, name)
-    assert option._is_hidden()
+    assert config.cfgimpl_get_settings().has_property('hidden', booltwo)