def test_time_shifting(self): """ Tests the shift_time_of_file() function. """ with NamedTemporaryFile() as tf: output_filename = tf.name # Test a normal file first. filename = os.path.join( self.path, 'data', "BW.BGLD.__.EHE.D.2008.001.first_10_records") # Shift by one second. util.shift_time_of_file(filename, output_filename, 10000) st_before = _read_mseed(filename) st_after = _read_mseed(output_filename) st_before[0].stats.starttime += 1 self.assertEqual(st_before, st_after) # Shift by 22 seconds in the other direction. util.shift_time_of_file(filename, output_filename, -220000) st_before = _read_mseed(filename) st_after = _read_mseed(output_filename) st_before[0].stats.starttime -= 22 self.assertEqual(st_before, st_after) # Shift by 11.33 seconds. util.shift_time_of_file(filename, output_filename, 113300) st_before = _read_mseed(filename) st_after = _read_mseed(output_filename) st_before[0].stats.starttime += 11.33 self.assertEqual(st_before, st_after) # Test a special case with the time correction applied flag set but # no actual time correction in the field. filename = os.path.join( self.path, 'data', "one_record_time_corr_applied_but_time_corr_is_zero.mseed") # Positive shift. util.shift_time_of_file(filename, output_filename, 22000) st_before = _read_mseed(filename) st_after = _read_mseed(output_filename) st_before[0].stats.starttime += 2.2 self.assertEqual(st_before, st_after) # Negative shift. util.shift_time_of_file(filename, output_filename, -333000) st_before = _read_mseed(filename) st_after = _read_mseed(output_filename) st_before[0].stats.starttime -= 33.3 self.assertEqual(st_before, st_after)
def test_time_shifting_special_case(self): """ Sometimes actually changing the time value is necessary. This works but is considered experimental and thus emits a warning. Therefore Python >= 2.6 only. """ with NamedTemporaryFile() as tf: output_filename = tf.name # This file was created only for testing purposes. filename = os.path.join( self.path, 'data', "one_record_already_applied_time_correction.mseed") with warnings.catch_warnings(record=True): warnings.simplefilter('error', UserWarning) self.assertRaises(UserWarning, util.shift_time_of_file, input_file=filename, output_file=output_filename, timeshift=123400) # Now ignore the warnings and test the default values. warnings.simplefilter('ignore', UserWarning) util.shift_time_of_file(input_file=filename, output_file=output_filename, timeshift=123400) st_before = _read_mseed(filename) st_after = _read_mseed(output_filename) st_before[0].stats.starttime += 12.34 self.assertEqual(st_before, st_after) # Test negative shifts. with warnings.catch_warnings(record=True): warnings.simplefilter('ignore', UserWarning) util.shift_time_of_file(input_file=filename, output_file=output_filename, timeshift=-22222) st_before = _read_mseed(filename) st_after = _read_mseed(output_filename) st_before[0].stats.starttime -= 2.2222 self.assertEqual(st_before, st_after)