source: flowtimer/flowtimer/Phase.py

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

fix one remaining unit test

  • Property mode set to 100644
File size: 2.1 KB
RevLine 
[84123db]1import json
2
3
[99dee0f]4class Phase:
5
6 """
7 This class is a representation of a single phase inside a timer
8 """
9
[df0449c]10 @classmethod
11 def default(cls):
12 return cls('Default', 30)
13
[f959488]14 def __init__(self, title, ticks):
[99dee0f]15 """
16 creates the variables associated with that class
17
18 :type title: string
19 :param title: Name of phase
20
[f959488]21 :type ticks: int
22 :param ticks: ticks in seconds
[99dee0f]23 """
24
25 self.title = title
[f959488]26 self.initial_ticks = ticks
[44c3377]27 self._state = "initial"
28 self._ticks_left = ticks
29
30 @property
31 def initial_repetitions(self):
32 return 1
33
34 @property
35 def state(self):
36 return self._state
37
38 @property
39 def ticks_left(self):
40 return self._ticks_left
[99dee0f]41
[84123db]42 def to_json(self):
[daa2276]43 return json.dumps({"title": self.title, "initial_ticks": self.initial_ticks})
[99dee0f]44
45 def __str__(self):
46 """
47 Human readable representation of all attributes
48
49 :return: human readable representation of all attributes
50 :rtype: String
51 """
52
[d7a66ad]53 return ("Title:" + self.title + "\nTicks left=" +
[44c3377]54 str(self._ticks_left) + "\n" + str(self._state) + "\n")
[99dee0f]55
[5741f6d]56 def is_sequence(self):
[a438158]57 return False
[5741f6d]58
[99dee0f]59 def abort(self):
[d7a66ad]60 self._state = "aborted"
61
[813e855]62 def is_aborted(self):
[d7a66ad]63 return self.state == "aborted"
[99dee0f]64
65 def start(self):
[44c3377]66 self._state = "running"
[99dee0f]67
[f959488]68 def reset(self):
[44c3377]69 self._ticks_left = self.initial_ticks
70 self._state = "initial"
[f959488]71
[99dee0f]72 def pause(self):
[44c3377]73 self._state = "paused"
[99dee0f]74
[813e855]75 def is_running(self):
[44c3377]76 return self._state == "running"
[99dee0f]77
[813e855]78 def is_terminated(self):
79 return (self.is_completed() or self.is_aborted())
[99dee0f]80
[813e855]81 def is_completed(self):
82 return self.ticks_left < 1
83
84 def is_paused(self):
[44c3377]85 return self._state == "paused"
[99dee0f]86
[f959488]87 def tick(self, ticks):
[df0449c]88 self.start()
[44c3377]89 result = self._ticks_left - ticks
[99dee0f]90
[df0449c]91 if result < 1:
[44c3377]92 self._ticks_left = 0
[d7a66ad]93 self._state = "completed"
[f959488]94 else:
[44c3377]95 self._ticks_left = result
[f959488]96 return result
Note: See TracBrowser for help on using the repository browser.