use python-coverage to delete dead part of code
[tiramisu.git] / test / test_choice_option.py
1 # coding: utf-8
2 from autopath import do_autopath
3 do_autopath()
4
5 from tiramisu.setting import owners
6 from tiramisu.option import ChoiceOption, StrOption, OptionDescription
7 from tiramisu.config import Config
8 from tiramisu.error import ConfigError
9
10 from py.test import raises
11
12
13 def return_val(val):
14     return val
15
16
17 def return_list():
18     return ['val1', 'val2']
19
20
21 def return_calc_list(val):
22     return [val]
23
24
25 def test_choiceoption_function():
26     ch = ChoiceOption('ch', '', values=return_list)
27     od = OptionDescription('od', '', [ch])
28     cfg = Config(od)
29     cfg.read_write()
30     owner = cfg.cfgimpl_get_settings().getowner()
31     assert cfg.getowner(ch) == owners.default
32     cfg.ch = 'val1'
33     assert cfg.getowner(ch) == owner
34     del(cfg.ch)
35     assert cfg.getowner(ch) == owners.default
36     raises(ValueError, "cfg.ch='no'")
37     assert cfg.getowner(ch) == owners.default
38
39
40 def test_choiceoption_calc_function():
41     ch = ChoiceOption('ch', "", values=return_calc_list, values_params={'': ('val1',)})
42     od = OptionDescription('od', '', [ch])
43     cfg = Config(od)
44     cfg.read_write()
45     owner = cfg.cfgimpl_get_settings().getowner()
46     assert cfg.getowner(ch) == owners.default
47     cfg.ch = 'val1'
48     assert cfg.getowner(ch) == owner
49     del(cfg.ch)
50     assert cfg.getowner(ch) == owners.default
51     raises(ValueError, "cfg.ch='no'")
52     assert cfg.getowner(ch) == owners.default
53
54
55 def test_choiceoption_calc_opt_function():
56     st = StrOption('st', '', 'val1')
57     ch = ChoiceOption('ch', "", values=return_calc_list, values_params={'': ((st, False),)})
58     od = OptionDescription('od', '', [st, ch])
59     cfg = Config(od)
60     cfg.read_write()
61     owner = cfg.cfgimpl_get_settings().getowner()
62     assert cfg.getowner(ch) == owners.default
63     cfg.ch = 'val1'
64     assert cfg.getowner(ch) == owner
65     del(cfg.ch)
66     assert cfg.getowner(ch) == owners.default
67     raises(ValueError, "cfg.ch='no'")
68     assert cfg.getowner(ch) == owners.default
69
70
71 def test_choiceoption_calc_opt_multi_function():
72     st = StrOption('st', '', ['val1'], multi=True)
73     ch = ChoiceOption('ch', "", default_multi='val2', values=return_val, values_params={'': ((st, False),)}, multi=True)
74     ch2 = ChoiceOption('ch2', "", default=['val2'], values=return_val, values_params={'': ((st, False),)}, multi=True)
75     od = OptionDescription('od', '', [st, ch, ch2])
76     cfg = Config(od)
77     cfg.read_write()
78     assert cfg.ch == []
79     owner = cfg.cfgimpl_get_settings().getowner()
80     assert cfg.getowner(ch) == owners.default
81     raises(ValueError, "cfg.ch.append()")
82     cfg.ch = ['val1']
83     assert cfg.getowner(ch) == owner
84     del(cfg.ch)
85     assert cfg.getowner(ch) == owners.default
86     raises(ValueError, "cfg.ch='no'")
87     assert cfg.getowner(ch) == owners.default
88     #
89     raises(ValueError, "cfg.ch2")
90
91
92 def test_choiceoption_calc_invalid():
93     st = StrOption('st', '', ['val1'], multi=True)
94     st
95     raises(ValueError, "ch = ChoiceOption('ch', '', default_multi='val2', values=[1, 2, 3], values_params={'': ((st, False),)}, multi=True)")
96
97
98 def test_choiceoption_calc_not_list():
99     st = StrOption('st', '', 'val1')
100     ch = ChoiceOption('ch', "", default_multi='val2', values=return_val, values_params={'': ((st, False),)}, multi=True)
101     od = OptionDescription('od', '', [st, ch])
102     cfg = Config(od)
103     cfg.read_write()
104     raises(ConfigError, "cfg.ch = ['val1']")