source: trunk/test/options/unit/test_options.py @ 1075

Revision 1075, 6.4 KB checked in by wehart, 5 years ago (diff)

Other portability fixes.

Line 
1#
2# Unit Tests for pyutilib.options.options
3#
4#
5
6import os
7import sys
8from os.path import abspath, dirname
9sys.path.insert(0, dirname(dirname(abspath(__file__)))+os.sep+".."+os.sep+"..")
10currdir = dirname(abspath(__file__))+os.sep
11
12import unittest
13from nose.tools import nottest
14from pyutilib.options import *
15from pyutilib.plugin import *
16
17
18class TestOption(unittest.TestCase):
19
20    def setUp(self):
21        Plugins.reset()
22
23    def tearDown(self):
24        Plugins.reset()
25
26    def test_init1(self):
27        """Test Option construction"""
28        try:
29            Option()
30            self.fail("expected failure")
31        except TypeError:
32            pass
33
34        try:
35            Option(None)
36            self.fail("expected failure")
37        except OptionError:
38            pass
39
40        try:
41            Option("name",x=None)
42            self.fail("expected failure")
43        except OptionError:
44            pass
45
46    def test_init2(self):
47        """Test Option construction"""
48        FOO = Option("foo")
49        self.failUnless(FOO.default is None)
50        self.failUnless(FOO.section == "globals")
51        self.failUnless(FOO.section_re == None)
52        self.failUnless(FOO.__doc__ == "")
53
54    def test_init3(self):
55        """Test Option construction"""
56        FOO = Option("foo", default=1, section="a", doc="b", section_re="re")
57        self.failUnless(FOO.default is 1)
58        self.failUnless(FOO.value is 1)
59        self.failUnless(FOO.section == "a")
60        self.failUnless(FOO.section_re == "re")
61        self.failUnless(FOO.__doc__ == "b")
62
63    def test_set_get(self):
64        """Test set/get values"""
65        class TMP(Plugin):
66            ep = ExtensionPoint(IOption)
67            opt = Option("foo", default=4)
68        obj = TMP()
69        self.failUnless(obj.opt/2 == 2)
70        obj.opt = 6
71        self.failUnless(obj.opt/2 == 3)
72        #
73        # Verify that the TMP instance has value 6
74        #
75        for pt in obj.ep:
76            self.failUnlessEqual(pt.option.value,6)
77
78    def test_repr(self):
79        """Test string repn"""
80        ep = ExtensionPoint(IOption)
81        class TMP(Plugin):
82            o1 = Option("o1", default=4)
83            o2 = Option("o2", section="foo", default=4)
84        obj = TMP()
85        pt = ep.extensions()
86        self.failUnlessEqual(str(pt[0].option),"<Option [globals] \"o1\">")
87        self.failUnlessEqual(str(pt[1].option),"<Option [foo] \"o2\">")
88        self.failUnlessEqual(pt[0].option.value,4)
89        pt[0].load("o1",["new"])
90        self.failUnlessEqual(pt[0].option.value,"new")
91        pt[0].load("o1","old")
92        self.failUnlessEqual(pt[0].option.value,"old")
93
94    def test_bool(self):
95        """Test boolean"""
96        ep = ExtensionPoint(IOption)
97        class TMP(Plugin):
98            o1 = BoolOption("o1")
99        obj = TMP()
100        pt = ep.extensions()
101
102        pt[0].load("o1",[True])
103        self.failUnlessEqual(pt[0].option.value,True)
104       
105        pt[0].load("o1",[False])
106        self.failUnlessEqual(pt[0].option.value,False)
107
108        pt[0].load("o1",[1])
109        self.failUnlessEqual(pt[0].option.value,True)
110       
111        pt[0].load("o1",[0])
112        self.failUnlessEqual(pt[0].option.value,False)
113
114        pt[0].load("o1",['YES'])
115        self.failUnlessEqual(pt[0].option.value,True)
116       
117        pt[0].load("o1",['no'])
118        self.failUnlessEqual(pt[0].option.value,False)
119
120    def test_int(self):
121        """Test int"""
122        ep = ExtensionPoint(IOption)
123        class TMP(Plugin):
124            o1 = IntOption("o1")
125        obj = TMP()
126        pt = ep.extensions()
127
128        pt[0].load("o1",[-1])
129        self.failUnlessEqual(pt[0].option.value,-1)
130       
131        pt[0].load("o1",["-1"])
132        self.failUnlessEqual(pt[0].option.value,-1)
133
134        pt[0].load("o1",[[]])
135        self.failUnlessEqual(pt[0].option.value,0)
136
137        try:
138            pt[0].load("o1",[['a']])
139            self.fail("expected error")
140        except OptionError:
141            pass
142       
143        try:
144            pt[0].load("o1",["-1.5"])
145            self.fail("expected error")
146        except OptionError:
147            pass
148       
149    def test_float(self):
150        """Test float"""
151        ep = ExtensionPoint(IOption)
152        class TMP(Plugin):
153            o1 = FloatOption("o1")
154        obj = TMP()
155        pt = ep.extensions()
156
157        pt[0].load("o1",[-1.5])
158        self.failUnlessEqual(pt[0].option.value,-1.5)
159       
160        pt[0].load("o1",["-1.5"])
161        self.failUnlessEqual(pt[0].option.value,-1.5)
162
163        pt[0].load("o1",[[]])
164        self.failUnlessEqual(pt[0].option.value,0)
165
166        try:
167            pt[0].load("o1",[['a']])
168            self.fail("expected error")
169        except OptionError:
170            pass
171       
172        try:
173            pt[0].load("o1",['a'])
174            self.fail("expected error")
175        except OptionError:
176            pass
177       
178    def test_path(self):
179        """Test path"""
180        ep = ExtensionPoint(IOption)
181        if sys.platform == "win32":
182            o1_default = "C:/default"
183        else:
184            o1_default = "/dev//default"
185        class TMP(Plugin):
186            o1 = PathOption("o1",default=o1_default)
187        obj = TMP()
188        pt = ep.extensions()
189
190        pt[0].load("o1",[None])
191        if sys.platform == "win32":
192            self.failUnlessEqual(pt[0].option.value,"c:\\default")
193        else:
194            self.failUnlessEqual(pt[0].option.value,"/dev/default")
195       
196        if sys.platform == "win32":
197            pt[0].load("o1",["C:/load1"])
198        else:
199            pt[0].load("o1",["/dev/load1"])
200        if sys.platform == "win32":
201            self.failUnlessEqual(pt[0].option.value,"c:\\load1")
202        else:
203            self.failUnlessEqual(pt[0].option.value,"/dev/load1")
204
205        if sys.platform == "win32":
206            pt[0].option.set_path("D:/foo")
207        else:
208            pt[0].option.set_path("/dev/foo")
209        pt[0].load("o1",["bar"])
210        if sys.platform == "win32":
211            self.failUnlessEqual(pt[0].option.value,"d:\\foo\\bar")
212        else:
213            self.failUnlessEqual(pt[0].option.value,"/dev/foo/bar")
214
215       
216    def test_OptionPlugin(self):
217        """Test OptionPlugin"""
218        ep = ExtensionPoint(IOption)
219        class TMP(Plugin):
220            o1 = Option("o1")
221        obj = TMP()
222        pt = ep.extensions()
223
224        pt[0].load("dummy",[])
225        try:
226            pt[0].load("o1",[])
227            self.fail("expected error")
228        except OptionError:
229            pass
230
231       
232if __name__ == "__main__":
233   unittest.main()
Note: See TracBrowser for help on using the repository browser.