order in properties can change
[tiramisu.git] / test / test_permissive.py
1 # coding: utf-8
2 import autopath
3 from py.test import raises
4
5 from tiramisu.option import IntOption, OptionDescription
6 from tiramisu.config import Config
7 from tiramisu.error import PropertiesOptionError
8
9
10 def make_description():
11     u1 = IntOption('u1', '', properties=('frozen', 'mandatory', 'disabled', ))
12     return OptionDescription('od1', '', [u1])
13
14
15 def test_permissive():
16     descr = make_description()
17     config = Config(descr)
18     setting = config.cfgimpl_get_settings()
19     config.read_write()
20     props = []
21     try:
22         config.u1
23     except PropertiesOptionError as err:
24         props = err.proptype
25     assert props == ['disabled']
26     setting.setpermissive(('disabled',))
27     props = []
28     try:
29         config.u1
30     except PropertiesOptionError as err:
31         props = err.proptype
32     assert props == ['disabled']
33     setting.append('permissive')
34     config.u1
35     setting.remove('permissive')
36     props = []
37     try:
38         config.u1
39     except PropertiesOptionError as err:
40         props = err.proptype
41     assert props == ['disabled']
42
43
44 def test_permissive_mandatory():
45     descr = make_description()
46     config = Config(descr)
47     setting = config.cfgimpl_get_settings()
48     config.read_only()
49     props = []
50     try:
51         config.u1
52     except PropertiesOptionError as err:
53         props = err.proptype
54     assert set(props) == set(['disabled', 'mandatory'])
55     setting.setpermissive(('mandatory', 'disabled',))
56     setting.append('permissive')
57     config.u1
58     setting.remove('permissive')
59     try:
60         config.u1
61     except PropertiesOptionError as err:
62         props = err.proptype
63     assert set(props) == set(['disabled', 'mandatory'])
64
65
66 def test_permissive_frozen():
67     descr = make_description()
68     config = Config(descr)
69     setting = config.cfgimpl_get_settings()
70     config.read_write()
71     setting.setpermissive(('frozen', 'disabled',))
72     try:
73         config.u1 = 1
74     except PropertiesOptionError as err:
75         props = err.proptype
76     assert set(props) == set(['frozen', 'disabled'])
77     setting.append('permissive')
78     config.u1 = 1
79     assert config.u1 == 1
80     setting.remove('permissive')
81     try:
82         config.u1 = 1
83     except PropertiesOptionError as err:
84         props = err.proptype
85     assert set(props) == set(['frozen', 'disabled'])
86
87
88 def test_invalid_permissive():
89     descr = make_description()
90     config = Config(descr)
91     setting = config.cfgimpl_get_settings()
92     config.read_write()
93     raises(TypeError, "setting.setpermissive(['frozen', 'disabled',])")