add some tests for values
[tiramisu.git] / test / test_option_owner.py
1 import autopath
2 from py.test import raises
3
4 from tiramisu.setting import owners
5 from tiramisu.config import Config
6 from tiramisu.option import ChoiceOption, BoolOption, IntOption, FloatOption, \
7     StrOption, OptionDescription
8 from tiramisu.error import ConfigError
9
10
11 def make_description():
12     gcoption = ChoiceOption('name', 'GC name', ['ref', 'framework'], 'ref')
13     gcdummy = BoolOption('dummy', 'dummy', default=False)
14     objspaceoption = ChoiceOption('objspace', 'Object space',
15                                   ['std', 'thunk'], 'std')
16     booloption = BoolOption('bool', 'Test boolean option', default=True)
17     intoption = IntOption('int', 'Test int option', default=0)
18     floatoption = FloatOption('float', 'Test float option', default=2.3)
19     stroption = StrOption('str', 'Test string option', default="abc")
20     boolop = BoolOption('boolop', 'Test boolean option op', default=True)
21     wantref_option = BoolOption('wantref', 'Test requires', default=False)
22     wantframework_option = BoolOption('wantframework', 'Test requires',
23                                       default=False)
24
25     gcgroup = OptionDescription('gc', '', [gcoption, gcdummy, floatoption])
26     descr = OptionDescription('tiram', '', [gcgroup, booloption, objspaceoption,
27                                             wantref_option, stroption,
28                                             wantframework_option,
29                                             intoption, boolop])
30     return descr
31
32
33 def test_default_owner():
34     gcdummy = BoolOption('dummy', 'dummy', default=False)
35     descr = OptionDescription('tiramisu', '', [gcdummy])
36     cfg = Config(descr)
37     assert cfg.dummy is False
38     assert cfg.getowner(gcdummy) == 'default'
39     cfg.dummy = True
40     assert cfg.getowner(gcdummy) == owners.user
41
42
43 def test_add_owner():
44     gcdummy = BoolOption('dummy', 'dummy', default=False)
45     descr = OptionDescription('tiramisu', '', [gcdummy])
46     cfg = Config(descr)
47     assert cfg.dummy is False
48     assert cfg.getowner(gcdummy) == 'default'
49     owners.add_owner("gen_config")
50     cfg.cfgimpl_get_settings().setowner(owners.gen_config)
51     cfg.dummy = True
52     assert cfg.getowner(gcdummy) == owners.gen_config
53
54
55 def test_owner_is_not_a_string():
56     gcdummy = BoolOption('dummy', 'dummy', default=False)
57     descr = OptionDescription('tiramisu', '', [gcdummy])
58     cfg = Config(descr)
59     assert cfg.dummy is False
60     assert cfg.getowner(gcdummy) == owners.default
61     assert cfg.getowner(gcdummy) == 'default'
62     assert isinstance(cfg.getowner(gcdummy), owners.Owner)
63     cfg.dummy = True
64     assert cfg.getowner(gcdummy) == 'user'
65
66
67 def test_setowner_without_valid_owner():
68     gcdummy = BoolOption('dummy', 'dummy', default=False)
69     descr = OptionDescription('tiramisu', '', [gcdummy])
70     cfg = Config(descr)
71     assert cfg.dummy is False
72     assert cfg.getowner(gcdummy) == 'default'
73     raises(TypeError, "cfg.cfgimpl_get_settings().setowner('gen_config')")
74
75
76 def test_setowner_for_value():
77     gcdummy = BoolOption('dummy', 'dummy', default=False)
78     descr = OptionDescription('tiramisu', '', [gcdummy])
79     cfg = Config(descr)
80     assert cfg.dummy is False
81     assert cfg.getowner(gcdummy) == 'default'
82     owners.add_owner("new")
83     raises(ConfigError, "cfg.cfgimpl_get_values().setowner(gcdummy, owners.new)")
84     cfg.dummy = False
85     assert cfg.getowner(gcdummy) == owners.user
86     cfg.cfgimpl_get_values().setowner(gcdummy, owners.new)
87     assert cfg.getowner(gcdummy) == owners.new
88     raises(TypeError, "cfg.cfgimpl_get_values().setowner(gcdummy, 'new')")