source: flowtimer/tests/test_schedule.py@ 401678c

guix
Last change on this file since 401678c was 401678c, checked in by Enrico Schwass <ennoausberlin@…>, 9 months ago

tests added

  • Property mode set to 100644
File size: 3.3 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 assert schedule.progressbar is None
16 assert schedule.currentValue == 0
17
18 def test_schedule_start(self):
19 phase1 = Phase("Warm-up", 300)
20 schedule = Schedule([phase1])
21 schedule.start()
22
23 assert schedule.state == "running"
24 assert schedule.current_phase.running() is True
25
26 def test_schedule_pause(self):
27 phase1 = Phase("Warm-up", 300)
28 schedule = Schedule([phase1])
29 schedule.start()
30 schedule.pause()
31
32 assert schedule.state == "paused"
33 assert schedule.is_paused() is True
34
35 def test_schedule_abort(self):
36 phase1 = Phase("Warm-up", 300)
37 schedule = Schedule([phase1])
38 schedule.start()
39 schedule.abort()
40
41 assert schedule.state == "finished"
42 assert schedule.current_phase.finished() is True
43
44 def test_schedule_finished(self):
45 phase1 = Phase("Warm-up", 300)
46 phase2 = Phase("Workout", 600)
47 schedule = Schedule([phase1, phase2])
48
49 assert schedule.finished() is False
50
51 phase1.start()
52 phase1.tick(300)
53 assert phase1.finished() is True
54 assert schedule.finished() is False
55
56 schedule.skip()
57 schedule.current_phase.tick(600)
58 assert schedule.finished() is True
59
60 def test_schedule_skip(self):
61 phase1 = Phase("Warm-up", 300)
62 phase2 = Phase("Workout", 600)
63 schedule = Schedule([phase1, phase2])
64
65 schedule.start()
66 schedule.skip()
67
68 assert schedule.current_phase == phase2
69
70 def test_schedule_skip_at_final_phase(self):
71 phase1 = Phase("Warm-up", 300)
72 schedule = Schedule([phase1])
73
74 schedule.start()
75 schedule.skip()
76
77 assert schedule.state == "finished"
78
79 def test_schedule_tick(self):
80 phase1 = Phase("Warm-up", 300)
81 phase2 = Phase("Workout", 600)
82 schedule = Schedule([phase1, phase2])
83
84 schedule.start()
85 schedule.tick(300)
86
87 assert phase1.finished() is True
88 assert schedule.current_phase == phase2
89 assert schedule.state == "running"
90
91 def test_schedule_tick_to_completion(self):
92 phase1 = Phase("Warm-up", 300)
93 phase2 = Phase("Workout", 600)
94 schedule = Schedule([phase1, phase2])
95
96 schedule.start()
97 schedule.tick(300) # Should finish phase1 and move to phase2
98 schedule.tick(600) # Should finish phase2 and complete the schedule
99
100 assert phase2.finished() is True
101 assert schedule.finished() is True
102
103 def test_schedule_current_phase_is_final(self):
104 phase1 = Phase("Warm-up", 300)
105 phase2 = Phase("Workout", 600)
106 schedule = Schedule([phase1, phase2])
107
108 assert schedule.current_phase_is_final() is False
109
110 schedule.skip()
111 assert schedule.current_phase_is_final() is True
112
Note: See TracBrowser for help on using the repository browser.