8e009168d56f351fc6892527469918cd296af893
[tiramisu.git] / test / test_option_validator.py
1 import autopath
2 from py.test import raises
3
4 from tiramisu.config import Config
5 from tiramisu.option import StrOption, OptionDescription
6 from tiramisu.error import ConfigError
7
8
9 def return_true(value, param=None):
10     if value == 'val' and param in [None, 'yes']:
11         return True
12
13
14 def return_false(value, param=None):
15     if value == 'val' and param in [None, 'yes']:
16         return False
17
18
19 def return_val(value, param=None):
20     return 'val'
21
22
23 def test_validator():
24     opt1 = StrOption('opt1', '', validator=return_true, default='val')
25     raises(ValueError, "StrOption('opt2', '', validator=return_false, default='val')")
26     raises(ConfigError, "StrOption('opt3', '', validator=return_val, default='val')")
27     opt2 = StrOption('opt2', '', validator=return_false)
28     opt3 = StrOption('opt3', '', validator=return_val)
29     root = OptionDescription('root', '', [opt1, opt2, opt3])
30     cfg = Config(root)
31     assert cfg.opt1 == 'val'
32     raises(ValueError, "cfg.opt2 = 'val'")
33     raises(ConfigError, "cfg.opt3 = 'val'")
34
35
36 def test_validator_params():
37     opt1 = StrOption('opt1', '', validator=return_true, validator_params={'': ('yes',)}, default='val')
38     raises(ValueError, "StrOption('opt2', '', validator=return_false, validator_params={'': ('yes',)}, default='val')")
39     raises(ConfigError, "StrOption('opt3', '', validator=return_val, validator_params={'': ('yes',)}, default='val')")
40     opt2 = StrOption('opt2', '', validator=return_false, validator_params={'': ('yes',)})
41     opt3 = StrOption('opt3', '', validator=return_val, validator_params={'': ('yes',)})
42     root = OptionDescription('root', '', [opt1, opt2, opt3])
43     cfg = Config(root)
44     assert cfg.opt1 == 'val'
45     raises(ValueError, "cfg.opt2 = 'val'")
46     raises(ConfigError, "cfg.opt3 = 'val'")
47
48
49 def test_validator_params_key():
50     opt1 = StrOption('opt1', '', validator=return_true, validator_params={'param': ('yes',)}, default='val')
51     raises(TypeError, "StrOption('opt2', '', validator=return_true, validator_params={'param_unknown': ('yes',)}, default='val')")
52     root = OptionDescription('root', '', [opt1])
53     cfg = Config(root)
54     assert cfg.opt1 == 'val'
55
56
57 def test_validator_params_option():
58     opt0 = StrOption('opt0', '', default='val')
59     raises(ValueError, "opt1 = StrOption('opt1', '', validator=return_true, validator_params={'': ((opt0, False),)}, default='val')")