#!/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.) #### Add test for several parameters if __name__ == "__main__": unittest.main()