python 3.5 support
[tiramisu.git] / test / test_slots.py
1 ## coding: utf-8
2 from .autopath import do_autopath
3 do_autopath()
4
5 from py.test import raises
6
7 from tiramisu.config import Config, SubConfig
8 from tiramisu.option import ChoiceOption, BoolOption, IntOption, FloatOption,\
9     StrOption, SymLinkOption, UnicodeOption, IPOption, OptionDescription, \
10     PortOption, NetworkOption, NetmaskOption, DomainnameOption, EmailOption, \
11     URLOption, FilenameOption
12
13
14 #FIXME slot pour un masterslaves !!
15
16
17 def test_slots_option():
18     c = ChoiceOption('a', '', ('a',))
19     raises(AttributeError, "c.x = 1")
20     c = BoolOption('a', '')
21     raises(AttributeError, "c.x = 1")
22     c = IntOption('a', '')
23     raises(AttributeError, "c.x = 1")
24     c = FloatOption('a', '')
25     raises(AttributeError, "c.x = 1")
26     c = StrOption('a', '')
27     raises(AttributeError, "c.x = 1")
28     c = SymLinkOption('b', c)
29     raises(AttributeError, "c.x = 1")
30     c = UnicodeOption('a', '')
31     raises(AttributeError, "c.x = 1")
32     c = IPOption('a', '')
33     raises(AttributeError, "c.x = 1")
34     c = OptionDescription('a', '', [])
35     raises(AttributeError, "c.x = 1")
36     c = PortOption('a', '')
37     raises(AttributeError, "c.x = 1")
38     c = NetworkOption('a', '')
39     raises(AttributeError, "c.x = 1")
40     c = NetmaskOption('a', '')
41     raises(AttributeError, "c.x = 1")
42     c = DomainnameOption('a', '')
43     raises(AttributeError, "c.x = 1")
44     c = EmailOption('a', '')
45     raises(AttributeError, "c.x = 1")
46     c = URLOption('a', '')
47     raises(AttributeError, "c.x = 1")
48     c = FilenameOption('a', '')
49     raises(AttributeError, "c.x = 1")
50
51
52 def test_slots_option_readonly():
53     a = ChoiceOption('a', '', ('a',))
54     b = BoolOption('b', '')
55     c = IntOption('c', '')
56     d = FloatOption('d', '')
57     e = StrOption('e', '')
58     g = UnicodeOption('g', '')
59     h = IPOption('h', '')
60     i = PortOption('i', '')
61     j = NetworkOption('j', '')
62     k = NetmaskOption('k', '')
63     l = DomainnameOption('l', '')
64     o = EmailOption('o', '')
65     p = URLOption('p', '')
66     q = FilenameOption('q', '')
67     m = OptionDescription('m', '', [a, b, c, d, e, g, h, i, j, k, l, o, p, q])
68     a._requires = (((a,),),)
69     b._requires = (((a,),),)
70     c._requires = (((a,),),)
71     d._requires = (((a,),),)
72     e._requires = (((a,),),)
73     g._requires = (((a,),),)
74     h._requires = (((a,),),)
75     i._requires = (((a,),),)
76     j._requires = (((a,),),)
77     k._requires = (((a,),),)
78     l._requires = (((a,),),)
79     m._requires = (((a,),),)
80     o._requires = (((a,),),)
81     p._requires = (((a,),),)
82     q._requires = (((a,),),)
83     Config(m)
84     raises(AttributeError, "a._requires = 'a'")
85     raises(AttributeError, "b._requires = 'b'")
86     raises(AttributeError, "c._requires = 'c'")
87     raises(AttributeError, "d._requires = 'd'")
88     raises(AttributeError, "e._requires = 'e'")
89     raises(AttributeError, "g._requires = 'g'")
90     raises(AttributeError, "h._requires = 'h'")
91     raises(AttributeError, "i._requires = 'i'")
92     raises(AttributeError, "j._requires = 'j'")
93     raises(AttributeError, "k._requires = 'k'")
94     raises(AttributeError, "l._requires = 'l'")
95     raises(AttributeError, "m._requires = 'm'")
96     raises(AttributeError, "o._requires = 'o'")
97     raises(AttributeError, "p._requires = 'p'")
98     raises(AttributeError, "q._requires = 'q'")
99
100
101 def test_slots_option_readonly_name():
102     a = ChoiceOption('a', '', ('a',))
103     b = BoolOption('b', '')
104     c = IntOption('c', '')
105     d = FloatOption('d', '')
106     e = StrOption('e', '')
107     f = SymLinkOption('f', c)
108     g = UnicodeOption('g', '')
109     h = IPOption('h', '')
110     i = PortOption('i', '')
111     j = NetworkOption('j', '')
112     k = NetmaskOption('k', '')
113     l = DomainnameOption('l', '')
114     o = DomainnameOption('o', '')
115     p = DomainnameOption('p', '')
116     q = DomainnameOption('q', '')
117     m = OptionDescription('m', '', [a, b, c, d, e, f, g, h, i, j, k, l, o, p, q])
118     m
119     raises(AttributeError, "a._name = 'a'")
120     raises(AttributeError, "b._name = 'b'")
121     raises(AttributeError, "c._name = 'c'")
122     raises(AttributeError, "d._name = 'd'")
123     raises(AttributeError, "e._name = 'e'")
124     raises(AttributeError, "f._name = 'f'")
125     raises(AttributeError, "g._name = 'g'")
126     raises(AttributeError, "h._name = 'h'")
127     raises(AttributeError, "i._name = 'i'")
128     raises(AttributeError, "j._name = 'j'")
129     raises(AttributeError, "k._name = 'k'")
130     raises(AttributeError, "l._name = 'l'")
131     raises(AttributeError, "m._name = 'm'")
132     raises(AttributeError, "o._name = 'o'")
133     raises(AttributeError, "p._name = 'p'")
134     raises(AttributeError, "q._name = 'q'")
135
136
137 #def test_slots_description():
138 #    # __slots__ for OptionDescription should be complete for __getattr__
139 #    slots = set()
140 #    for subclass in OptionDescription.__mro__:
141 #        if subclass is not object:
142 #            slots.update(subclass.__slots__)
143 #    assert slots == set(OptionDescription.__slots__)
144
145
146 def test_slots_config():
147     od1 = OptionDescription('a', '', [])
148     od2 = OptionDescription('a', '', [od1])
149     c = Config(od2)
150     raises(AttributeError, "c.x = 1")
151     raises(AttributeError, "c.cfgimpl_x = 1")
152     sc = c.a
153     assert isinstance(sc, SubConfig)
154     raises(AttributeError, "sc.x = 1")
155     raises(AttributeError, "sc.cfgimpl_x = 1")
156
157
158 def test_slots_setting():
159     od1 = OptionDescription('a', '', [])
160     od2 = OptionDescription('a', '', [od1])
161     c = Config(od2)
162     s = c.cfgimpl_get_settings()
163     s
164     raises(AttributeError, "s.x = 1")
165
166
167 def test_slots_value():
168     od1 = OptionDescription('a', '', [])
169     od2 = OptionDescription('a', '', [od1])
170     c = Config(od2)
171     v = c.cfgimpl_get_values()
172     v
173     raises(AttributeError, "v.x = 1")