From 20260bf5bdf56e1bf2ce55acc6f5f93210625b0e Mon Sep 17 00:00:00 2001
From: Bruce Flynn <brucef@ssec.wisc.edu>
Date: Mon, 12 Jun 2017 21:24:07 +0000
Subject: [PATCH] fix timecode date conversion

---
 .gitignore             |  1 +
 edosl0util/timecode.py |  9 +++++----
 setup.py               |  6 ++++++
 tests/test_timecode.py | 29 +++++++++++++++++++++++++++++
 4 files changed, 41 insertions(+), 4 deletions(-)
 create mode 100644 tests/test_timecode.py

diff --git a/.gitignore b/.gitignore
index cb5757a..de10f00 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 414e142..a505e6c 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 ec7764c..1711520 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 0000000..9d2633c
--- /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)
-- 
GitLab