diff --git a/.gitignore b/.gitignore index cb5757a9b7e5d1f37ad2b65791530be9fa3e8e66..de10f0051a72d7547495f6a760f458d2806a5232 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .eggs +.cache build dist env diff --git a/edosl0util/timecode.py b/edosl0util/timecode.py index 414e142cf12870d02f390b1a63846e9d10e64899..a505e6c9ef4ae8bd3f912f5628b002f1b9420c40 100644 --- a/edosl0util/timecode.py +++ b/edosl0util/timecode.py @@ -16,15 +16,16 @@ def unixtime(dt): return (UNIX_EPOCH - dt).total_seconds() -def cds_to_timestamp(days, millis, micros, epoch): +def cds_to_timestamp(days, millis, microseconds, epoch): """ CDS to unix timestamp seconds. """ - return epoch + (86400 * days) + (millis / 1000.) + (micros / 1000000.) + return epoch + (86400 * days) + (millis / 1000.) + (microseconds / 1000000.) -def cds_stamp(days, millis, micros, epoch=JPSS_EPOCH): +def cds_stamp(days, millis, microseconds, epoch=JPSS_EPOCH): """ CCSDS Day Segmented timecode to UTC datetime. """ - return JPSS_EPOCH + timedelta(days=days, microseconds=1000 * millis + micros) + return epoch + timedelta(days=days, + seconds=millis / 1000.0 + (microseconds / 1000000.)) diff --git a/setup.py b/setup.py index ec7764c5fb5b1231e62312cb0e871faba0d01ab9..171152057a2ca6f63eb68ceee510cbc4e146c836 100644 --- a/setup.py +++ b/setup.py @@ -15,6 +15,12 @@ setup( install_requires=[ 'h5py', ], + extras_require={ + 'testing': [ + 'pytest', + 'pytest-cov' + ] + }, entry_points=""" [console_scripts] edosl0split = edosl0util.cli.split:main diff --git a/tests/test_timecode.py b/tests/test_timecode.py new file mode 100644 index 0000000000000000000000000000000000000000..9d2633c591bcdd3105ac1d8fec94784dfcd0d040 --- /dev/null +++ b/tests/test_timecode.py @@ -0,0 +1,29 @@ +from datetime import datetime, timedelta +from edosl0util import timecode + + +def test_unixtime(): + assert timecode.unixtime(timecode.UNIX_EPOCH) == 0 + + +def test_cds_to_timestamp(): + epoch = 0 + + secs = timecode.cds_to_timestamp(0, 0, 0, epoch) + assert secs == 0 + + secs = timecode.cds_to_timestamp(0, 0, 999, epoch) + assert secs == 0.000999 + + secs = timecode.cds_to_timestamp(1, 1, 999, epoch) + assert secs == 86400.001999 + + +def test_cds_stamp(): + epoch = timecode.UNIX_EPOCH + + assert timecode.cds_stamp(0, 0, 0, epoch) == timecode.UNIX_EPOCH + + assert timecode.cds_stamp(0, 0, 999, epoch) == datetime(1970, 1, 1, 0, 0, 0, 999) + + assert timecode.cds_stamp(1, 1, 999, epoch) == datetime(1970, 1, 2, 0, 0, 0, 1999)