optimisations and all is properties
[tiramisu.git] / test / test_option_setting.py
index 97a0705..c030fdb 100644 (file)
@@ -5,12 +5,13 @@ from py.test import raises
 from tiramisu.config import *
 from tiramisu.option import *
 from tiramisu.error import *
+from tiramisu.setting import owners
 
 def make_description():
-    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)
@@ -40,9 +41,7 @@ def test_setitem():
     s = StrOption("string", "", default=["string", "sdfsdf"], default_multi="prout", multi=True)
     descr = OptionDescription("options", "", [s])
     config = Config(descr)
-    print config.string[1]
     config.string[1] = "titi"
-    print config.string[1]
 
 def test_reset():
     "if value is None, resets to default owner"
@@ -51,10 +50,10 @@ def test_reset():
     config = Config(descr)
     config.string = "foo"
     assert config.string == "foo"
-    assert config._cfgimpl_values.owners[s] == owners.user
+    assert config.cfgimpl_get_values().getowner(s) == owners.user
     config.unwrap_from_path("string").reset(config)
     assert config.string == 'string'
-    assert config._cfgimpl_values.owners[s] == owners.default
+    assert config.cfgimpl_get_values().getowner(s) == owners.default
 
 def test_reset_with_multi():
     s = StrOption("string", "", default=["string"], default_multi="string" , multi=True)
@@ -63,13 +62,13 @@ def test_reset_with_multi():
 #    config.string = []
     config.unwrap_from_path("string").reset(config)
     assert config.string == ["string"]
-    assert config._cfgimpl_values.owners[s] == 'default'
+    assert config.cfgimpl_get_values().getowner(s) == 'default'
     config.string = ["eggs", "spam", "foo"]
-    assert config._cfgimpl_values.owners[s] == 'user'
+    assert config.cfgimpl_get_values().getowner(s) == 'user'
     config.string = []
     config.unwrap_from_path("string").reset(config)
 #    assert config.string == ["string"]
-    assert config._cfgimpl_values.owners[s] == 'default'
+    assert config.cfgimpl_get_values().getowner(s) == 'default'
     raises(ConfigError, "config.string = None")
 
 def test_default_with_multi():
@@ -127,13 +126,15 @@ def test_multi_with_requires():
     s = StrOption("string", "", default=["string"], default_multi="string", multi=True)
     intoption = IntOption('int', 'Test int option', default=0)
     stroption = StrOption('str', 'Test string option', default=["abc"], default_multi = "abc",
-                          requires=[('int', 1, 'hide')], multi=True)
+                          requires=[('int', 1, 'hidden')], multi=True)
     descr = OptionDescription("options", "", [s, intoption, stroption])
     config = Config(descr)
-    assert stroption._is_hidden() == False
+    setting = config.cfgimpl_get_settings()
+    setting.read_write()
+    assert not config.cfgimpl_get_settings().has_property('hidden', stroption)
     config.int = 1
     raises(PropertiesOptionError, "config.str = ['a', 'b']")
-    assert stroption._is_hidden()
+    assert config.cfgimpl_get_settings().has_property('hidden', stroption)
 
 def test__requires_with_inverted():
     s = StrOption("string", "", default=["string"], multi=True)
@@ -142,40 +143,41 @@ def test__requires_with_inverted():
                           requires=[('int', 1, 'hide', 'inverted')], multi=True)
     descr = OptionDescription("options", "", [s, intoption, stroption])
     config = Config(descr)
-    assert stroption._is_hidden() == False
+    assert not config.cfgimpl_get_settings().has_property('hidden', stroption)
     config.int = 1
-    assert stroption._is_hidden() == False
+    assert not config.cfgimpl_get_settings().has_property('hidden', stroption)
 
 def test_multi_with_requires_in_another_group():
     s = StrOption("string", "", default=["string"], multi=True)
     intoption = IntOption('int', 'Test int option', default=0)
     descr = OptionDescription("options", "", [intoption])
     stroption = StrOption('str', 'Test string option', default=["abc"],
-                          requires=[('int', 1, 'hide')], multi=True)
+                          requires=[('int', 1, 'hidden')], multi=True)
     descr = OptionDescription("opt", "", [stroption])
     descr2 = OptionDescription("opt2", "", [intoption, s, descr])
     config = Config(descr2)
-    assert stroption._is_hidden() == False
+    setting = config.cfgimpl_get_settings()
+    setting.read_write()
+    assert not config.cfgimpl_get_settings().has_property('hidden', stroption)
     config.int = 1
     raises(PropertiesOptionError,  "config.opt.str = ['a', 'b']")
-    assert stroption._is_hidden()
+    assert config.cfgimpl_get_settings().has_property('hidden', stroption)
 
 def test_apply_requires_from_config():
     s = StrOption("string", "", default=["string"], multi=True)
     intoption = IntOption('int', 'Test int option', default=0)
     descr = OptionDescription("options", "", [intoption])
     stroption = StrOption('str', 'Test string option', default=["abc"],
-                          requires=[('int', 1, 'hide')], multi=True)
+                          requires=[('int', 1, 'hidden')], multi=True)
     descr = OptionDescription("opt", "", [stroption])
     descr2 = OptionDescription("opt2", "", [intoption, s, descr])
     config = Config(descr2)
-    assert stroption._is_hidden() == False
+    setting = config.cfgimpl_get_settings()
+    setting.read_write()
+    assert not config.cfgimpl_get_settings().has_property('hidden', stroption)
     config.int = 1
-    try:
-        config.opt.str
-    except:
-        pass
-    assert stroption._is_hidden()
+    raises(PropertiesOptionError, 'config.opt.str')
+    assert config.cfgimpl_get_settings().has_property('hidden', stroption)
 
 
 def test_apply_requires_with_disabled():
@@ -183,43 +185,46 @@ def test_apply_requires_with_disabled():
     intoption = IntOption('int', 'Test int option', default=0)
     descr = OptionDescription("options", "", [intoption])
     stroption = StrOption('str', 'Test string option', default=["abc"],
-                          requires=[('int', 1, 'disable')], multi=True)
+                          requires=[('int', 1, 'disabled')], multi=True)
     descr = OptionDescription("opt", "", [stroption])
     descr2 = OptionDescription("opt2", "", [intoption, s, descr])
     config = Config(descr2)
-    assert stroption._is_disabled() == False
+    setting = config.cfgimpl_get_settings()
+    setting.read_write()
+    assert not config.cfgimpl_get_settings().has_property('disabled', stroption)
     config.int = 1
-    try:
-        config.opt.str
-    except:
-        pass
-    assert stroption._is_disabled()
+    raises(PropertiesOptionError, 'config.opt.str')
+    assert config.cfgimpl_get_settings().has_property('disabled', stroption)
 
 def test_multi_with_requires_with_disabled_in_another_group():
     s = StrOption("string", "", default=["string"], multi=True)
     intoption = IntOption('int', 'Test int option', default=0)
     descr = OptionDescription("options", "", [intoption])
     stroption = StrOption('str', 'Test string option', default=["abc"],
-                          requires=[('int', 1, 'disable')], multi=True)
+                          requires=[('int', 1, 'disabled')], multi=True)
     descr = OptionDescription("opt", "", [stroption])
     descr2 = OptionDescription("opt2", "", [intoption, s, descr])
     config = Config(descr2)
-    assert stroption._is_disabled() == False
+    setting = config.cfgimpl_get_settings()
+    setting.read_write()
+    assert not config.cfgimpl_get_settings().has_property('disabled', stroption)
     config.int = 1
     raises(PropertiesOptionError,  "config.opt.str = ['a', 'b']")
-    assert stroption._is_disabled()
+    assert config.cfgimpl_get_settings().has_property('disabled', stroption)
 
 def test_multi_with_requires_that_is_multi():
     s = StrOption("string", "", default=["string"], multi=True)
     intoption = IntOption('int', 'Test int option', default=[0], multi=True)
     stroption = StrOption('str', 'Test string option', default=["abc"],
-                          requires=[('int', [1, 1], 'hide')], multi=True)
+                          requires=[('int', [1, 1], 'hidden')], multi=True)
     descr = OptionDescription("options", "", [s, intoption, stroption])
     config = Config(descr)
-    assert stroption._is_hidden() == False
+    setting = config.cfgimpl_get_settings()
+    setting.read_write()
+    assert not config.cfgimpl_get_settings().has_property('hidden', stroption)
     config.int = [1, 1]
     raises(PropertiesOptionError, "config.str = ['a', 'b']")
-    assert stroption._is_hidden()
+    assert config.cfgimpl_get_settings().has_property('hidden', stroption)
 
 def test_multi_with_bool():
     s = BoolOption("bool", "", default=[False], multi=True)
@@ -227,7 +232,7 @@ def test_multi_with_bool():
     config = Config(descr)
     assert descr.bool.multi == True
     config.bool = [True, False]
-    assert config._cfgimpl_context._cfgimpl_values[s] == [True, False]
+    assert config.cfgimpl_get_values()[s] == [True, False]
     assert config.bool == [True, False]
 
 def test_multi_with_bool_two():
@@ -238,7 +243,7 @@ def test_multi_with_bool_two():
     raises(ConfigError, "config.bool = True")
 
 def test_choice_access_with_multi():
-    ch = ChoiceOption("t1", "", ["a", "b"], default=["a"], multi=True)
+    ch = ChoiceOption("t1", "", ("a", "b"), default=["a"], multi=True)
     descr = OptionDescription("options", "", [ch])
     config = Config(descr)
     config.t1 = ["a", "b", "a", "b"]
@@ -257,7 +262,7 @@ def test_dwim_set():
     descr = OptionDescription("opt", "", [
         OptionDescription("sub", "", [
             BoolOption("b1", ""),
-            ChoiceOption("c1", "", ['a', 'b', 'c'], 'a'),
+            ChoiceOption("c1", "", ('a', 'b', 'c'), 'a'),
             BoolOption("d1", ""),
         ]),
         BoolOption("b2", ""),
@@ -287,13 +292,14 @@ def test_more_set():
     assert config.int == 23
 
 def test_set_with_hidden_option():
-    boolopt = BoolOption("a", "", default=False)
-    boolopt.hide()
+    boolopt = BoolOption("a", "", default=False, properties=(('hidden'),))
     descr = OptionDescription("opt", "", [
         OptionDescription("s1", "", [boolopt]),
         IntOption("int", "", default=42)])
     d = {'s1.a': True, 'int': 23}
     config = Config(descr)
+    setting = config.cfgimpl_get_settings()
+    setting.read_write()
     raises(PropertiesOptionError, "config.set(**d)")
 
 def test_set_with_unknown_option():
@@ -380,16 +386,17 @@ def test_access_by_get():
     assert cfg.get('dummy') == False
 
 def test_access_by_get_whith_hide():
-    b1 = BoolOption("b1", "")
-    b1.hide()
+    b1 = BoolOption("b1", "", properties=(('hidden'),))
     descr = OptionDescription("opt", "", [
     OptionDescription("sub", "", [
         b1,
-        ChoiceOption("c1", "", ['a', 'b', 'c'], 'a'),
+        ChoiceOption("c1", "", ('a', 'b', 'c'), 'a'),
         BoolOption("d1", ""),
     ]),
     BoolOption("b2", ""),
     BoolOption("d1", ""),
     ])
     c = Config(descr)
-    raises(PropertiesOptionError, "c.get('b1')")
+    setting = c.cfgimpl_get_settings()
+    setting.read_write()
+    raises(NotFoundError, "c.get('b1')")