- Timestamp:
- 08/25/24 18:20:14 (9 months ago)
- Branches:
- guix
- Children:
- d310de3
- Parents:
- 5f4ef8e
- Location:
- tests
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
tests/test_phase.py
r5f4ef8e rd7a66ad 32 32 phase = Phase("Warm-up", 300) 33 33 phase.abort() 34 assert phase.state == " finished"35 assert phase. finished() is True34 assert phase.state == "aborted" 35 assert phase.aborted() is True 36 36 37 37 def test_phase_tick(self): … … 47 47 phase.tick(300) 48 48 assert phase.ticks_left == 0 49 assert phase. finished() is True49 assert phase.completed() is True 50 50 51 51 def test_phase_tick_beyond_completion(self): -
tests/test_recurring_phase_sequence.py
r5f4ef8e rd7a66ad 10 10 @pytest.fixture 11 11 def recurring_phase_sequence(self): 12 phase_list = [Phase("Huddle", 10), Phase("Tasking", 5), 13 Phase("Work", 45), Phase("Break", 15)] 14 return RecurringPhaseSequence(phase_list, 3) 12 return RecurringPhaseSequence.default() 15 13 16 14 def test_from_json(self): … … 19 17 assert isinstance(sequence, RecurringPhaseSequence) 20 18 assert sequence.initial_repetitions == 3 21 assert len(sequence.phase_list) == 422 assert sequence.phase_list[0].title == " Huddle"19 assert len(sequence.phase_list) == 3 20 assert sequence.phase_list[0].title == "Tasking" 23 21 24 22 def test_to_json(self, recurring_phase_sequence): … … 28 26 assert data['initial_repetitions'] == 3 29 27 assert data['passes_left'] == 3 30 assert len(data['phase_list']) == 428 assert len(data['phase_list']) == 3 31 29 32 30 def test_initial_state(self, recurring_phase_sequence): 33 31 assert recurring_phase_sequence.state == "initial" 34 assert recurring_phase_sequence.current_phase.title == " Huddle"32 assert recurring_phase_sequence.current_phase.title == "Tasking" 35 33 assert recurring_phase_sequence.passes_left == 3 36 34 … … 41 39 42 40 def test_phases_left_in_pass(self, recurring_phase_sequence): 43 assert recurring_phase_sequence.phases_left_in_pass() == 341 assert recurring_phase_sequence.phases_left_in_pass() == 2 44 42 recurring_phase_sequence.tick(10) 45 assert recurring_phase_sequence.phases_left_in_pass() == 243 assert recurring_phase_sequence.phases_left_in_pass() == 1 46 44 47 45 def test_upcoming_phases_in_pass(self, recurring_phase_sequence): 48 46 upcoming = recurring_phase_sequence.upcoming_phases_in_pass() 49 assert len(upcoming) == 350 assert upcoming[0].title == " Tasking"47 assert len(upcoming) == 2 48 assert upcoming[0].title == "Work" 51 49 52 50 def test_ticks_left(self, recurring_phase_sequence): … … 58 56 assert recurring_phase_sequence.ticks_left == (total_ticks - 10) 59 57 60 def test_ finished(self, recurring_phase_sequence):61 assert not recurring_phase_sequence. finished()58 def test_completed(self, recurring_phase_sequence): 59 assert not recurring_phase_sequence.completed() 62 60 for _ in range(3): 63 61 for phase in recurring_phase_sequence.phase_list: 64 62 recurring_phase_sequence.tick(phase.initial_ticks) 65 assert recurring_phase_sequence. finished()63 assert recurring_phase_sequence.completed() 66 64 67 65 def test_abort(self, recurring_phase_sequence): 68 66 recurring_phase_sequence.abort() 69 assert recurring_phase_sequence.state == " finished"70 assert recurring_phase_sequence.current_phase. finished()67 assert recurring_phase_sequence.state == "aborted" 68 assert recurring_phase_sequence.current_phase.aborted() 71 69 72 70 def test_tick_progression(self, recurring_phase_sequence): 73 recurring_phase_sequence.tick(10) 74 assert recurring_phase_sequence.current_phase.title == "Tasking" 75 assert recurring_phase_sequence.passes_left == 3 76 77 recurring_phase_sequence.tick(5) 71 recurring_phase_sequence.tick(6) 78 72 assert recurring_phase_sequence.current_phase.title == "Work" 79 73 assert recurring_phase_sequence.passes_left == 3 … … 84 78 85 79 recurring_phase_sequence.tick(15) 86 assert recurring_phase_sequence.current_phase.title == " Huddle"80 assert recurring_phase_sequence.current_phase.title == "Tasking" 87 81 assert recurring_phase_sequence.passes_left == 2 88 82 89 83 def test_unrolled(self, recurring_phase_sequence): 90 84 unrolled_phases = recurring_phase_sequence.unrolled() 91 assert len(unrolled_phases) == 1292 assert unrolled_phases[0].title == " Huddle"85 assert len(unrolled_phases) == 9 86 assert unrolled_phases[0].title == "Tasking" 93 87 assert unrolled_phases[-1].title == "Break" -
tests/test_schedule.py
r5f4ef8e rd7a66ad 1 1 import pytest 2 import json 2 3 from flowtimer.Schedule import Schedule 3 4 from flowtimer.Phase import Phase 5 from flowtimer.RecurringPhaseSequence import RecurringPhaseSequence 6 4 7 5 8 class TestSchedule: 6 7 def test_schedule_initialization(self): 8 phase1 = Phase("Warm-up", 300) 9 phase2 = Phase("Workout", 600) 10 schedule = Schedule([phase1, phase2]) 11 12 assert schedule.phase_list == [phase1, phase2] 13 assert schedule.current_phase == phase1 9 10 @pytest.fixture 11 def setup_schedule(self): 12 # Set up some real Phase and RecurringPhaseSequence objects for testing 13 phase1 = Phase("Phase 1", 300) 14 phase2 = Phase("Phase 2", 600) 15 sequence = RecurringPhaseSequence("Sequence 1", [phase1, phase2], 2) 16 blocks = [phase1, sequence] 17 schedule = Schedule("Test Schedule", blocks) 18 return schedule, phase1, phase2, sequence 19 20 def test_initialization(self, setup_schedule): 21 schedule, phase1, _, _ = setup_schedule 22 assert schedule.title == "Test Schedule" 23 assert schedule.blocks == [phase1, schedule.blocks[1]] 24 assert schedule.current_block == phase1 14 25 assert schedule.state == "initial" 15 26 16 def test_schedule_start(self): 17 phase1 = Phase("Warm-up", 300) 18 schedule = Schedule([phase1]) 27 def test_default_json_string(self): 28 default_json = Schedule.default_json_string() 29 assert isinstance(default_json, str) 30 31 def test_from_json(self): 32 json_string = Schedule.default_json_string() 33 schedule = Schedule.from_json(json_string) 34 assert schedule.title == "Default" 35 assert len(schedule.blocks) == 2 36 assert isinstance(schedule.blocks[0], Phase) 37 assert isinstance(schedule.blocks[1], RecurringPhaseSequence) 38 39 def test_to_json(self, setup_schedule): 40 schedule, _, _, _ = setup_schedule 41 json_string = schedule.to_json() 42 assert isinstance(json_string, str) 43 data = json.loads(json_string) 44 assert data['title'] == "Test Schedule" 45 assert len(data['blocks']) == 2 46 47 def test_start(self, setup_schedule): 48 schedule, phase1, _, _ = setup_schedule 19 49 schedule.start() 20 21 50 assert schedule.state == "running" 22 assert schedule.current_phase.running() is True 23 24 def test_schedule_pause(self): 25 phase1 = Phase("Warm-up", 300) 26 schedule = Schedule([phase1]) 51 # assert phase1.ticks_left < phase1.initial_ticks # Assuming the phase reduces ticks when started 52 53 def test_running(self, setup_schedule): 54 schedule, _, _, _ = setup_schedule 27 55 schedule.start() 56 assert schedule.running() is True 28 57 schedule.pause() 29 30 assert schedule.state == "paused" 31 assert schedule.is_paused() is True 58 assert schedule.running() is False 32 59 33 def test_schedule_abort(self): 34 phase1 = Phase("Warm-up", 300) 35 schedule = Schedule([phase1]) 36 schedule.start() 60 def test_paused(self, setup_schedule): 61 schedule, _, _, _ = setup_schedule 62 schedule.pause() 63 assert schedule.paused() is True 64 65 def test_abort(self, setup_schedule): 66 schedule, _, _, _ = setup_schedule 37 67 schedule.abort() 38 39 assert schedule.state == "finished" 40 assert schedule.current_phase.finished() is True 68 assert schedule.state == "aborted" 41 69 42 def test_schedule_finished(self): 43 phase1 = Phase("Warm-up", 300) 44 phase2 = Phase("Workout", 600) 45 schedule = Schedule([phase1, phase2]) 46 47 assert schedule.finished() is False 48 49 phase1.start() 50 phase1.tick(300) 51 assert phase1.finished() is True 52 assert schedule.finished() is False 53 70 def test_completed(self, setup_schedule): 71 schedule, phase1, _, sequence = setup_schedule 72 schedule.tick(phase1.initial_ticks) # Complete phase1 73 schedule.tick(sequence.initial_ticks) # Complete sequence 74 schedule.tick(phase1.initial_ticks) # Complete phase1 75 schedule.tick(sequence.initial_ticks) # Complete sequence 76 print(schedule.current_block) 77 assert schedule.completed() is True 78 assert schedule.state == "completed" 79 80 def test_advance_to_next_block(self, setup_schedule): 81 schedule, _, _, sequence = setup_schedule 82 schedule.advance_to_next_block() 83 assert schedule.current_block == schedule.blocks[1] 84 85 def test_skip(self, setup_schedule): 86 schedule, _, _, sequence = setup_schedule 54 87 schedule.skip() 55 schedule.current_phase.tick(600) 56 assert schedule.finished() is True 88 assert schedule.current_block == schedule.blocks[1] # Should skip to Phase 2 within the sequence 57 89 58 def test_schedule_skip(self): 59 phase1 = Phase("Warm-up", 300) 60 phase2 = Phase("Workout", 600) 61 schedule = Schedule([phase1, phase2]) 62 63 schedule.start() 64 schedule.skip() 65 66 assert schedule.current_phase == phase2 90 def test_total_ticks_left(self, setup_schedule): 91 schedule, phase1, phase2, sequence = setup_schedule 92 expected_total_ticks = phase1.ticks_left + sequence.ticks_left 93 assert schedule.total_ticks_left() == expected_total_ticks 67 94 68 def test_schedule_skip_at_final_phase(self): 69 phase1 = Phase("Warm-up", 300) 70 schedule = Schedule([phase1]) 71 72 schedule.start() 73 schedule.skip() 74 75 assert schedule.state == "finished" 95 def test_upcoming_blocks(self, setup_schedule): 96 schedule, _, _, sequence = setup_schedule 97 assert schedule.upcoming_blocks() == [sequence] 76 98 77 def test_schedule_tick(self): 78 phase1 = Phase("Warm-up", 300) 79 phase2 = Phase("Workout", 600) 80 schedule = Schedule([phase1, phase2]) 81 82 schedule.start() 83 schedule.tick(300) 84 85 assert phase1.finished() is True 86 assert schedule.current_phase == phase2 87 assert schedule.state == "running" 99 def test_current_block_is_final(self, setup_schedule): 100 schedule, _, _, sequence = setup_schedule 101 assert schedule.current_block_is_final() is False 102 schedule.advance_to_next_block() 103 assert schedule.current_block_is_final() is True 88 104 89 def test_schedule_tick_to_completion(self): 90 phase1 = Phase("Warm-up", 300) 91 phase2 = Phase("Workout", 600) 92 schedule = Schedule([phase1, phase2]) 93 94 schedule.start() 95 schedule.tick(300) # Should finish phase1 and move to phase2 96 schedule.tick(600) # Should finish phase2 and complete the schedule 97 98 assert phase2.finished() is True 99 assert schedule.finished() is True 105 def test_tick(self, setup_schedule): 106 schedule, phase1, _, _ = setup_schedule 107 initial_ticks = phase1.ticks_left 108 schedule.tick(100) 109 assert phase1.ticks_left == initial_ticks - 100 100 110 101 def test_schedule_current_phase_is_final(self): 102 phase1 = Phase("Warm-up", 300) 103 phase2 = Phase("Workout", 600) 104 schedule = Schedule([phase1, phase2]) 105 106 assert schedule.current_phase_is_final() is False 107 108 schedule.skip() 109 assert schedule.current_phase_is_final() is True 110 111 schedule.tick(phase1.ticks_left) # Finish phase1 112 assert schedule.current_block == schedule.blocks[1] # Should advance to the next block
Note:
See TracChangeset
for help on using the changeset viewer.