Fixed encoding.
[rox-lib/lack.git] / tests / python / testoptions.py
blobc5b7cba8fd1613b26638aad7aab692f0000bf561
1 #!/usr/bin/env python2.2
2 import unittest
3 import os, sys, shutil
4 sys.path.append('../../python')
6 os.environ['CHOICESPATH'] = '/tmp/choices:/tmp/choices2'
7 os.environ['XDG_CONFIG_HOME'] = '/tmp/config'
9 from rox import basedir, choices, options
11 class TestOptions(unittest.TestCase):
12 def setUp(self):
13 for d in ['/tmp/choices', '/tmp/choices2', '/tmp/config']:
14 if os.path.isdir(d):
15 shutil.rmtree(d)
17 def testChoices(self):
18 group = options.OptionGroup('MyProg', 'Options')
19 o1 = options.Option('colour', 'red', group)
20 assert not os.path.isfile('/tmp/choices/MyProg/Options')
21 group.notify()
22 group.save()
23 assert os.path.isfile('/tmp/choices/MyProg/Options')
25 g2 = options.OptionGroup('MyProg', 'Options')
26 o1 = options.Option('colour', 'green', g2)
27 g2.notify()
28 self.assertEquals('red', o1.value)
30 def testXDG(self):
31 group = options.OptionGroup('MyProg', 'Options', 'site')
32 o1 = options.Option('colour', 'red', group)
33 assert not os.path.isfile('/tmp/config/site/MyProg/Options')
34 group.notify()
35 group.save()
36 assert os.path.isfile('/tmp/config/site/MyProg/Options')
38 g2 = options.OptionGroup('MyProg', 'Options', 'site')
39 o1 = options.Option('colour', 'green', g2)
40 g2.notify()
41 self.assertEquals('red', o1.value)
43 def testNotify(self):
44 self.c = 0
45 def notify():
46 self.c += 1
47 group = options.OptionGroup('MyProg', 'Options', 'site')
48 o1 = options.Option('colour', 'green', group)
49 group.add_notify(notify)
50 self.assertEquals(0, self.c)
51 group.notify()
52 self.assertEquals(1, self.c)
54 try:
55 options.Option('size', 'small', group)
56 raise Exception('Too late!')
57 except AssertionError:
58 pass
60 group.remove_notify(notify)
61 group.notify()
62 self.assertEquals(1, self.c)
64 assert not o1.has_changed
65 o1._set('hi')
66 assert o1.has_changed
67 group.notify()
68 assert not o1.has_changed
71 suite = unittest.makeSuite(TestOptions)
72 if __name__ == '__main__':
73 sys.argv.append('-v')
74 unittest.main()