Hide keyboard shortcuts

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 

6 

7SECONDS_IN_DAY = 60.0 * 60.0 * 24.0 

8 

9 

10class TimeHandlerTest(unittest.TestCase): 

11 

12 def setUp(self): 

13 self.start_date = "2020-05-24" 

14 self.th = TimeHandler(self.start_date) 

15 

16 def test_basic_information_after_creation(self): 

17 self.assertEqual(self.th.initial_dt, datetime(2020, 5, 24)) 

18 

19 def test_bad_date_string(self): 

20 with self.assertRaises(ValueError): 

21 TimeHandler("18-09-15") 

22 

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) 

26 

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)) 

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)) 

34 

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)) 

38 

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)) 

43 

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) 

49 

50 def test_current_timestamp_string(self): 

51 self.assertEqual(self.th.current_timestring, "2020-05-24T00:00:00") 

52 

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)) 

56 

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)) 

60 

61 def test_future_timestring(self): 

62 self.assertEqual(self.th.future_timestring(19.0, "hours"), "2020-05-24T19:00:00") 

63 

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) 

68 

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) 

73 

74 def test_future_timestamp(self): 

75 truth_timestamp = 1590418800.0 

76 self.assertEqual(self.th.future_timestamp(39, "hours"), truth_timestamp) 

77 

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) 

81 

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) 

87 

88 def test_time_since_start(self): 

89 self.th.update_time(10, "days") 

90 self.assertEqual(self.th.time_since_start, 864000) 

91 

92 def test_time_since_given(self): 

93 self.assertEqual(self.th.time_since_given(1590364800), 86400) 

94 

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) 

102 

103 

104 

105class TestMemory(lsst.utils.tests.MemoryTestCase): 

106 pass 

107 

108 

109def setup_module(module): 

110 lsst.utils.tests.init() 

111 

112 

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()