8000 Merge pull request #1 from smpotts/time-exercise · smpotts/think-python@50fbb11 · GitHub
[go: up one dir, main page]

Skip to content

Commit 50fbb11

Browse files
authored
Merge pull request #1 from smpotts/time-exercise
Time exercise in the classes and functions section
2 parents 485b6f2 + 90f4c17 commit 50fbb11

File tree

4 files changed

+53
-0
lines changed

4 files changed

+53
-0
lines changed
File renamed without changes.

src/time.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from datetime import datetime
2+
3+
4+
class Time:
5+
"""Represents the time of day.
6+
"""
7+
8+
def __init__(self, hours=0, minutes=0, seconds=0):
9+
self.hours = hours
10+
self.minutes = minutes
11+
self.seconds = seconds
12+
13+
def print_time(self):
14+
time_string = '%.2d:%.2d:%.2d' % (self.hours, self.minutes, self.seconds)
15+
print(time_string)
16+
return time_string
17+
18+
@staticmethod
19+
def is_after(t1, t2):
20+
time_format = "%H:%M:%S"
21+
t1_time = datetime.strptime(t1.print_time(), time_format).time()
22+
t2_time = datetime.strptime(t2.print_time(), time_format).time()
23+
return t1_time > t2_time
24+
25+

tests/__init__.py

Whitespace-only changes.

tests/test_time.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import unittest
2+
from src.time import Time
3+
4+
5+
class TestTime(unittest.TestCase):
6+
7+
def test_default_initialization(self):
8+
t = Time()
9+
self.assertEqual(t.hours, 0)
10+
self.assertEqual(t.minutes, 0)
11+
self.assertEqual(t.seconds, 0)
12+
13+
def test_print_time(self):
14+
t = Time(9, 45, 2)
15+
self.assertEqual(t.print_time(), "09:45:02")
16+
17+
def test_is_after(self):
18+
t1 = Time(9, 15, 12)
19+
t2 = Time(3, 28, 56)
20+
self.assertTrue(Time.is_after(t1, t2))
21+
22+
t3 = Time(11, 3, 17)
23+
self.assertTrue(Time.is_after(t3, t2))
24+
self.assertFalse(Time.is_after(t2, t3))
25+
26+
27+
if __name__ == '__main__':
28+
unittest.main()

0 commit comments

Comments
 (0)
0