123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- import unittest
- from pycs.observable import Observable
- class Wrapper:
- def __init__(self, init=0):
- self.value = init
- def inc(self):
- self.value += 1
- def set(self, value):
- self.value = value
- class TestObservable(unittest.TestCase):
- settings = {
- 'dir1': {
- 'file11': 11,
- 'file12': ['one', 'two'],
- 'subdir1': {
- 'file111': 'oneoneone',
- 'file112': 112,
- 'subdir11': {
- 'file1111': 1111
- }
- }
- },
- 'dir2': {
- 'file21': 21,
- 'file22': 22
- },
- 'dir3': {
- 'subdir1': {
- 'file311': 311
- }
- },
- 'file1': 1
- }
- def test_load(self):
- obs = Observable.create(source=self.settings)
- # root
- self.assertEqual(obs['file1'], self.settings['file1'])
- # dict
- self.assertEqual(obs['dir1']['file11'], self.settings['dir1']['file11'])
- # list
- self.assertEqual(obs['dir1']['file12'][0], self.settings['dir1']['file12'][0])
- def test_update(self):
- obs = Observable.create(source=self.settings)
- # root
- obs['file1'] = 2
- self.assertEqual(2, obs['file1'])
- del obs['file1']
- self.assertFalse('file1' in obs)
- # dict
- obs['dir1']['file11'] = 12
- self.assertEqual(12, obs['dir1']['file11'])
- del obs['dir1']['file11']
- self.assertFalse('file11' in obs['dir1'])
- # list
- obs['dir1']['file12'][0] = 'three'
- self.assertEqual('three', obs['dir1']['file12'][0])
- del obs['dir1']['file12'][0]
- self.assertEqual(1, len(obs['dir1']['file12']))
- self.assertEqual('two', obs['dir1']['file12'][0])
- def test_subscribe(self):
- obs = Observable.create(source=self.settings)
- # root
- counter1 = Wrapper()
- obs['dir1'].subscribe(lambda x: counter1.inc())
- obs['dir1']['file11'] = 12
- self.assertEqual(1, counter1.value)
- del obs['dir1']['file11']
- self.assertEqual(2, counter1.value)
- # dict
- counter2 = Wrapper()
- obs['dir1'].subscribe(lambda x: counter2.inc())
- obs['dir1']['file11'] = 12
- self.assertEqual(1, counter2.value)
- del obs['dir1']['file11']
- self.assertEqual(2, counter2.value)
- # list
- counter3 = Wrapper()
- obs['dir1']['file12'].subscribe(lambda x: counter3.inc())
- obs['dir1']['file12'][0] = 'three'
- self.assertEqual(1, counter3.value)
- obs['dir1']['file12'].append(4)
- self.assertEqual(2, counter3.value)
- del obs['dir1']['file12'][1]
- self.assertEqual(3, counter3.value)
- # TODO test subscription value
- # TODO test complex append
- if __name__ == '__main__':
- unittest.main()
|