source: flowtimer/tests/test_schedule.py@ 5f4ef8e

guix
Last change on this file since 5f4ef8e was 37ae3b7, checked in by Enrico Schwass <ennoausberlin@…>, 9 months ago

more refactorings

  • Property mode set to 100644
File size: 3.2 KB
Line 
1import pytest
2from flowtimer.Schedule import Schedule
3from flowtimer.Phase import Phase
4
5class 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
14 assert schedule.state == "initial"
15
16 def test_schedule_start(self):
17 phase1 = Phase("Warm-up", 300)
18 schedule = Schedule([phase1])
19 schedule.start()
20
21 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])
27 schedule.start()
28 schedule.pause()
29
30 assert schedule.state == "paused"
31 assert schedule.is_paused() is True
32
33 def test_schedule_abort(self):
34 phase1 = Phase("Warm-up", 300)
35 schedule = Schedule([phase1])
36 schedule.start()
37 schedule.abort()
38
39 assert schedule.state == "finished"
40 assert schedule.current_phase.finished() is True
41
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
54 schedule.skip()
55 schedule.current_phase.tick(600)
56 assert schedule.finished() is True
57
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
67
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"
76
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"
88
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
100
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
Note: See TracBrowser for help on using the repository browser.