Skip to content

Commit 5848efe

Browse files
committed
Approval Tests for observer pattern
1 parent 352ae79 commit 5848efe

8 files changed

+71
-82
lines changed

.idea/dictionaries/Chris.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

TkinterExamples.py

Lines changed: 0 additions & 71 deletions
This file was deleted.

tests/Infrastrcture/TestsMobberManager.py renamed to tests/Infrastrcture/MobberManager/TestsMobberManager.py

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,51 @@
1+
import os
12
import unittest
3+
from approvaltests import Approvals
4+
from approvaltests.TextDiffReporter import TextDiffReporter
25

36

47
class MobberManager(object):
58
def __init__(self):
69
self.mobber_list = []
10+
self.mobber_list_change_callbacks = []
711

812
def mobber_count(self):
913
return self.mobber_list.__len__()
1014

1115
def add_mobber(self, mobber_name):
1216
self.mobber_list.append(mobber_name)
17+
self.fire_time_change_callbacks()
1318

1419
def get_mobbers(self):
1520
return self.mobber_list
1621

1722
def remove_mobber(self, remove_mobber_index):
1823
if self.mobber_count() == 0: return
1924
del self.mobber_list[remove_mobber_index]
25+
self.fire_time_change_callbacks()
2026

2127
def move_mobber_up(self, swap_index):
2228
if self.mobber_count() == 0: return
2329
destination_index = swap_index - 1
2430
self.mobber_list[swap_index], self.mobber_list[destination_index] = self.mobber_list[destination_index], \
2531
self.mobber_list[swap_index]
32+
self.fire_time_change_callbacks()
2633

2734
def move_mobber_down(self, swap_index):
2835
if self.mobber_count() == 0: return
2936
destination_index = (swap_index + 1) % self.mobber_list.__len__()
3037
self.mobber_list[swap_index], self.mobber_list[destination_index] = self.mobber_list[destination_index], \
3138
self.mobber_list[swap_index]
39+
self.fire_time_change_callbacks()
3240

41+
def subscribe_to_mobber_list_change(self, mobber_list_change_callback):
42+
self.mobber_list_change_callbacks.append(mobber_list_change_callback)
43+
self.fire_time_change_callbacks()
44+
45+
def fire_time_change_callbacks(self):
46+
for mobber_list_change_callback in self.mobber_list_change_callbacks:
47+
if mobber_list_change_callback:
48+
mobber_list_change_callback(self.mobber_list)
3349

3450
class TestsMobberManager(unittest.TestCase):
3551
def test_empty_mobber_manager_has_no_items(self):
@@ -118,23 +134,32 @@ def test_remove_empty(self):
118134

119135
def test_subscribe_to_mobber_list_changes(self):
120136
mobber_manager = MobberManager()
121-
result = { "result" : "Contents:"}
137+
result = { "result" : "Mobbers in List for Each Change\n", "increment" : 0}
122138

123139
def time_change_callback(mobber_list):
124-
result["result"] += " ["
140+
result["increment"] += 1
141+
result["result"] += "Action " + result["increment"].__str__() + ":"
125142
for mobber in mobber_list:
126143
result["result"] += mobber + ","
127-
result["result"] += "], "
144+
result["result"] += "\n"
128145

129146
mobber_manager.subscribe_to_mobber_list_change(time_change_callback)
130147

131148
mobber_manager.add_mobber("Joe")
132149
mobber_manager.add_mobber("Chris")
133150
mobber_manager.add_mobber("Sam")
134151
mobber_manager.remove_mobber(2)
152+
mobber_manager.remove_mobber(0)
153+
mobber_manager.add_mobber("Seth")
154+
mobber_manager.move_mobber_down(0)
155+
mobber_manager.add_mobber("Fredrick")
156+
mobber_manager.move_mobber_up(2)
157+
mobber_manager.remove_mobber(1)
158+
mobber_manager.remove_mobber(0)
159+
mobber_manager.remove_mobber(0)
135160

136-
self.assertEqual(result["result"], "Contents:[], [Joe,], [Joe,Chris,], [Joe,Chris,Sam,], [Joe,Chris,]")
137-
161+
Approvals.verify(result["result"], TextDiffReporter())
138162

139163
if __name__ == '__main__':
164+
os.environ["APPROVALS_TEXT_DIFF_TOOL"] = "meld"
140165
unittest.main()

tests/Infrastrcture/MobberManager/__init__.py

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
Mobbers in List for Each Change
2+
Action 1:
3+
Action 2:Joe,
4+
Action 3:Joe,Chris,
5+
Action 4:Joe,Chris,Sam,
6+
Action 5:Joe,Chris,
7+
Action 6:Chris,
8+
Action 7:Chris,Seth,
9+
Action 8:Seth,Chris,
10+
Action 9:Seth,Chris,Fredrick,
11+
Action 10:Seth,Fredrick,Chris,
12+
Action 11:Seth,Chris,
13+
Action 12:Chris,
14+
Action 13:

tests/infrastrcture/TestsTimeOptionsManager.py renamed to tests/Infrastrcture/TimeOptionsManager/TestsTimeOptionsManager.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
import os
12
import unittest
23

3-
from infrastructure.TimeOptionsManager import TimeOptionsManager
4+
from approvaltests import Approvals
5+
from approvaltests.TextDiffReporter import TextDiffReporter
6+
7+
from Infrastructure.TimeOptionsManager import TimeOptionsManager
48

59

610
class TestsTimeOptionsManager(unittest.TestCase):
@@ -65,10 +69,11 @@ def time_change_callback(time, minutes, seconds):
6569

6670
def test_subscribe_to_time_changes_complex(self):
6771
time_options_manager = TimeOptionsManager()
68-
result = {"result": "time"}
72+
result = {"result": "Time Options after Change:", "increment" : 0}
6973

7074
def time_change_callback(time, minutes, seconds):
71-
result["result"] += " " + time
75+
result["increment"] += 1
76+
result["result"] += "\n Change " + result["increment"].__str__() + "| " + time
7277

7378
time_options_manager.subscribe_to_timechange(time_change_callback)
7479

@@ -87,9 +92,8 @@ def time_change_callback(time, minutes, seconds):
8792
time_options_manager.increment_minutes()
8893
time_options_manager.increment_minutes()
8994

90-
self.assertEqual(result["result"],
91-
"time 10:00 10:15 10:30 10:45 10:30 10:15 10:00 10:45 09:45 08:45 09:45 10:45 11:45 12:45 13:45")
92-
95+
Approvals.verify(result["result"], TextDiffReporter())
9396

9497
if __name__ == '__main__':
98+
os.environ["APPROVALS_TEXT_DIFF_TOOL"] = "meld"
9599
unittest.main()

tests/Infrastrcture/TimeOptionsManager/__init__.py

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
Time Options after Change:
2+
Change 1| 10:00
3+
Change 2| 10:15
4+
Change 3| 10:30
5+
Change 4| 10:45
6+
Change 5| 10:30
7+
Change 6| 10:15
8+
Change 7| 10:00
9+
Change 8| 10:45
10+
Change 9| 09:45
11+
Change 10| 08:45
12+
Change 11| 09:45
13+
Change 12| 10:45
14+
Change 13| 11:45
15+
Change 14| 12:45
16+
Change 15| 13:45

0 commit comments

Comments
 (0)