88 lines
3.3 KiB
Python
88 lines
3.3 KiB
Python
# Copyright 2024 (c) Anna Schumaker.
|
|
"""Tests our StopWatch object."""
|
|
import datetime
|
|
import emmental.audio.stopwatch
|
|
import unittest
|
|
from gi.repository import GObject
|
|
|
|
|
|
@unittest.mock.patch.object(emmental.audio.stopwatch, "datetime")
|
|
class TestStopwatch(unittest.TestCase):
|
|
"""Our stopwatch test case."""
|
|
|
|
def setUp(self):
|
|
"""Set up common variables."""
|
|
self.now = datetime.datetime.now()
|
|
self.newdelta = datetime.timedelta
|
|
self.stopwatch = emmental.audio.stopwatch.StopWatch()
|
|
|
|
def test_init(self, mock_datetime: unittest.mock.Mock):
|
|
"""Test that the StopWatch was created properly."""
|
|
self.assertIsInstance(self.stopwatch, GObject.GObject)
|
|
|
|
def test_elapsed_time(self, mock_datetime: unittest.mock.Mock):
|
|
"""Test the elapsed_time() function."""
|
|
mock_datetime.timedelta = self.newdelta
|
|
self.assertEqual(self.stopwatch.elapsed_time(), 0.0)
|
|
|
|
mock_datetime.datetime.now.return_value = self.now
|
|
self.stopwatch.start()
|
|
|
|
soon = self.now + datetime.timedelta(seconds=12.345)
|
|
mock_datetime.datetime.now.return_value = soon
|
|
self.assertEqual(self.stopwatch.elapsed_time(), 12.345)
|
|
|
|
self.stopwatch._saved = datetime.timedelta(seconds=2)
|
|
self.assertEqual(self.stopwatch.elapsed_time(), 14.345)
|
|
|
|
self.stopwatch.stop()
|
|
self.assertEqual(self.stopwatch.elapsed_time(), 14.345)
|
|
|
|
self.stopwatch.reset()
|
|
self.assertEqual(self.stopwatch.elapsed_time(), 0.0)
|
|
|
|
def test_reset(self, mock_datetime: unittest.mock.Mock):
|
|
"""Test resetting the StopWatch."""
|
|
mock_datetime.datetime.now.return_value = self.now
|
|
self.stopwatch.start()
|
|
soon = self.now + datetime.timedelta(seconds=12.345)
|
|
mock_datetime.datetime.now.return_value = soon
|
|
self.stopwatch.stop()
|
|
|
|
self.stopwatch.reset()
|
|
self.assertIsNone(self.stopwatch._saved)
|
|
self.assertIsNone(self.stopwatch._started)
|
|
|
|
def test_start(self, mock_datetime: unittest.mock.Mock):
|
|
"""Test starting the StopWatch."""
|
|
self.assertIsNone(self.stopwatch._started)
|
|
|
|
mock_datetime.datetime.now.return_value = self.now
|
|
self.stopwatch.start()
|
|
self.assertEqual(self.stopwatch._started, self.now)
|
|
|
|
def test_stop(self, mock_datetime: unittest.mock.Mock):
|
|
"""Test stopping the StopWatch."""
|
|
self.assertIsNone(self.stopwatch._saved)
|
|
self.stopwatch.stop()
|
|
self.assertIsNone(self.stopwatch._saved)
|
|
|
|
mock_datetime.datetime.now.return_value = self.now
|
|
self.stopwatch.start()
|
|
delta1 = datetime.timedelta(seconds=12.345)
|
|
mock_datetime.datetime.now.return_value = self.now + delta1
|
|
self.stopwatch.stop()
|
|
self.assertEqual(self.stopwatch._saved, delta1)
|
|
self.assertIsNone(self.stopwatch._started)
|
|
|
|
now = self.now + delta1 + datetime.timedelta(seconds=2)
|
|
mock_datetime.datetime.now.return_value = now
|
|
self.stopwatch.start()
|
|
delta2 = datetime.timedelta(seconds=3)
|
|
mock_datetime.datetime.now.return_value = now + delta2
|
|
self.stopwatch.stop()
|
|
self.assertEqual(self.stopwatch._saved, delta1 + delta2)
|
|
|
|
self.stopwatch.stop()
|
|
self.assertEqual(self.stopwatch._saved, delta1 + delta2)
|