Skip to content
Snippets Groups Projects

fix bug calculate find_tps_tm when the end time fall into the last 5 minute of a day

Merged Lan Dam requested to merge i81_tps_second_marker into master
1 file
+ 85
0
Compare changes
  • Side-by-side
  • Inline
from unittest import TestCase
from obspy import UTCDateTime
from sohstationviewer.model.handling_data import (
get_start_5mins_of_diff_days, find_tps_tm_idx
)
class TestGetEachDay5MinList(TestCase):
def test_start_in_midle_end_exact(self):
"""
Start in the middle of a day and end at the exact end of a day
"""
with self.subTest("start, end in different day"):
start = UTCDateTime("2012-09-07T12:15:00").timestamp
end = UTCDateTime("2012-09-09T00:00:00").timestamp
start_5mins_of_diff_days = get_start_5mins_of_diff_days(
start, end
)
self.assertEqual(len(start_5mins_of_diff_days), 2)
self.assertEqual(len(start_5mins_of_diff_days[0]), 288)
self.assertEqual(len(start_5mins_of_diff_days[1]), 288)
with self.subTest("start, end in same day"):
start = UTCDateTime("2012-09-07T12:15:00").timestamp
end = UTCDateTime("2012-09-08T00:00:00").timestamp
start_5mins_of_diff_days = get_start_5mins_of_diff_days(
start, end
)
self.assertEqual(len(start_5mins_of_diff_days), 1)
self.assertEqual(len(start_5mins_of_diff_days[0]), 288)
def test_start_exact_end_in_middle(self):
"""
Start at the very beginning of a day and end in the middle of a day
"""
with self.subTest("start, end in different day"):
start = UTCDateTime("2012-09-07T00:00:00").timestamp
end = UTCDateTime("2012-09-08T12:15:00").timestamp
start_5mins_of_diff_days = get_start_5mins_of_diff_days(
start, end
)
self.assertEqual(len(start_5mins_of_diff_days), 2)
self.assertEqual(len(start_5mins_of_diff_days[0]), 288)
self.assertEqual(len(start_5mins_of_diff_days[1]), 288)
with self.subTest("start, end in same day"):
start = UTCDateTime("2012-09-0700:00:00").timestamp
end = UTCDateTime("2012-09-07T12:13:00").timestamp
start_5mins_of_diff_days = get_start_5mins_of_diff_days(
start, end
)
self.assertEqual(len(start_5mins_of_diff_days), 1)
self.assertEqual(len(start_5mins_of_diff_days[0]), 288)
class TestFindTPSTmIdx(TestCase):
@classmethod
def setUpClass(cls) -> None:
start = UTCDateTime("2012-09-07T12:15:00").timestamp
end = UTCDateTime("2012-09-09T00:00:00").timestamp
# cover 2 days: 2012/09/07 and 2012/09/08
cls.start_5mins_of_diff_days = get_start_5mins_of_diff_days(
start, end
)
def test_given_time_beginning_of_first_day(self):
tm = UTCDateTime("2012-09-07T00:00:00").timestamp
tps_tm_idx = find_tps_tm_idx(tm, self.start_5mins_of_diff_days)
self.assertEqual(tps_tm_idx, (0, 0))
def test_given_time_middle_of_day(self):
tm = UTCDateTime("2012-09-07T12:13:00").timestamp
tps_tm_idx = find_tps_tm_idx(tm, self.start_5mins_of_diff_days)
self.assertEqual(tps_tm_idx, (146, 0))
def test_given_time_beginning_of_day_in_middle(self):
tm = UTCDateTime("2012-09-08T00:00:00").timestamp
tps_tm_idx = find_tps_tm_idx(tm, self.start_5mins_of_diff_days)
self.assertEqual(tps_tm_idx, (0, -1))
def test_given_time_very_end_of_last_day(self):
tm = UTCDateTime("2012-09-09T00:00:00").timestamp
start_tps_tm_idx = find_tps_tm_idx(tm, self.start_5mins_of_diff_days)
self.assertEqual(start_tps_tm_idx, (287, -1))
Loading