Changeset df0449c in flowtimer
- Timestamp:
- 08/31/24 14:57:29 (9 months ago)
- Branches:
- guix
- Children:
- f2a2a82
- Parents:
- 8f41b95
- Files:
-
- 1 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
flowtimer/Phase.py
r8f41b95 rdf0449c 7 7 This class is a representation of a single phase inside a timer 8 8 """ 9 10 @classmethod 11 def default(cls): 12 return cls('Default', 30) 9 13 10 14 def __init__(self, title, ticks): … … 71 75 def is_running(self): 72 76 return self._state == "running" 73 # return self.time_left > 074 77 75 78 def is_terminated(self): … … 83 86 84 87 def tick(self, ticks): 88 self.start() 85 89 result = self._ticks_left - ticks 86 90 87 if result < = 0:91 if result < 1: 88 92 self._ticks_left = 0 89 93 self._state = "completed" -
flowtimer/RecurringPhaseSequence.py
r8f41b95 rdf0449c 70 70 def ticks_left(self): 71 71 return ( 72 (self.passes_left -1) * sum([each.initial_ticks for each in self.phases]) +72 (self.passes_left) * sum([each.initial_ticks for each in self.phases]) + 73 73 self.current_phase.ticks_left + 74 74 sum([each.ticks_left for each in self.upcoming_phases_in_pass()])) … … 80 80 81 81 def is_final_round(self): 82 print("Final round", self.passes_left)83 82 return self.passes_left == 0 84 83 … … 108 107 else: 109 108 if self.is_final_round(): 110 print("Abort on final round")111 109 self.abort() 112 110 return 113 111 else: 114 112 self.passes_left -= 1 115 print("Skip", self.passes_left)116 113 self.current_phase.reset() 117 114 self.current_phase = self.phases[0] … … 123 120 self.current_phase.reset() 124 121 self.current_phase = self.phases[current_index + 1] 122 # self.current_phase.start() 125 123 else: 126 124 # Completed a full sequence; check if more repetitions are needed … … 128 126 if self.passes_left < 1: 129 127 self._state = "completed" 130 print("Passes left", self.passes_left)131 128 else: 132 129 self.current_phase.reset() 133 130 self.current_phase = self.phases[0] # Reset to the first phase 131 # self.current_phase.start() 134 132 135 133 def tick(self, ticks): … … 139 137 self.advance_to_next_phase() 140 138 result = self.tick(abs(result)) 141 return 139 return result 140 return result 141 else: 142 return 0 142 143 143 144 def unrolled(self): -
flowtimer/Schedule.py
r8f41b95 rdf0449c 144 144 def skip(self): 145 145 if self.current_block.is_sequence(): 146 print("Skip the next phase in sequence")147 146 self.current_block.skip() 148 147 if self.current_block.is_terminated(): … … 153 152 return 154 153 if self.current_block_is_final(): 155 print("Time over")156 154 self.abort() 157 155 return -
tests/test_phase.py
r8f41b95 rdf0449c 2 2 from flowtimer.Phase import Phase 3 3 4 4 5 class TestPhase: 5 6 6 def test_phase_initialization(self): 7 phase = Phase("Warm-up", 300) 8 assert phase.title == "Warm-up" 9 assert phase.initial_ticks == 300 7 @pytest.fixture 8 def phase(self): 9 return Phase.default() 10 11 def test_phase_initialization(self, phase): 12 assert phase.title == "Default" 13 assert phase.initial_ticks == 30 10 14 assert phase.state == "initial" 11 assert phase.ticks_left == 30 015 assert phase.ticks_left == 30 12 16 13 17 # def test_phase_str_representation(self): … … 16 20 # assert str(phase) == expected_str 17 21 18 def test_phase_start(self): 19 phase = Phase("Warm-up", 300) 22 def test_phase_start(self, phase): 20 23 phase.start() 21 24 assert phase.state == "running" 22 25 assert phase.is_running() is True 23 26 24 def test_phase_pause(self): 25 phase = Phase("Warm-up", 300) 27 def test_phase_pause(self, phase): 26 28 phase.start() 27 29 phase.pause() … … 29 31 assert phase.is_paused() is True 30 32 31 def test_phase_abort(self): 32 phase = Phase("Warm-up", 300) 33 def test_phase_abort(self, phase): 33 34 phase.abort() 34 35 assert phase.state == "aborted" 35 36 assert phase.is_aborted() is True 36 37 37 def test_phase_tick(self): 38 phase = Phase("Warm-up", 300) 38 def test_phase_tick(self, phase): 39 39 phase.start() 40 phase.tick( 60)41 assert phase.ticks_left == 2 4040 phase.tick(10) 41 assert phase.ticks_left == 20 42 42 assert phase.state == "running" 43 assert phase.is_running() 43 44 44 def test_phase_tick_to_completion(self): 45 phase = Phase("Warm-up", 300) 45 def test_phase_tick_to_completion(self, phase): 46 46 phase.start() 47 phase.tick(30 0)47 phase.tick(30) 48 48 assert phase.ticks_left == 0 49 49 assert phase.is_completed() is True 50 assert phase.state == 'completed' 50 51 51 def test_phase_tick_beyond_completion(self): 52 phase = Phase("Warm-up", 300) 52 def test_phase_tick_beyond_completion(self, phase): 53 53 phase.start() 54 54 phase.tick(350) 55 55 assert phase.ticks_left == 0 56 assert phase.is_completed() is True 57 assert phase.state == 'completed' -
tests/test_recurring_phase_sequence.py
r8f41b95 rdf0449c 50 50 total_ticks = (sum([phase.initial_ticks for phase in recurring_phase_sequence.phases]) * 51 51 recurring_phase_sequence.initial_repetitions) 52 53 52 assert recurring_phase_sequence.ticks_left == total_ticks 54 53 recurring_phase_sequence.tick(10)
Note:
See TracChangeset
for help on using the changeset viewer.