From e4f451d8790627c1fade47e3cc1c254721b74bf6 Mon Sep 17 00:00:00 2001 From: ldam <ldam@passcal.nmt.edu> Date: Mon, 22 May 2023 11:51:57 -0600 Subject: [PATCH] add unittest for get_chan_plot_info() for masspos and seismic channels --- tests/test_database/test_extract_data.py | 137 ++++++++++++++--------- 1 file changed, 84 insertions(+), 53 deletions(-) diff --git a/tests/test_database/test_extract_data.py b/tests/test_database/test_extract_data.py index 64e7e1da1..418ea9775 100644 --- a/tests/test_database/test_extract_data.py +++ b/tests/test_database/test_extract_data.py @@ -2,8 +2,7 @@ import unittest from sohstationviewer.database.extract_data import ( get_chan_plot_info, - get_wf_plot_info, - get_chan_label, + get_seismic_chan_label, get_signature_channels, get_color_def, get_color_ranges, @@ -11,7 +10,7 @@ from sohstationviewer.database.extract_data import ( class TestExtractData(unittest.TestCase): - def test_get_chan_plot_info_good_channel_and_data_type(self): + def test_get_chan_plot_info_good_soh_channel_and_data_type(self): """ Test basic functionality of get_chan_plot_info - channel and data type combination exists in database table `Channels` @@ -25,9 +24,62 @@ class TestExtractData(unittest.TestCase): 'label': 'SOH/Data Def', 'fixPoint': 0, 'valueColors': '0:W|1:C'} - self.assertDictEqual( - get_chan_plot_info('SOH/Data Def', {'samplerate': 10}, 'RT130'), - expected_result) + self.assertDictEqual(get_chan_plot_info('SOH/Data Def', 'RT130'), + expected_result) + + def test_get_chan_plot_info_masspos_channel(self): + with self.subTest("Mass position 'VM'"): + expected_result = {'channel': 'VM1', + 'plotType': 'linesMasspos', + 'height': 4, + 'unit': 'V', + 'linkedChan': None, + 'convertFactor': 0.1, + 'label': 'VM1-MassPos', + 'fixPoint': 1, + 'valueColors': None} + self.assertDictEqual(get_chan_plot_info('VM1', 'Q330'), + expected_result) + + with self.subTest("Mass position 'MassPos'"): + expected_result = {'channel': 'MassPos1', + 'plotType': 'linesMasspos', + 'height': 4, + 'unit': 'V', + 'linkedChan': None, + 'convertFactor': 1, + 'label': 'MassPos1', + 'fixPoint': 1, + 'valueColors': None} + self.assertDictEqual(get_chan_plot_info('MassPos1', 'RT130'), + expected_result) + + def test_get_chan_plot_info_seismic_channel(self): + with self.subTest("RT130 Seismic"): + expected_result = {'channel': 'DS2', + 'plotType': 'linesSRate', + 'height': 4, + 'unit': '', + 'linkedChan': None, + 'convertFactor': 1, + 'label': 'DS2', + 'fixPoint': 0, + 'valueColors': None} + self.assertDictEqual(get_chan_plot_info('DS2', 'RT130'), + expected_result) + + with self.subTest("MSeed Seismic"): + expected_result = {'channel': 'LHE', + 'plotType': 'linesSRate', + 'height': 4, + 'unit': '', + 'linkedChan': None, + 'convertFactor': 1, + 'label': 'LHE-EW', + 'fixPoint': 0, + 'valueColors': None} + self.assertDictEqual(get_chan_plot_info('LHE', 'Q330'), + expected_result) def test_get_chan_plot_info_data_type_is_unknown(self): """ @@ -44,10 +96,8 @@ class TestExtractData(unittest.TestCase): 'label': 'DEFAULT-Bad Channel ID', 'fixPoint': 0, 'valueColors': None} - self.assertDictEqual( - get_chan_plot_info('Bad Channel ID', - {'samplerate': 10}, 'Unknown'), - expected_result) + self.assertDictEqual(get_chan_plot_info('Bad Channel ID', 'Unknown'), + expected_result) # Channel exist in database expected_result = {'channel': 'LCE', @@ -59,12 +109,8 @@ class TestExtractData(unittest.TestCase): 'label': 'LCE-PhaseError', 'fixPoint': 0, 'valueColors': 'L:W|D:Y'} - self.assertDictEqual( - get_chan_plot_info('LCE', {'samplerate': 10}, 'Unknown'), - expected_result) - self.assertDictEqual( - get_chan_plot_info('LCE', {'samplerate': 10}, 'Unknown'), - expected_result) + self.assertDictEqual(get_chan_plot_info('LCE', 'Unknown'), + expected_result) def test_get_chan_plot_info_bad_channel_or_data_type(self): """ @@ -86,69 +132,54 @@ class TestExtractData(unittest.TestCase): # Data type has None value. None value comes from # controller.processing.detect_data_type. expected_result['label'] = 'DEFAULT-SOH/Data Def' - self.assertDictEqual( - get_chan_plot_info('SOH/Data Def', {'samplerate': 10}, None), - expected_result) + self.assertDictEqual(get_chan_plot_info('SOH/Data Def', None), + expected_result) # Channel and data type are empty strings expected_result['label'] = 'DEFAULT-' - self.assertDictEqual( - get_chan_plot_info('', {'samplerate': 10}, ''), - expected_result) + self.assertDictEqual(get_chan_plot_info('', ''), + expected_result) # Channel exists in database but data type does not expected_result['label'] = 'DEFAULT-SOH/Data Def' self.assertDictEqual( - get_chan_plot_info('SOH/Data Def', - {'samplerate': 10}, 'Bad Data Type'), + get_chan_plot_info('SOH/Data Def', 'Bad Data Type'), expected_result ) # Data type exists in database but channel does not expected_result['label'] = 'DEFAULT-Bad Channel ID' - self.assertDictEqual( - get_chan_plot_info('Bad Channel ID', - {'samplerate': 10}, 'RT130'), - expected_result) + self.assertDictEqual(get_chan_plot_info('Bad Channel ID', 'RT130'), + expected_result) # Both channel and data type exists in database but not their # combination expected_result['label'] = 'DEFAULT-SOH/Data Def' - self.assertDictEqual( - get_chan_plot_info('SOH/Data Def', {'samplerate': 10}, 'Q330'), - expected_result) - - def test_get_wf_plot_info(self): - """ - Test basic functionality of get_wf_plot_info - ensures returned - dictionary contains all the needed key. Bad channel IDs cases are - handled in tests for get_chan_label. - """ - result = get_wf_plot_info('CH1') - expected_keys = {'param', 'plotType', 'valueColors', 'height', - 'label', 'unit', 'channel', 'convertFactor'} - self.assertSetEqual(set(result.keys()), expected_keys) + self.assertDictEqual(get_chan_plot_info('SOH/Data Def', 'Q330'), + expected_result) - def test_get_chan_label_good_channel_id(self): + def test_get_seismic_chan_label_good_channel_id(self): """ - Test basic functionality of get_chan_label - channel ID ends in one - of the keys in conf.dbSettings.dbConf['seisLabel'] or starts with 'DS' + Test basic functionality of get_seismic_chan_label - channel ID ends + in one of the keys in conf.dbSettings.dbConf['seisLabel'] or + starts with 'DS' """ # Channel ID does not start with 'DS' - self.assertEqual(get_chan_label('CH1'), 'CH1-NS') - self.assertEqual(get_chan_label('CH2'), 'CH2-EW') - self.assertEqual(get_chan_label('CHG'), 'CHG') + self.assertEqual(get_seismic_chan_label('CH1'), 'CH1-NS') + self.assertEqual(get_seismic_chan_label('CH2'), 'CH2-EW') + self.assertEqual(get_seismic_chan_label('CHG'), 'CHG') # Channel ID starts with 'DS' - self.assertEqual(get_chan_label('DS-TEST-CHANNEL'), 'DS-TEST-CHANNEL') + self.assertEqual(get_seismic_chan_label('DS-TEST-CHANNEL'), + 'DS-TEST-CHANNEL') def test_get_chan_label_bad_channel_id(self): """ - Test basic functionality of get_chan_label - channel ID does not end in - one of the keys in conf.dbSettings.dbConf['seisLabel'] or is the empty - string. + Test basic functionality of get_seismic_chan_label - channel ID does + not end in one of the keys in conf.dbSettings.dbConf['seisLabel'] + or is the empty string. """ - self.assertRaises(IndexError, get_chan_label, '') + self.assertRaises(IndexError, get_seismic_chan_label, '') def test_get_signature_channels(self): """Test basic functionality of get_signature_channels""" -- GitLab