a3ae1b5918b2e3c6979e848d8ca6edbd01f539fe
[tiramisu.git] / test / test_option_owner.py
1 import autopath
2
3 from py.test import raises
4 from tiramisu.config import *
5 from tiramisu.option import *
6 from tiramisu.setting import settings
7
8 def make_description():
9     gcoption = ChoiceOption('name', 'GC name', ['ref', 'framework'], 'ref')
10     gcdummy = BoolOption('dummy', 'dummy', callback="toto")
11     objspaceoption = ChoiceOption('objspace', 'Object space',
12                                 ['std', 'thunk'], 'std')
13     booloption = BoolOption('bool', 'Test boolean option', default=True)
14     intoption = IntOption('int', 'Test int option', default=0)
15     floatoption = FloatOption('float', 'Test float option', default=2.3)
16     stroption = StrOption('str', 'Test string option', default="abc")
17     boolop = BoolOption('boolop', 'Test boolean option op', default=True)
18     wantref_option = BoolOption('wantref', 'Test requires', default=False,
19                                     requires=['boolop'])
20     wantframework_option = BoolOption('wantframework', 'Test requires',
21                                       default=False,
22                                       requires=['boolop'])
23     gcgroup = OptionDescription('gc', '', [gcoption, gcdummy, floatoption])
24     descr = OptionDescription('constraints', '', [gcgroup, booloption, objspaceoption,
25                                            wantref_option, stroption,
26                                            wantframework_option,
27                                            intoption, boolop])
28     return descr
29
30 def make_description2():
31     gcoption = ChoiceOption('name', 'GC name', ['ref', 'framework'], 'ref')
32     gcdummy = BoolOption('dummy', 'dummy', default=False)
33     objspaceoption = ChoiceOption('objspace', 'Object space',
34                                 ['std', 'thunk'], 'std')
35     booloption = BoolOption('bool', 'Test boolean option', default=True)
36     intoption = IntOption('int', 'Test int option', default=0)
37     floatoption = FloatOption('float', 'Test float option', default=2.3)
38     stroption = StrOption('str', 'Test string option', default="abc")
39     boolop = BoolOption('boolop', 'Test boolean option op', default=True)
40     wantref_option = BoolOption('wantref', 'Test requires', default=False,
41                                     requires=['boolop'])
42     wantframework_option = BoolOption('wantframework', 'Test requires',
43                                       default=False,
44                                       requires=['boolop'])
45     gcgroup = OptionDescription('gc', '', [gcoption, gcdummy, floatoption])
46     descr = OptionDescription('constraints', '', [gcgroup, booloption, objspaceoption,
47                                            wantref_option, stroption,
48                                            wantframework_option,
49                                            intoption, boolop])
50     return descr
51
52 def test_has_callback():
53     descr = make_description()
54     # here the owner is 'default'
55     config = Config(descr)
56     config.bool = False
57     # because dummy has a callback
58     dummy = config.unwrap_from_path('gc.dummy')
59     settings.freeze()
60     dummy.freeze()
61     raises(TypeError, "config.gc.dummy = True")
62
63 #____________________________________________________________
64 def test_freeze_and_has_callback_with_setoption():
65     descr = make_description()
66     config = Config(descr)
67     config.bool = False
68     settings.freeze()
69     dummy = config.unwrap_from_path('gc.dummy')
70     dummy.freeze()
71     raises(TypeError, "config.gc.setoption('dummy', True, 'gen_config')")