Coverage for tests/test_time_handler.py : 38%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1from builtins import range
2from datetime import datetime
3import unittest
4import lsst.utils.tests
5from lsst.sims.utils import TimeHandler
7SECONDS_IN_DAY = 60.0 * 60.0 * 24.0
10class TimeHandlerTest(unittest.TestCase):
12 def setUp(self):
13 self.start_date = "2020-05-24"
14 self.th = TimeHandler(self.start_date)
16 def test_basic_information_after_creation(self):
17 self.assertEqual(self.th.initial_dt, datetime(2020, 5, 24))
19 def test_bad_date_string(self):
20 with self.assertRaises(ValueError):
21 TimeHandler("18-09-15")
23 def test_return_initial_timestamp(self):
24 truth_timestamp = (datetime(2020, 5, 24) - datetime(1970, 1, 1)).total_seconds()
25 self.assertEqual(self.th.initial_timestamp, truth_timestamp)
27 def test_time_adjustment_seconds(self):
28 self.th.update_time(30.0, "seconds")
29 self.assertEqual(self.th.current_dt, datetime(2020, 5, 24, 0, 0, 30))
31 def test_time_adjustment_hours(self):
32 self.th.update_time(3.5, "hours")
33 self.assertEqual(self.th.current_dt, datetime(2020, 5, 24, 3, 30, 0))
35 def test_time_adjustment_days(self):
36 self.th.update_time(4, "days")
37 self.assertEqual(self.th.current_dt, datetime(2020, 5, 28))
39 def test_multiple_time_adjustments(self):
40 for i in range(3):
41 self.th.update_time(30.0, "seconds")
42 self.assertEqual(self.th.current_dt, datetime(2020, 5, 24, 0, 1, 30))
44 def test_timestamp_after_time_adjustment(self):
45 truth_timestamp = (datetime(2020, 5, 24, 0, 0, 30) - datetime(1970, 1, 1)).total_seconds()
46 self.th.update_time(30.0, "seconds")
47 self.assertEqual(self.th.current_timestamp, truth_timestamp)
48 self.assertNotEqual(self.th.current_timestamp, self.th.initial_timestamp)
50 def test_current_timestamp_string(self):
51 self.assertEqual(self.th.current_timestring, "2020-05-24T00:00:00")
53 def test_time_span_less_than_time_elapsed(self):
54 self.th.update_time(10, "days")
55 self.assertFalse(self.th.has_time_elapsed(9 * SECONDS_IN_DAY))
57 def test_time_span_is_greater_than_time_elapsed(self):
58 self.th.update_time(10, "days")
59 self.assertTrue(self.th.has_time_elapsed(11 * SECONDS_IN_DAY))
61 def test_future_timestring(self):
62 self.assertEqual(self.th.future_timestring(19.0, "hours"), "2020-05-24T19:00:00")
64 def test_midnight_timestamp(self):
65 self.th.update_time(15, "hours")
66 truth_timestamp = (datetime(2020, 5, 24) - datetime(1970, 1, 1)).total_seconds()
67 self.assertEqual(self.th.current_midnight_timestamp, truth_timestamp)
69 def test_next_midnight_timestamp(self):
70 self.th.update_time(15, "hours")
71 truth_timestamp = (datetime(2020, 5, 25) - datetime(1970, 1, 1)).total_seconds()
72 self.assertEqual(self.th.next_midnight_timestamp, truth_timestamp)
74 def test_future_timestamp(self):
75 truth_timestamp = 1590418800.0
76 self.assertEqual(self.th.future_timestamp(39, "hours"), truth_timestamp)
78 def test_future_datetime(self):
79 truth_datetime = datetime(2020, 5, 25, 15)
80 self.assertEqual(self.th.future_datetime(39, "hours"), truth_datetime)
82 def test_future_datetime_alternate_timestamp(self):
83 alternate_timestamp = 1590537600.0
84 truth_datetime = datetime(2020, 5, 28, 15)
85 self.assertEqual(self.th.future_datetime(39, "hours", timestamp=alternate_timestamp),
86 truth_datetime)
88 def test_time_since_start(self):
89 self.th.update_time(10, "days")
90 self.assertEqual(self.th.time_since_start, 864000)
92 def test_time_since_given(self):
93 self.assertEqual(self.th.time_since_given(1590364800), 86400)
95 def test_time_since_given_datetime(self):
96 future_given_date = datetime(self.th.initial_dt.year, 6, 10)
97 self.assertEqual(self.th.time_since_given_datetime(future_given_date), 1468800)
98 past_given_date = datetime(self.th.initial_dt.year, 4, 20)
99 self.assertEqual(self.th.time_since_given_datetime(past_given_date, reverse=True), 2937600)
100 same_given_date = datetime(self.th.initial_dt.year, 5, 24)
101 self.assertEqual(self.th.time_since_given_datetime(same_given_date, reverse=True), 0)
105class TestMemory(lsst.utils.tests.MemoryTestCase):
106 pass
109def setup_module(module):
110 lsst.utils.tests.init()
113if __name__ == "__main__": 113 ↛ 114line 113 didn't jump to line 114, because the condition on line 113 was never true
114 lsst.utils.tests.init()
115 unittest.main()