Skip to content
Snippets Groups Projects
Commit 3f86cf24 authored by Kien Le's avatar Kien Le
Browse files

Add tests for readWaveformReftek

parent f9b61cfb
No related branches found
No related tags found
1 merge request!27Draft: Add tests for functions in handling_data.py
...@@ -195,7 +195,7 @@ class TestReadWaveformMSeed(TestCase): ...@@ -195,7 +195,7 @@ class TestReadWaveformMSeed(TestCase):
self.channel_id = self.mseed_waveform_trace.stats['channel'] self.channel_id = self.mseed_waveform_trace.stats['channel']
# This list is only ever written to, so we can keep it empty # This list is only ever written to, so we can keep it empty
self.traces_info = [] self.traces_info = []
self.data_time = [12512512, 12215125121] self.data_time = [0, 0]
self.temp_dir = tempfile.TemporaryDirectory() self.temp_dir = tempfile.TemporaryDirectory()
patcher = patch( patcher = patch(
...@@ -271,5 +271,108 @@ class TestReadWaveformMSeed(TestCase): ...@@ -271,5 +271,108 @@ class TestReadWaveformMSeed(TestCase):
self.assertEqual(self.data_time, expected_updated_data_time) self.assertEqual(self.data_time, expected_updated_data_time)
# Test that dataTime is updated correctly class TestReadWaveformReftek(TestCase):
@classmethod
def setUpClass(cls) -> None:
rt130_dir = TEST_DATA_DIR.joinpath(
'RT130-sample/2017149.92EB/2017150/92EB')
cls.rt130_waveform_file = rt130_dir.joinpath('1/000000015_0036EE80')
cls.rt130_waveform = Reftek130.from_file(cls.rt130_waveform_file)
cls.rt130_waveform_stream = Reftek130.to_stream(cls.rt130_waveform)
cls.rt130_waveform_trace = cls.rt130_waveform_stream[0]
def setUp(self) -> None:
# The first element of the key, the unit ID, should be a character
# string. However, the unit ID is stored as a byte string in the data
# stream. While having the unit ID as a byte string should not cause
# any problem with the test, we convert it to a character string anyway
# to be consistent with how readWaveformReftek is called.
self.key = (
self.rt130_waveform_trace.stats['unit_id'].decode('utf-8'),
self.rt130_waveform_trace.stats['experiment_number']
)
self.read_data = {}
self.data_time = [0, 0]
self.temp_dir = tempfile.TemporaryDirectory()
patcher = patch(
'sohstationviewer.model.handling_data.readWaveformTrace')
self.addCleanup(patcher.stop)
self.mock_readWaveformTrace = patcher.start()
self.mock_readWaveformTrace.return_value = {
'startTmEpoch': 0,
'endTmEpoch': 0,
}
def tearDown(self) -> None:
self.temp_dir.cleanup()
def test_all_traces_are_processed(self):
readWaveformReftek(self.rt130_waveform, self.key, self.read_data,
self.data_time, self.temp_dir.name)
num_traces_read = 0
for channel_data in self.read_data.values():
num_traces_read += len(channel_data['tracesInfo'])
self.assertTrue(num_traces_read, len(self.rt130_waveform_stream))
def test_read_data_updated_with_all_channels(self):
readWaveformReftek(self.rt130_waveform, self.key, self.read_data,
self.data_time, self.temp_dir.name)
self.assertTupleEqual(tuple(self.read_data.keys()),
('DS1-1', 'DS1-2', 'DS1-3'))
def test_read_data_existing_channel_appended_to(self):
self.read_data = {
'DS1-1':
{'tracesInfo':
[{'startTmEpoch': 0, 'endTmEpoch': 0}],
'samplerate': 40.0}
}
readWaveformReftek(self.rt130_waveform, self.key, self.read_data,
self.data_time, self.temp_dir.name)
self.assertEqual(len(self.read_data['DS1-1']['tracesInfo']), 2)
def test_readWaveformTrace_called(self):
readWaveformReftek(self.rt130_waveform, self.key, self.read_data,
self.data_time, self.temp_dir.name)
self.assertTrue(self.mock_readWaveformTrace.called)
def test_start_data_time_earlier_than_earliest_start_time(self):
self.mock_readWaveformTrace.return_value = {
'startTmEpoch': 51251,
'endTmEpoch': 2623623,
}
start_time = 0
self.data_time = [start_time, 1625532949]
readWaveformReftek(self.rt130_waveform, self.key, self.read_data,
self.data_time, self.temp_dir.name)
self.assertEqual(self.data_time[0], start_time)
def test_end_data_time_later_than_latest_start_time(self):
# End time set to be the last second of 9999 so as to be later than the
# end time of any test data.
self.mock_readWaveformTrace.return_value = {
'startTmEpoch': 51251,
'endTmEpoch': 2623623,
}
end_time = 253402326000
self.data_time = [1625443222, end_time]
readWaveformReftek(self.rt130_waveform, self.key, self.read_data,
self.data_time, self.temp_dir.name)
self.assertEqual(self.data_time[1], end_time)
def test_data_time_is_between_earliest_start_and_latest_end_time(self):
self.mock_readWaveformTrace.return_value = {
'startTmEpoch': 51251,
'endTmEpoch': 2623623,
}
start_time = 512579
end_time = 2623616
self.data_time = [start_time, end_time]
expected_updated_data_time = [51251, 2623623]
readWaveformReftek(self.rt130_waveform, self.key, self.read_data,
self.data_time, self.temp_dir.name)
self.assertEqual(self.data_time, expected_updated_data_time)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment