the value owner is a string now
[tiramisu.git] / test / test_option_setting.py
index 2b7b88c..f7a8903 100644 (file)
@@ -18,7 +18,7 @@ def make_description():
     boolop = BoolOption('boolop', 'Test boolean option op', default=True)
     wantref_option = BoolOption('wantref', 'Test requires', default=False)
     wantframework_option = BoolOption('wantframework', 'Test requires',
-                                      default=False)    
+                                      default=False)
     gcgroup = OptionDescription('gc', '', [gcoption, gcdummy, floatoption])
     descr = OptionDescription('tiramisu', '', [gcgroup, booloption, objspaceoption,
                                            wantref_option, stroption,
@@ -43,7 +43,7 @@ def test_setitem():
     print config.string[1]
     config.string[1] = "titi"
     print config.string[1]
-    
+
 def test_reset():
     "if value is None, resets to default owner"
     s = StrOption("string", "", default="string")
@@ -52,7 +52,7 @@ def test_reset():
     config.string = "foo"
     assert config.string == "foo"
     assert config._cfgimpl_value_owners['string'] == 'user'
-    config.string = None
+    config.unwrap_from_path("string").reset(config)
     assert config.string == 'string'
     assert config._cfgimpl_value_owners['string'] == 'default'
 
@@ -60,14 +60,16 @@ def test_reset_with_multi():
     s = StrOption("string", "", default=["string"], default_multi="string" , multi=True)
     descr = OptionDescription("options", "", [s])
     config = Config(descr)
-    config.string = []
+#    config.string = []
+    config.unwrap_from_path("string").reset(config)
     assert config.string == ["string"]
-    assert config._cfgimpl_value_owners['string'] == ['default']
+    assert config._cfgimpl_value_owners['string'] == 'default'
     config.string = ["eggs", "spam", "foo"]
-    assert config._cfgimpl_value_owners['string'] == ['user', 'user', 'user']
+    assert config._cfgimpl_value_owners['string'] == 'user'
     config.string = []
-    assert config.string == ["string"]
-    assert config._cfgimpl_value_owners['string'] == ['default']
+    config.unwrap_from_path("string").reset(config)
+#    assert config.string == ["string"]
+    assert config._cfgimpl_value_owners['string'] == 'default'
     raises(ConfigError, "config.string = None")
 
 def test_default_with_multi():
@@ -80,7 +82,7 @@ def test_default_with_multi():
     descr = OptionDescription("options", "", [s])
     config = Config(descr)
     assert config.string == []
-    
+
 def test_idontexist():
     descr = make_description()
     cfg = Config(descr)
@@ -109,10 +111,10 @@ def test_access_with_multi_default():
     s = StrOption("string", "", default=["string"], multi=True)
     descr = OptionDescription("options", "", [s])
     config = Config(descr)
-    assert config._cfgimpl_value_owners["string"] == ['default']
+    assert config._cfgimpl_value_owners["string"] == 'default'
     config.string = ["foo", "bar"]
     assert config.string == ["foo", "bar"]
-    assert config._cfgimpl_value_owners["string"] == ['user', 'user']
+    assert config._cfgimpl_value_owners["string"] == 'user'
 
 #def test_attribute_access_with_multi2():
 #    s = StrOption("string", "", default="string", multi=True)
@@ -124,13 +126,13 @@ def test_access_with_multi_default():
 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", 
+    stroption = StrOption('str', 'Test string option', default=["abc"], default_multi = "abc",
                           requires=[('int', 1, 'hide')], multi=True)
     descr = OptionDescription("options", "", [s, intoption, stroption])
     config = Config(descr)
     assert stroption._is_hidden() == False
     config.int = 1
-    raises(HiddenOptionError, "config.str = ['a', 'b']")
+    raises(PropertiesOptionError, "config.str = ['a', 'b']")
     assert stroption._is_hidden()
 
 def test__requires_with_inverted():
@@ -148,21 +150,21 @@ 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"], 
+    stroption = StrOption('str', 'Test string option', default=["abc"],
                           requires=[('int', 1, 'hide')], multi=True)
     descr = OptionDescription("opt", "", [stroption])
     descr2 = OptionDescription("opt2", "", [intoption, s, descr])
     config = Config(descr2)
     assert stroption._is_hidden() == False
     config.int = 1
-    raises(HiddenOptionError,  "config.opt.str = ['a', 'b']")
+    raises(PropertiesOptionError,  "config.opt.str = ['a', 'b']")
     assert stroption._is_hidden()
 
 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"], 
+    stroption = StrOption('str', 'Test string option', default=["abc"],
                           requires=[('int', 1, 'hide')], multi=True)
     descr = OptionDescription("opt", "", [stroption])
     descr2 = OptionDescription("opt2", "", [intoption, s, descr])
@@ -172,15 +174,15 @@ def test_apply_requires_from_config():
     try:
         config.opt.str
     except:
-        pass 
+        pass
     assert stroption._is_hidden()
-    
+
 
 def test_apply_requires_with_disabled():
     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"], 
+    stroption = StrOption('str', 'Test string option', default=["abc"],
                           requires=[('int', 1, 'disable')], multi=True)
     descr = OptionDescription("opt", "", [stroption])
     descr2 = OptionDescription("opt2", "", [intoption, s, descr])
@@ -190,33 +192,33 @@ def test_apply_requires_with_disabled():
     try:
         config.opt.str
     except:
-        pass 
+        pass
     assert stroption._is_disabled()
 
 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"], 
+    stroption = StrOption('str', 'Test string option', default=["abc"],
                           requires=[('int', 1, 'disable')], multi=True)
     descr = OptionDescription("opt", "", [stroption])
     descr2 = OptionDescription("opt2", "", [intoption, s, descr])
     config = Config(descr2)
     assert stroption._is_disabled() == False
     config.int = 1
-    raises(DisabledOptionError,  "config.opt.str = ['a', 'b']")
+    raises(PropertiesOptionError,  "config.opt.str = ['a', 'b']")
     assert stroption._is_disabled()
 
 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"], 
+    stroption = StrOption('str', 'Test string option', default=["abc"],
                           requires=[('int', [1, 1], 'hide')], multi=True)
     descr = OptionDescription("options", "", [s, intoption, stroption])
     config = Config(descr)
     assert stroption._is_hidden() == False
     config.int = [1, 1]
-    raises(HiddenOptionError, "config.str = ['a', 'b']")
+    raises(PropertiesOptionError, "config.str = ['a', 'b']")
     assert stroption._is_hidden()
 
 def test_multi_with_bool():
@@ -250,16 +252,6 @@ def test_setoption_from_option():
     cfg = Config(descr)
     booloption.setoption(cfg, False, 'owner')
     assert cfg.bool == False
-# ____________________________________________________________
-def test_set_mode_in_config():
-    booloption = BoolOption('bool', 'Test boolean option', default=True, 
-                                                                  mode='expert')
-    descr = OptionDescription('descr', '', [booloption])
-    cfg = Config(descr)
-    cfg.cfgimpl_set_mode('expert')
-    raises(ModeOptionError, "cfg.bool")
-    cfg.cfgimpl_set_mode('normal')
-    assert cfg.bool == True
 #____________________________________________________________
 def test_dwim_set():
     descr = OptionDescription("opt", "", [
@@ -302,7 +294,7 @@ def test_set_with_hidden_option():
         IntOption("int", "", default=42)])
     d = {'s1.a': True, 'int': 23}
     config = Config(descr)
-    raises(HiddenOptionError, "config.set(**d)")
+    raises(PropertiesOptionError, "config.set(**d)")
 
 def test_set_with_unknown_option():
     boolopt = BoolOption("b", "", default=False)
@@ -317,7 +309,7 @@ def test_set_with_unknown_option():
 def test_set_symlink_option():
     boolopt = BoolOption("b", "", default=False)
     linkopt = SymLinkOption("c", "s1.b")
-    descr = OptionDescription("opt", "", 
+    descr = OptionDescription("opt", "",
                               [linkopt, OptionDescription("s1", "", [boolopt])])
     config = Config(descr)
     setattr(config, "s1.b", True)
@@ -330,18 +322,19 @@ def test_set_symlink_option():
     config.c = False
     assert config.s1.b == False
     assert config.c == False
-    
+
 #____________________________________________________________
 def test_config_impl_values():
     descr = make_description()
-    config = Config(descr, bool=False)
+    config = Config(descr)
+    config.bool = False
 #    gcdummy.setoption(config, True, "user")
 #    config.setoption("gc.dummy", True, "user")
     #config.gc.dummy = True
 #    config.setoption("bool", False, "user")
     config.set(dummy=False)
     assert config.gc._cfgimpl_values == {'dummy': False, 'float': 2.3, 'name': 'ref'}
-    ## acces to the option object 
+    ## acces to the option object
 #    config.gc._cfgimpl_descr.dummy.setoption(config, True, "user")
     assert config.gc.dummy == False
 #    config.set(dummy=True)
@@ -356,18 +349,18 @@ def test_accepts_multiple_changes_from_option():
     assert s.getdefault() == "string"
     assert config.string == "egg"
     s.setoption(config, 'blah', "default")
-    assert s.getdefault() == "blah"
+    assert s.getdefault() == "string"
     assert config.string == "blah"
     s.setoption(config, 'bol', "user")
     assert config.string == 'bol'
-    config.override({'string': "blurp"})
-    assert config.string == 'blurp'
-    assert s.getdefault() == 'blurp'
+#    config.override({'string': "blurp"})
+#    assert config.string == 'blurp'
+#    assert s.getdefault() == 'blurp'
 
 def test_allow_multiple_changes_from_config():
     """
-    a `setoption` from the config object is much like the attribute access, 
-    except the fact that value owner can bet set 
+    a `setoption` from the config object is much like the attribute access,
+    except the fact that value owner can bet set
     """
     s = StrOption("string", "", default="string")
     s2 = StrOption("string2", "", default="string")
@@ -375,24 +368,25 @@ def test_allow_multiple_changes_from_config():
     descr = OptionDescription("options", "", [s, suboption])
     config = Config(descr)
     config.setoption("string", 'blah', "user")
-    config.setoption("string", "oh", "user")    
+    config.setoption("string", "oh", "user")
     assert config.string == "oh"
     config.set(string2= 'blah')
     assert config.bip.string2 == 'blah'
 # ____________________________________________________________
 
-def test_overrides_are_defaults():
-    descr = OptionDescription("test", "", [
-        BoolOption("b1", "", default=False),
-        BoolOption("b2", "", default=False),
-        ])
-    # overrides here
-    config = Config(descr, b2=True)
-    assert config.b2
-    # test with a require
-    config.b1 = True
-    assert config.b2
+#def test_overrides_are_defaults():
+#    descr = OptionDescription("test", "", [
+#        BoolOption("b1", "", default=False),
+#        BoolOption("b2", "", default=False),
+#        ])
+#    # overrides here
+#    config = Config(descr)
+#    config.b2 = True
+#    assert config.b2
+#    # test with a require
+#    config.b1 = True
+#    assert config.b2
+
  # ____________________________________________________________
  # accessing a value by the get method
 def test_access_by_get():
@@ -416,5 +410,4 @@ def test_access_by_get_whith_hide():
     BoolOption("d1", ""),
     ])
     c = Config(descr)
-    raises(HiddenOptionError, "c.get('b1')")
-    
+    raises(PropertiesOptionError, "c.get('b1')")