3f3cf8ad94451b0e1d90a016ff8cb8805172305c
[tiramisu.git] / test / test_option_default.py
1 "test all types of option default values for options, add new option in a descr"
2 import autopath
3
4 from tiramisu.config import Config
5 from tiramisu.option import IntOption, FloatOption, StrOption, ChoiceOption, \
6     BoolOption, OptionDescription
7
8
9 def make_description():
10     gcoption = ChoiceOption('name', 'GC name', ['ref', 'framework'], 'ref')
11     gcdummy = BoolOption('dummy', 'dummy', default=False)
12     objspaceoption = ChoiceOption('objspace', 'Object space',
13                                   ['std', 'thunk'], 'std')
14     booloption = BoolOption('bool', 'Test boolean option', default=True)
15     intoption = IntOption('int', 'Test int option', default=0)
16     floatoption = FloatOption('float', 'Test float option', default=2.3)
17     stroption = StrOption('str', 'Test string option', default="abc")
18     boolop = BoolOption('boolop', 'Test boolean option op', default=True)
19     wantref_option = BoolOption('wantref', 'Test requires', default=False,
20                                 requires=['boolop'])
21     wantframework_option = BoolOption('wantframework', 'Test requires',
22                                       default=False,
23                                       requires=['boolop'])
24
25     gcgroup = OptionDescription('gc', '', [gcoption, gcdummy, floatoption])
26     descr = OptionDescription('tiramisu', '', [gcgroup, booloption, objspaceoption,
27                                                wantref_option, stroption,
28                                                wantframework_option,
29                                                intoption, boolop])
30     return descr
31
32
33 #____________________________________________________________
34 # default values
35 def test_default_is_none():
36     """
37     Most constructors take a ``default`` argument that specifies the default
38     value of the option. If this argument is not supplied the default value is
39     assumed to be ``None``.
40     """
41     dummy1 = BoolOption('dummy1', 'doc dummy')
42     dummy2 = BoolOption('dummy2', 'doc dummy')
43     group = OptionDescription('group', '', [dummy1, dummy2])
44     config = Config(group)
45     # so when the default value is not set, there is actually a default value
46     assert config.dummy1 is None
47     assert config.dummy2 is None
48
49
50 def test_set_defaut_value_from_option_object():
51     """Options have an available default setting and can give it back"""
52     b = BoolOption("boolean", "", default=False)
53     assert b.impl_getdefault() is False
54
55
56 def test_force_default_on_freeze():
57     "a frozen option wich is forced returns his default"
58     dummy1 = BoolOption('dummy1', 'doc dummy', default=False, properties=('force_default_on_freeze',))
59     dummy2 = BoolOption('dummy2', 'doc dummy', default=True)
60     group = OptionDescription('group', '', [dummy1, dummy2])
61     config = Config(group)
62     config.dummy1 = True
63     config.dummy2 = False
64     setting = config.cfgimpl_get_settings()
65     setting[dummy1].append('frozen')
66     setting[dummy2].append('frozen')
67     assert config.dummy1 is False
68     assert config.dummy2 is False
69
70
71 def test_overrides_changes_option_value():
72     "with config.override(), the default is changed and the value is changed"
73     descr = OptionDescription("test", "", [
74         BoolOption("b", "", default=False)])
75     config = Config(descr)
76     config.b = True
77
78
79 def test_choice_with_no_default():
80     descr = OptionDescription("test", "", [
81         ChoiceOption("backend", "", ("c", "cli"))])
82     config = Config(descr)
83     assert config.backend is None
84     config.backend = "c"
85
86
87 def test_choice_with_default():
88     descr = OptionDescription("test", "", [
89         ChoiceOption("backend", "", ("c", "cli"), default="cli")])
90     config = Config(descr)
91     assert config.backend == "cli"