@@ -6,17 +6,33 @@ def __init__(self):
66 self .mobber_list = []
77
88 def mobber_count (self ):
9- return 0
9+ return self . mobber_list . __len__ ()
1010
1111 def add_mobber (self , mobber_name ):
1212 self .mobber_list .append (mobber_name )
1313
1414 def get_mobbers (self ):
1515 return self .mobber_list
1616
17+ def remove_mobber (self , remove_mobber_index ):
18+ if self .mobber_count () == 0 : return
19+ del self .mobber_list [remove_mobber_index ]
20+
21+ def move_mobber_up (self , swap_index ):
22+ if self .mobber_count () == 0 : return
23+ destination_index = swap_index - 1
24+ self .mobber_list [swap_index ], self .mobber_list [destination_index ] = self .mobber_list [destination_index ], \
25+ self .mobber_list [swap_index ]
26+
27+ def move_mobber_down (self , swap_index ):
28+ if self .mobber_count () == 0 : return
29+ destination_index = (swap_index + 1 ) % self .mobber_list .__len__ ()
30+ self .mobber_list [swap_index ], self .mobber_list [destination_index ] = self .mobber_list [destination_index ], \
31+ self .mobber_list [swap_index ]
32+
1733
1834class TestsMobberManager (unittest .TestCase ):
19- def test_emty_mobber_manager_has_no_items (self ):
35+ def test_empty_mobber_manager_has_no_items (self ):
2036 mobber_manager = MobberManager ()
2137 self .assertEqual (mobber_manager .mobber_count (), 0 )
2238
@@ -26,14 +42,99 @@ def test_add_mobber_chris_has_chris(self):
2642 result = ["Chris" ]
2743 self .assertEqual (mobber_manager .get_mobbers (), result )
2844
29-
3045 def test_add_mobber_joe_chris_has_joe_chris (self ):
3146 mobber_manager = MobberManager ()
3247 mobber_manager .add_mobber ("Joe" )
3348 mobber_manager .add_mobber ("Chris" )
3449 result = ["Joe" , "Chris" ]
3550 self .assertEqual (mobber_manager .get_mobbers (), result )
3651
52+ def test_add_mobber_joe_chris_joe__remove_joe_has_joe_chris (self ):
53+ mobber_manager = MobberManager ()
54+ mobber_manager .add_mobber ("Joe" )
55+ mobber_manager .add_mobber ("Chris" )
56+ mobber_manager .add_mobber ("Joe" )
57+ mobber_manager .remove_mobber (2 )
58+ result = ["Joe" , "Chris" ]
59+ self .assertEqual (mobber_manager .get_mobbers (), result )
60+
61+ def test_add_4_mobbers_move_up_middle (self ):
62+ mobber_manager = MobberManager ()
63+ mobber_manager .add_mobber ("Joe" )
64+ mobber_manager .add_mobber ("Chris" )
65+ mobber_manager .add_mobber ("Will" )
66+ mobber_manager .add_mobber ("Eric" )
67+ mobber_manager .move_mobber_up (2 )
68+ result = ["Joe" , "Will" , "Chris" , "Eric" ]
69+ self .assertEqual (mobber_manager .get_mobbers (), result )
70+
71+ def test_add_4_mobbers_move_up_top (self ):
72+ mobber_manager = MobberManager ()
73+ mobber_manager .add_mobber ("Joe" )
74+ mobber_manager .add_mobber ("Chris" )
75+ mobber_manager .add_mobber ("Will" )
76+ mobber_manager .add_mobber ("Eric" )
77+ mobber_manager .move_mobber_up (0 )
78+ result = ["Eric" , "Chris" , "Will" , "Joe" ]
79+ self .assertEqual (mobber_manager .get_mobbers (), result )
80+
81+ def test_add_4_mobbers_move_down_middle (self ):
82+ mobber_manager = MobberManager ()
83+ mobber_manager .add_mobber ("Joe" )
84+ mobber_manager .add_mobber ("Chris" )
85+ mobber_manager .add_mobber ("Will" )
86+ mobber_manager .add_mobber ("Eric" )
87+ mobber_manager .move_mobber_down (2 )
88+ result = ["Joe" , "Chris" , "Eric" , "Will" ]
89+ self .assertEqual (mobber_manager .get_mobbers (), result )
90+
91+ def test_add_4_mobbers_move_down_bottom (self ):
92+ mobber_manager = MobberManager ()
93+ mobber_manager .add_mobber ("Joe" )
94+ mobber_manager .add_mobber ("Chris" )
95+ mobber_manager .add_mobber ("Will" )
96+ mobber_manager .add_mobber ("Eric" )
97+ mobber_manager .move_mobber_down (3 )
98+ result = ["Eric" , "Chris" , "Will" , "Joe" ]
99+ self .assertEqual (mobber_manager .get_mobbers (), result )
100+
101+ def test_move_down_empty (self ):
102+ mobber_manager = MobberManager ()
103+ mobber_manager .move_mobber_down (0 )
104+ result = []
105+ self .assertEqual (mobber_manager .get_mobbers (), result )
106+
107+ def test_move_up_empty (self ):
108+ mobber_manager = MobberManager ()
109+ mobber_manager .move_mobber_up (0 )
110+ result = []
111+ self .assertEqual (mobber_manager .get_mobbers (), result )
112+
113+ def test_remove_empty (self ):
114+ mobber_manager = MobberManager ()
115+ mobber_manager .remove_mobber (0 )
116+ result = []
117+ self .assertEqual (mobber_manager .get_mobbers (), result )
118+
119+ def test_subscribe_to_mobber_list_changes (self ):
120+ mobber_manager = MobberManager ()
121+ result = { "result" : "Contents:" }
122+
123+ def time_change_callback (mobber_list ):
124+ result ["result" ] += " ["
125+ for mobber in mobber_list :
126+ result ["result" ] += mobber + ","
127+ result ["result" ] += "], "
128+
129+ mobber_manager .subscribe_to_mobber_list_change (time_change_callback )
130+
131+ mobber_manager .add_mobber ("Joe" )
132+ mobber_manager .add_mobber ("Chris" )
133+ mobber_manager .add_mobber ("Sam" )
134+ mobber_manager .remove_mobber (2 )
135+
136+ self .assertEqual (result ["result" ], "Contents:[], [Joe,], [Joe,Chris,], [Joe,Chris,Sam,], [Joe,Chris,]" )
137+
37138
38139if __name__ == '__main__' :
39140 unittest .main ()
0 commit comments