diff --git a/arttools/arttime.py b/arttools/arttime.py index a86737f..12144fb 100755 --- a/arttools/arttime.py +++ b/arttools/arttime.py @@ -21,6 +21,10 @@ class MissionTime(object): def get(self): return self._missiontime + @property + def time(self): + return self._missiontime + def __str__(self): return str(self._missiontime) @@ -45,6 +49,10 @@ class ArtDay(object): def get(self): return self._artday + @property + def time(self): + return self._artday + def __str__(self): return str(self._artday) @@ -69,6 +77,10 @@ class MjdDay(object): def get(self): return self._mjd + @property + def time(self): + return self._mjd + def __str__(self): return str(self._mjd) @@ -96,6 +108,10 @@ class Dtime(object): def get(self): return self._dtime + @property + def time(self): + return self._dtime + def __str__(self): return str(self._dtime) @@ -129,7 +145,6 @@ class ArtTime(object): self._try_mjd(mjd) self._try_dtime_utc(datetime_utc) self._try_dtime_msk(datetime_msk) - self if self._has_value > 1: print('Error: ArtTime needs only one argument') diff --git a/test/__init__.py b/test/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test/test_arttime.py b/test/test_arttime.py new file mode 100644 index 0000000..937be68 --- /dev/null +++ b/test/test_arttime.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 + +from datetime import datetime +from arttools import arttime +from astropy.time import Time +from arttools.arttime import TZ_UTC +from arttools.arttime import TZ_MSK +import os +import sys +import unittest + + +class TestConvertArtday(unittest.TestCase): + + def setUp(self): + self._test_conv = {'artday': 8000., 'missiontime': 691200000., 'mjd': 59543.875, + 'datetime_msk': '2021-11-26T00:00:00', 'datetime_utc': '2021-11-25T21:00:00'} + self._test_mjd = Time(self._test_conv['mjd'], format='mjd') + self._test_dtime_utc = datetime.fromisoformat(self._test_conv['datetime_utc']).replace(tzinfo=TZ_UTC) + self._test_dtime_msk = datetime.fromisoformat(self._test_conv['datetime_msk']).replace(tzinfo=TZ_MSK) + + def test_ArtTime_mjd(self): + mjd = arttime.ArtTime(mjd=self._test_conv['mjd']) + self.assertEqual(mjd.mjd.time, self._test_mjd) + + def test_mjd_convert(self): + mjd = arttime.ArtTime(mjd=self._test_conv['mjd']) + test_dtime_utc = datetime.fromisoformat(self._test_conv['datetime_utc']).replace(tzinfo=TZ_UTC) + test_dtime_msk = datetime.fromisoformat(self._test_conv['datetime_msk']).replace(tzinfo=TZ_MSK) + self.assertEqual(mjd.artday.time, self._test_conv['artday']) + self.assertEqual(mjd.missiontime.time, self._test_conv['missiontime']) + self.assertEqual(mjd.datetime_utc.time, test_dtime_utc) + self.assertEqual(mjd.datetime_msk.time, test_dtime_msk) + + def test_ArtTime_artday(self): + artday = arttime.ArtTime(artday=self._test_conv['artday']) + self.assertEqual(artday.artday.time, self._test_conv['artday']) + + def test_artday_convert(self): + artday = arttime.ArtTime(artday=self._test_conv['artday']) + self.assertEqual(artday.mjd.time, self._test_mjd) + self.assertEqual(artday.missiontime.time, self._test_conv['missiontime']) + self.assertEqual(artday.datetime_utc.time, self._test_dtime_utc) + self.assertEqual(artday.datetime_msk.time, self._test_dtime_msk) + + def test_ArtTime_missiontime(self): + missiontime = arttime.ArtTime(missiontime=self._test_conv['missiontime']) + self.assertEqual(missiontime.missiontime.time, self._test_conv['missiontime']) + + def test_cyclic_conversion_missiontime(self): + missiontime = arttime.ArtTime(missiontime=self._test_conv['missiontime']) + datetime_utc = str(missiontime.datetime_utc) + test_datetime_utc = arttime.ArtTime(datetime_utc=datetime_utc) + self.assertEqual(missiontime.missiontime.time, test_datetime_utc.missiontime.time) + + def test_missiontime_convert(self): + missiontime = arttime.ArtTime(missiontime=self._test_conv['missiontime']) + self.assertEqual(missiontime.mjd.time, self._test_mjd) + self.assertEqual(missiontime.artday.time, self._test_conv['artday']) + self.assertEqual(missiontime.datetime_utc.time, self._test_dtime_utc) + self.assertEqual(missiontime.datetime_msk.time, self._test_dtime_msk) + + def test_ArtTime_datetime_utc(self): + datetime_utc = arttime.ArtTime(datetime_utc=self._test_conv['datetime_utc']) + self.assertEqual(datetime_utc.datetime_utc.time, self._test_dtime_utc) + + def test_datetime_utc_convert(self): + datetime_utc = arttime.ArtTime(datetime_utc=self._test_conv['datetime_utc']) + self.assertEqual(datetime_utc.mjd.time, self._test_mjd) + self.assertEqual(datetime_utc.artday.time, self._test_conv['artday']) + self.assertEqual(datetime_utc.missiontime.time, self._test_conv['missiontime']) + self.assertEqual(datetime_utc.datetime_msk.time, self._test_dtime_msk) + + def test_ArtTime_datetime_msk(self): + datetime_msk = arttime.ArtTime(datetime_msk=self._test_conv['datetime_msk']) + self.assertEqual(datetime_msk.datetime_msk.time, self._test_dtime_msk) + + def test_datetime_msk_convert(self): + datetime_msk = arttime.ArtTime(datetime_msk=self._test_conv['datetime_msk']) + self.assertEqual(datetime_msk.mjd.time, self._test_mjd) + self.assertEqual(datetime_msk.artday.time, self._test_conv['artday']) + self.assertEqual(datetime_msk.missiontime.time, self._test_conv['missiontime']) + self.assertEqual(datetime_msk.datetime_utc.time, self._test_dtime_utc) + + def test_ArtTime(self): + datetime_utcnow = arttime.ArtTime() + test_datetime_utcnow = datetime.utcnow().replace(tzinfo=TZ_UTC) + self.assertLess((test_datetime_utcnow - datetime_utcnow.datetime_utc.time).total_seconds(), 60.) + + +if __name__ == "__main__": + unittest.main() \ No newline at end of file