ya2 · news · projects · code · about

renamed lib to ya2
[pmachines.git] / tests / lib / test_observer.py
1 from pathlib import Path
2 import sys
3 if '' in sys.path: sys.path.remove('')
4 sys.path.append(str(Path(__file__).parent.parent.parent))
5 from unittest import TestCase
6 from unittest.mock import MagicMock
7 from ya2.observer import Subject
8
9
10 class Observed(Subject): pass
11
12
13 class Observer:
14
15 def __init__(self, observed): self.__observed = observed
16
17 def callback(self): pass
18
19
20 class ObserverTests(TestCase):
21
22 def test_all(self):
23 observed = Observed()
24 observer = Observer(observed)
25 observer.callback = MagicMock(side_effect=observer.callback)
26 observer.callback.__name__ = 'callback'
27 self.assertFalse(observed.observing(observer.callback))
28 observed.attach(observer.callback)
29 self.assertTrue(observed.observing(observer.callback))
30 observer.callback.assert_not_called()
31 observed.notify('callback')
32 observer.callback.assert_called()
33 observed.detach(observer.callback)
34 self.assertFalse(observed.observing(observer.callback))