* config herite from BaseInformation class
[tiramisu.git] / test / test_option_type.py
1 # coding: utf-8
2 "frozen and hidden values"
3 import autopath
4 from py.test import raises
5
6 from tiramisu.config import Config
7 from tiramisu.option import ChoiceOption, BoolOption, IntOption, FloatOption, \
8     StrOption, OptionDescription
9 from tiramisu.error import PropertiesOptionError
10
11
12 def make_description():
13     gcoption = ChoiceOption('name', 'GC name', ('ref', 'framework'), 'ref')
14     gcdummy = BoolOption('dummy', 'dummy', default=False, properties=(('hidden'),))
15     objspaceoption = ChoiceOption('objspace', 'Object space',
16                                   ('std', 'thunk'), ['std'], multi=True)
17     booloption = BoolOption('bool', 'Test boolean option', default=True)
18     intoption = IntOption('int', 'Test int option', default=0)
19     floatoption = FloatOption('float', 'Test float option', default=2.3)
20     stroption = StrOption('str', 'Test string option', default="abc")
21
22     wantref_option = BoolOption('wantref', 'Test requires', default=False,
23                                 requires=((gcoption, 'ref', 'hidden'),))
24     wantframework_option = BoolOption('wantframework', 'Test requires',
25                                       default=False,
26                                       requires=((gcoption, 'framework', 'hidden'),))
27
28     # ____________________________________________________________
29     booloptiontwo = BoolOption('booltwo', 'Test boolean option two', default=False)
30     subgroup = OptionDescription('subgroup', '', [booloptiontwo])
31     # ____________________________________________________________
32
33     gcgroup = OptionDescription('gc', '', [subgroup, gcoption, gcdummy, floatoption])
34     descr = OptionDescription('trs', '', [gcgroup, booloption, objspaceoption,
35                                           wantref_option, stroption,
36                                           wantframework_option,
37                                           intoption])
38     return descr
39
40
41 # ____________________________________________________________
42 def test_is_hidden():
43     descr = make_description()
44     config = Config(descr)
45     setting = config.cfgimpl_get_settings()
46     config.read_write()
47     dummy = config.unwrap_from_path('gc.dummy')
48     assert not 'frozen' in setting[dummy]
49     # setattr
50     raises(PropertiesOptionError, "config.gc.dummy == False")
51     # getattr
52     raises(PropertiesOptionError, "config.gc.dummy")
53
54
55 def test_group_is_hidden():
56     descr = make_description()
57     config = Config(descr)
58     setting = config.cfgimpl_get_settings()
59     config.read_write()
60     gc = config.unwrap_from_path('gc')
61     config.unwrap_from_path('gc.dummy')
62     setting[gc].append('hidden')
63     raises(PropertiesOptionError, "config.gc.dummy")
64     assert 'hidden' in setting[gc]
65     raises(PropertiesOptionError, "config.gc.float")
66     # manually set the subconfigs to "show"
67     setting[gc].remove('hidden')
68     assert not 'hidden' in setting[gc]
69     assert config.gc.float == 2.3
70     #dummy est en hide
71     prop = []
72     try:
73         config.gc.dummy = False
74     except PropertiesOptionError, err:
75         prop = err.proptype
76     assert 'hidden' in prop
77
78
79 def test_group_is_hidden_multi():
80     descr = make_description()
81     config = Config(descr)
82     setting = config.cfgimpl_get_settings()
83     config.read_write()
84     obj = config.unwrap_from_path('objspace')
85     objspace = config.objspace
86     setting[obj].append('hidden')
87     raises(PropertiesOptionError, "config.objspace")
88     assert 'hidden' in setting[obj]
89     prop = []
90     try:
91         objspace.append('std')
92     except PropertiesOptionError, err:
93         prop = err.proptype
94     assert 'hidden' in prop
95     setting[obj].remove('hidden')
96     assert not 'hidden' in setting[obj]
97     config.objspace.append('std')
98
99
100 def test_global_show():
101     descr = make_description()
102     config = Config(descr)
103     setting = config.cfgimpl_get_settings()
104     config.read_write()
105     dummy = config.unwrap_from_path('gc.dummy')
106     setting[dummy].append('hidden')
107     assert 'hidden' in setting[dummy]
108     raises(PropertiesOptionError, "config.gc.dummy == False")
109
110
111 def test_with_many_subgroups():
112     descr = make_description()
113     config = Config(descr)
114     booltwo = config.unwrap_from_path('gc.subgroup.booltwo')
115     setting = config.cfgimpl_get_settings()
116     assert not 'hidden' in setting[booltwo]
117     assert config.gc.subgroup.booltwo is False
118     setting[booltwo].append('hidden')
119     path = 'gc.subgroup.booltwo'
120     homeconfig, name = config.cfgimpl_get_home_by_path(path)
121     assert name == "booltwo"
122     getattr(homeconfig.cfgimpl_get_description(), name)
123     assert 'hidden' in setting[booltwo]