Skip to content

Commit d0cb7e9

Browse files
committed
Observer pattern implemented
1 parent 421005f commit d0cb7e9

File tree

2 files changed

+65
-3
lines changed

2 files changed

+65
-3
lines changed

forms/ScreenBlockerMenu.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44
class ScreenBlockerMenu(Frame):
5+
56
def __init__(self, master, **kwargs):
67
super().__init__(master, **kwargs)
78
self.master = master

tests/TestsTimeOptions.py

Lines changed: 64 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,34 @@ class TimeOptionsManager(object):
55
def __init__(self):
66
self.minutes = 10
77
self.seconds = 0
8+
self.time_change_callbacks = []
89

910
def get_time_string(self):
10-
return "{0:0>2}:00".format(self.minutes, self.seconds)
11+
return "{0:0>2}:{1:0>2}".format(self.minutes, self.seconds)
1112

12-
def indement_minutes(self):
13+
def increment_minutes(self):
1314
self.minutes += 1
15+
self.fire_time_change_callbacks()
1416

1517
def decriment_minutes(self):
1618
self.minutes -= 1
19+
self.fire_time_change_callbacks()
20+
21+
def increment_seconds(self):
22+
self.seconds = (self.seconds + 15) % 60
23+
self.fire_time_change_callbacks()
24+
25+
def decrement_seconds(self):
26+
self.seconds = ((self.seconds + 60) - 15) % 60
27+
self.fire_time_change_callbacks()
28+
29+
def subscribe_to_timechange(self, time_change_callback):
30+
self.time_change_callbacks.append(time_change_callback)
31+
32+
def fire_time_change_callbacks(self):
33+
for time_change_callback in self.time_change_callbacks:
34+
if time_change_callback:
35+
time_change_callback(self.get_time_string())
1736

1837

1938
class TestsTimeOptions(unittest.TestCase):
@@ -24,7 +43,7 @@ def test_default_time_10_minutes(self):
2443

2544
def test_indement_minutes_once_is_11_minutes(self):
2645
time_options_manager = TimeOptionsManager()
27-
time_options_manager.indement_minutes()
46+
time_options_manager.increment_minutes()
2847
result = time_options_manager.get_time_string()
2948
self.assertEqual(result, "11:00")
3049

@@ -34,6 +53,48 @@ def test_decriment_minutes_once_is_9_minutes(self):
3453
result = time_options_manager.get_time_string()
3554
self.assertEqual(result, "09:00")
3655

56+
def test_increment_seconds_once_is_10_minutes_15_seconds(self):
57+
time_options_manager = TimeOptionsManager()
58+
time_options_manager.increment_seconds()
59+
result = time_options_manager.get_time_string()
60+
self.assertEqual(result, "10:15")
61+
62+
def test_increment_seconds_4_times_is_10_minutes(self):
63+
time_options_manager = TimeOptionsManager()
64+
time_options_manager.increment_seconds()
65+
time_options_manager.increment_seconds()
66+
time_options_manager.increment_seconds()
67+
time_options_manager.increment_seconds()
68+
result = time_options_manager.get_time_string()
69+
self.assertEqual(result, "10:00")
70+
71+
def test_decrement_seconds_once_is_10_minutes_45_seconds(self):
72+
time_options_manager = TimeOptionsManager()
73+
time_options_manager.decrement_seconds()
74+
result = time_options_manager.get_time_string()
75+
self.assertEqual(result, "10:45")
76+
77+
def test_decrement_seconds_3_times_is_10_minutes_45_seconds(self):
78+
time_options_manager = TimeOptionsManager()
79+
time_options_manager.decrement_seconds()
80+
time_options_manager.decrement_seconds()
81+
time_options_manager.decrement_seconds()
82+
result = time_options_manager.get_time_string()
83+
self.assertEqual(result, "10:15")
84+
85+
def test_subscribe_to_time_changes(self):
86+
time_options_manager = TimeOptionsManager()
87+
result = { "result" : "time"}
88+
89+
def time_change_callback(time):
90+
result["result"] += " " + time
91+
92+
time_options_manager.subscribe_to_timechange(time_change_callback)
93+
94+
time_options_manager.increment_seconds()
95+
96+
self.assertEqual(result["result"], "time 10:15")
97+
3798

3899
if __name__ == '__main__':
39100
unittest.main()

0 commit comments

Comments
 (0)