Skip to content

Commit d2f4adf

Browse files
committed
Merge branch 'test_observer' of https://github.com/fkromer/python-patterns into fkromer-test_observer
2 parents 067a847 + 54565b3 commit d2f4adf

File tree

1 file changed

+42
-38
lines changed

1 file changed

+42
-38
lines changed

test_observer.py

Lines changed: 42 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,70 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
14
import sys
25
from io import StringIO
36
from observer import Subject, Data, DecimalViewer, HexViewer
47

58
if sys.version_info < (2, 7):
69
import unittest2 as unittest
7-
10+
811
else:
912
import unittest
10-
13+
1114
from unittest.mock import patch
1215

1316
class TestSubject(unittest.TestCase):
1417

1518
@classmethod
16-
def setUpClass(self):
17-
self.s = Subject()
18-
self.dec_obs = DecimalViewer()
19-
self.hex_obs = HexViewer()
19+
def setUpClass(cls):
20+
cls.s = Subject()
21+
cls.dec_obs = DecimalViewer()
22+
cls.hex_obs = HexViewer()
2023

21-
def test_a_observer_list_shall_be_empty_initially(self):
22-
self.assertEqual(len(self.s._observers), 0)
24+
def test_a_observer_list_shall_be_empty_initially(cls):
25+
cls.assertEqual(len(cls.s._observers), 0)
2326

24-
def test_b_observers_shall_be_attachable(self):
25-
self.s.attach(self.dec_obs)
26-
self.assertEqual(isinstance(self.s._observers[0], DecimalViewer), True)
27-
self.assertEqual(len(self.s._observers), 1)
28-
self.s.attach(self.hex_obs)
29-
self.assertEqual(isinstance(self.s._observers[1], HexViewer), True)
30-
self.assertEqual(len(self.s._observers), 2)
27+
def test_b_observers_shall_be_attachable(cls):
28+
cls.s.attach(cls.dec_obs)
29+
cls.assertEqual(isinstance(cls.s._observers[0], DecimalViewer), True)
30+
cls.assertEqual(len(cls.s._observers), 1)
31+
cls.s.attach(cls.hex_obs)
32+
cls.assertEqual(isinstance(cls.s._observers[1], HexViewer), True)
33+
cls.assertEqual(len(cls.s._observers), 2)
3134

32-
def test_c_observers_shall_be_detachable(self):
33-
self.s.detach(self.dec_obs)
35+
def test_c_observers_shall_be_detachable(cls):
36+
cls.s.detach(cls.dec_obs)
3437
# hex viewer shall be remaining if dec viewer is detached first
35-
self.assertEqual(isinstance(self.s._observers[0], HexViewer), True)
36-
self.assertEqual(len(self.s._observers), 1)
37-
self.s.detach(self.hex_obs)
38-
self.assertEqual(len(self.s._observers), 0)
38+
cls.assertEqual(isinstance(cls.s._observers[0], HexViewer), True)
39+
cls.assertEqual(len(cls.s._observers), 1)
40+
cls.s.detach(cls.hex_obs)
41+
cls.assertEqual(len(cls.s._observers), 0)
3942

4043
class TestData(unittest.TestCase):
4144

4245
@classmethod
43-
def setUpClass(self):
44-
self.dec_obs = DecimalViewer()
45-
self.hex_obs = HexViewer()
46-
self.sub = Data('Data')
46+
def setUpClass(cls):
47+
cls.dec_obs = DecimalViewer()
48+
cls.hex_obs = HexViewer()
49+
cls.sub = Data('Data')
4750
#inherited behavior already tested with TestSubject
48-
self.sub.attach(self.dec_obs)
49-
self.sub.attach(self.hex_obs)
51+
cls.sub.attach(cls.dec_obs)
52+
cls.sub.attach(cls.hex_obs)
5053

51-
def test_data_change_shall_notify_all_observers_once(self):
52-
with patch.object(self.dec_obs, 'update') as mock_dec_obs_update, patch.object(self.hex_obs, 'update') as mock_hex_obs_update:
53-
self.sub.data = 10
54-
self.assertEqual(mock_dec_obs_update.call_count, 1)
55-
self.assertEqual(mock_hex_obs_update.call_count, 1)
54+
def test_data_change_shall_notify_all_observers_once(cls):
55+
with patch.object(cls.dec_obs, 'update') as mock_dec_obs_update,\
56+
patch.object(cls.hex_obs, 'update') as mock_hex_obs_update:
57+
cls.sub.data = 10
58+
cls.assertEqual(mock_dec_obs_update.call_count, 1)
59+
cls.assertEqual(mock_hex_obs_update.call_count, 1)
5660

57-
def test_data_value_shall_be_changeable(self):
58-
self.sub.data = 20
59-
self.assertEqual(self.sub._data, 20)
61+
def test_data_value_shall_be_changeable(cls):
62+
cls.sub.data = 20
63+
cls.assertEqual(cls.sub._data, 20)
6064

61-
def test_data_name_shall_be_changeable(self):
62-
self.sub.name = 'New Data Name'
63-
self.assertEqual(self.sub.name, 'New Data Name')
65+
def test_data_name_shall_be_changeable(cls):
66+
cls.sub.name = 'New Data Name'
67+
cls.assertEqual(cls.sub.name, 'New Data Name')
6468

6569
if __name__ == "__main__":
6670
unittest.main()

0 commit comments

Comments
 (0)