"""Tests for the IMFV283 Parser class.""" from __future__ import unicode_literals from numpy.testing import assert_equal from obspy import UTCDateTime from geomagio.imfv283 import IMFV283Parser, imfv283_codes IMFV283_EXAMPLE_VIC = ( b"75C2A3A814023012741G43-1NN027EUP00191`A^P@RVxZ}|" + b"D@@B_BEM@@@@@@@@@@@@@@@@@@@@@@@@@@@E|BxtTADVD@\\E\\BxxT@tVCh\\E" + b"lByDT@xVCp\\EdBy@T@tVCh\\EhByPT@xVCl\\EPBy@T@tVCd\\EdBxlTA@VCp\\Eh" + b"BxTTA@VCp\\EdBGxTA@VCl\\EPBG`T@xVC\\\\DtBGHT@lVCD\\DPBG@T@XVBh\\" ) IMFV283_EXAMPLE_FRD = ( b"75C2102614023012927G43-0NN027EUP00191bx@WyhD{" + b"aDB~@X@{Bb@@@@@@@@@@@@@@@@@@@@@@@@@@@@[DAV[@cUAjT@[EAVZ@cUAjT@[" + b"BAVZ@cVAjS@[DAVZ@cUAjS@[DAVZ@cUAjS@[GAV\\@cTAjT@[DAV[@cUAjT@[BAVY" + b"@cVAjT@[CAVW@cWAjT@[CAVT@cWAjU@[AAVO@cYAjV@Z}AVK@c[AjV" ) def test_parse_msg_header(): """imfv283_test.IMFV283Parser_test.test_parse_msg_header() Call the _parse_header method with a header. Verify the header name and value are split at the correct column. """ header = IMFV283Parser()._parse_msg_header(IMFV283_EXAMPLE_VIC) assert_equal(header["obs"], "VIC") def test_parse_goes_header(): """imfv283_test.IMFV283Parser_test.test_parse_goes_header()""" goes_data = IMFV283Parser()._process_ness_block( IMFV283_EXAMPLE_VIC, imfv283_codes.OBSERVATORIES["VIC"], 191 ) goes_header = IMFV283Parser()._parse_goes_header(goes_data) assert_equal(goes_header["day"], 23) def test_estimate_data_time__correct_doy(): """imfv283_test.IMFV283Parser_test.test_estimate_data_time__correct_doy() Use example goes packet from BOU station, with correct goes doy value. """ parser = IMFV283Parser() # BOU aka normal transmission = b"17274013121" day = 274 minute = 72 (data_time, transmit_time, corrected) = parser._estimate_data_time( transmission, day, minute ) assert_equal(data_time, UTCDateTime("2017-10-01T01:12:00Z")) assert_equal(transmit_time, UTCDateTime("2017-10-01T01:31:21Z")) assert_equal(corrected, False) def test_estimate_data_time__incorrect_doy(): """imfv283_test.IMFV283Parser_test.test_estimate_data_time__correct_doy() Use example goes packet from BLC station, with incorrect goes doy value. """ parser = IMFV283Parser() # BLC aka 1999 rollover gps issue transmission = b"17274013241" day = 46 minute = 78 (data_time, transmit_time, corrected) = parser._estimate_data_time( transmission, day, minute ) assert_equal(data_time, UTCDateTime("2017-10-01T01:18:00Z")) assert_equal(transmit_time, UTCDateTime("2017-10-01T01:32:41Z")) assert_equal(corrected, True)