python 3.5 support
[tiramisu.git] / test / test_choice_option.py
index 9b3d504..6094f2e 100644 (file)
@@ -1,10 +1,11 @@
 # coding: utf-8
-from autopath import do_autopath
+from .autopath import do_autopath
 do_autopath()
 
 from tiramisu.setting import owners
 from tiramisu.option import ChoiceOption, StrOption, OptionDescription
 from tiramisu.config import Config
+from tiramisu.error import ConfigError
 
 from py.test import raises
 
@@ -21,6 +22,10 @@ def return_calc_list(val):
     return [val]
 
 
+def return_error():
+    raise Exception('test')
+
+
 def test_choiceoption_function():
     ch = ChoiceOption('ch', '', values=return_list)
     od = OptionDescription('od', '', [ch])
@@ -34,6 +39,16 @@ def test_choiceoption_function():
     assert cfg.getowner(ch) == owners.default
     raises(ValueError, "cfg.ch='no'")
     assert cfg.getowner(ch) == owners.default
+    assert ch.impl_get_values(None) == []
+    assert ch.impl_get_values(cfg) == ['val1', 'val2']
+
+
+def test_choiceoption_function_error():
+    ch = ChoiceOption('ch', '', values=return_error)
+    od = OptionDescription('od', '', [ch])
+    cfg = Config(od)
+    cfg.read_write()
+    raises(Exception, "cfg.ch = 'no'")
 
 
 def test_choiceoption_calc_function():
@@ -67,6 +82,15 @@ def test_choiceoption_calc_opt_function():
     assert cfg.getowner(ch) == owners.default
 
 
+def test_choiceoption_calc_opt_function_propertyerror():
+    st = StrOption('st', '', 'val1', properties=('disabled',))
+    ch = ChoiceOption('ch', "", values=return_calc_list, values_params={'': ((st, False),)})
+    od = OptionDescription('od', '', [st, ch])
+    cfg = Config(od)
+    cfg.read_write()
+    raises(ValueError, "cfg.ch='no'")
+
+
 def test_choiceoption_calc_opt_multi_function():
     st = StrOption('st', '', ['val1'], multi=True)
     ch = ChoiceOption('ch', "", default_multi='val2', values=return_val, values_params={'': ((st, False),)}, multi=True)
@@ -86,3 +110,18 @@ def test_choiceoption_calc_opt_multi_function():
     assert cfg.getowner(ch) == owners.default
     #
     raises(ValueError, "cfg.ch2")
+
+
+def test_choiceoption_calc_invalid():
+    st = StrOption('st', '', ['val1'], multi=True)
+    st
+    raises(ValueError, "ch = ChoiceOption('ch', '', default_multi='val2', values=[1, 2, 3], values_params={'': ((st, False),)}, multi=True)")
+
+
+def test_choiceoption_calc_not_list():
+    st = StrOption('st', '', 'val1')
+    ch = ChoiceOption('ch', "", default_multi='val2', values=return_val, values_params={'': ((st, False),)}, multi=True)
+    od = OptionDescription('od', '', [st, ch])
+    cfg = Config(od)
+    cfg.read_write()
+    raises(ConfigError, "cfg.ch = ['val1']")