add more tests
[tiramisu.git] / test / test_option.py
1 """these tests are here to create some :class:`tiramisu.option.Option`'s
2 and to compare them
3 """
4 import autopath
5 from py.test import raises
6
7 from tiramisu.option import IntOption, OptionDescription
8
9
10 def a_func():
11     return None
12
13
14 #def test_option_comparison():
15 #    "compare :class:`tiramisu.option.BoolOption`"
16 #    dummy1 = BoolOption('dummy1', 'doc dummy')
17 #    dummy2 = BoolOption('dummy2', 'doc dummy')
18 #    dummy3 = BoolOption('dummy1', 'doc dummy')
19 #    assert dummy1 != dummy2
20 #    assert dummy1 == dummy3
21
22
23 #def test_option_comparison_obj():
24 #    "compare :class:`tiramisu.option.IntOption`"
25 #    dummy1 = BoolOption('dummy1', 'doc dummy')
26 #    dummy2 = IntOption('dummy1', 'doc dummy')
27 #    assert dummy1 != dummy2
28
29
30 #def test_option_comparison_advanced():
31 #    dummy1 = BoolOption('dummy1', 'doc dummy')
32 #    dummy2 = BoolOption('dummy1', 'doc dummy')
33 #    dummy3 = BoolOption('dummy1', 'doc dummy', None)
34 #    dummy4 = BoolOption('dummy1', 'doc dummy', True)
35 #    dummy5 = BoolOption('dummy1', 'doc dummy', multi=True)
36 #    dummy6 = BoolOption('dummy1', 'doc dummy', properties=tuple())
37 #    dummy7 = BoolOption('dummy1', 'doc dummy', properties=tuple('new',))
38 #    assert dummy1 == dummy2
39 #    assert dummy1 == dummy3
40 #    assert dummy1 != dummy4
41 #    assert dummy1 != dummy5
42 #    assert dummy1 == dummy6
43 #    assert dummy1 != dummy7
44
45
46 def test_option_valid_name():
47     IntOption('test', '')
48     raises(ValueError, 'IntOption(1, "")')
49     raises(ValueError, 'IntOption("impl_test", "")')
50     raises(ValueError, 'IntOption("_test", "")')
51     raises(ValueError, 'IntOption("unwrap_from_path", "")')
52
53
54 def test_option_with_callback():
55     #no default value with callback
56     raises(ValueError, "IntOption('test', '', default=1, callback=a_func)")
57
58
59 def test_option_get_information():
60     description = "it's ok"
61     string = 'some informations'
62     i = IntOption('test', description)
63     i.impl_set_information('info', string)
64     assert i.impl_get_information('info') == string
65     raises(ValueError, "i.impl_get_information('noinfo')")
66     assert i.impl_get_information('noinfo', 'default') == 'default'
67     assert i.impl_get_information('doc') == description
68     assert i.impl_getdoc() == description
69
70
71 def test_optiondescription_get_information():
72     description = "it's ok"
73     string = 'some informations'
74     o = OptionDescription('test', description, [])
75     o.impl_set_information('info', string)
76     assert o.impl_get_information('info') == string
77     raises(ValueError, "o.impl_get_information('noinfo')")
78     assert o.impl_get_information('noinfo', 'default') == 'default'
79     assert o.impl_get_information('doc') == description
80     assert o.impl_getdoc() == description
81
82
83 def test_option_multi():
84     IntOption('test', '', multi=True)
85     IntOption('test', '', multi=True, default_multi=1)
86     IntOption('test', '', default=[1], multi=True, default_multi=1)
87     #add default_multi to not multi's option
88     raises(ValueError, "IntOption('test', '', default_multi=1)")
89     #unvalid default_multi
90     raises(ValueError, "IntOption('test', '', multi=True, default_multi='yes')")
91     #not default_multi with callback
92     raises(ValueError, "IntOption('test', '', multi=True, default_multi=1, callback=a_func)")
93
94
95 def test_option_is_multi_by_default():
96     assert IntOption('test', '').impl_is_empty_by_default() is True
97     assert IntOption('test', '', 1).impl_is_empty_by_default() is False
98     assert IntOption('test', '', multi=True).impl_is_empty_by_default() is True
99     assert IntOption('test', '', [1], multi=True).impl_is_empty_by_default() is False
100     assert IntOption('test', '', multi=True, default_multi=1).impl_is_empty_by_default() is True