1 from pathlib
import Path
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
.patterns
.observer
import Subject
10 class Observed(Subject
): pass
15 def __init__(self
, observed
): self
.__observed
= observed
17 def callback(self
): pass
20 class ObserverTests(TestCase
):
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
))