def testMJD(self): ts = DateTime(45205.125, DateTime.MJD, DateTime.UTC) self.assertEqual(ts.nsecs(DateTime.UTC), 399006000000000000) self.assertEqual(ts.nsecs(DateTime.TAI), 399006021000000000) self.assertAlmostEqual(ts.get(DateTime.MJD, DateTime.UTC), 45205.125) self.assertAlmostEqual(ts.get(DateTime.MJD, DateTime.TAI), 45205.125 + 21.0/86400.0) self.assertTrue(ts.isValid())
def testNsecsDefault(self): ts = DateTime(1192755506000000000) self.assertEqual(ts.nsecs(DateTime.UTC), 1192755473000000000) self.assertEqual(ts.nsecs(DateTime.TAI), 1192755506000000000) self.assertEqual(ts.nsecs(), 1192755506000000000) self.assertAlmostEqual(ts.get(DateTime.MJD, DateTime.UTC), 54392.040196759262) self.assertTrue(ts.isValid())
def testNegative(self): ts = DateTime("1969-03-01T00:00:32Z", DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-03-01T00:00:32.000000000Z') ts = DateTime("1969-01-01T00:00:00Z", DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-01-01T00:00:00.000000000Z') ts = DateTime("1969-01-01T00:00:40Z", DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-01-01T00:00:40.000000000Z') ts = DateTime("1969-01-01T00:00:38Z", DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-01-01T00:00:38.000000000Z') ts = DateTime("1969-03-01T12:39:45Z", DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-03-01T12:39:45.000000000Z') ts = DateTime("1969-03-01T12:39:45.000000001Z", DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-03-01T12:39:45.000000001Z') self.assertTrue(ts.isValid()) # Note slight inaccuracy in UTC-TAI-UTC round-trip ts = DateTime("1969-03-01T12:39:45.12345Z", DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-03-01T12:39:45.123449996Z') ts = DateTime("1969-03-01T12:39:45.123456Z", DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-03-01T12:39:45.123455996Z') ts = DateTime(long(-1), DateTime.TAI) self.assertEqual(ts.toString(ts.UTC), '1969-12-31T23:59:51.999918239Z') ts = DateTime(long(0), DateTime.TAI) self.assertEqual(ts.toString(ts.UTC), '1969-12-31T23:59:51.999918240Z') ts = DateTime(long(1), DateTime.TAI) self.assertEqual(ts.toString(ts.UTC), '1969-12-31T23:59:51.999918241Z') ts = DateTime(long(-1), DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-12-31T23:59:59.999999999Z') ts = DateTime(long(0), DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1970-01-01T00:00:00.000000000Z') ts = DateTime(long(1), DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1970-01-01T00:00:00.000000001Z')
def testNegative(self): ts = DateTime("1969-03-01T00:00:32Z", DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-03-01T00:00:32.000000000Z') ts = DateTime("1969-01-01T00:00:00Z", DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-01-01T00:00:00.000000000Z') ts = DateTime("1969-01-01T00:00:40Z", DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-01-01T00:00:40.000000000Z') ts = DateTime("1969-01-01T00:00:38Z", DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-01-01T00:00:38.000000000Z') ts = DateTime("1969-03-01T12:39:45Z", DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-03-01T12:39:45.000000000Z') ts = DateTime("1969-03-01T12:39:45.000000001Z", DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-03-01T12:39:45.000000001Z') self.assertTrue(ts.isValid()) # Note slight inaccuracy in UTC-TAI-UTC round-trip ts = DateTime("1969-03-01T12:39:45.12345Z", DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-03-01T12:39:45.123449996Z') ts = DateTime("1969-03-01T12:39:45.123456Z", DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-03-01T12:39:45.123455996Z') ts = DateTime(-1, DateTime.TAI) self.assertEqual(ts.toString(ts.UTC), '1969-12-31T23:59:51.999918239Z') ts = DateTime(0, DateTime.TAI) self.assertEqual(ts.toString(ts.UTC), '1969-12-31T23:59:51.999918240Z') ts = DateTime(1, DateTime.TAI) self.assertEqual(ts.toString(ts.UTC), '1969-12-31T23:59:51.999918241Z') ts = DateTime(-1, DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1969-12-31T23:59:59.999999999Z') ts = DateTime(0, DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1970-01-01T00:00:00.000000000Z') ts = DateTime(1, DateTime.UTC) self.assertEqual(ts.toString(ts.UTC), '1970-01-01T00:00:00.000000001Z')
def testNsecsTT(self): ts = DateTime(long(1192755538184000000), DateTime.TT) self.assertEqual(ts.nsecs(DateTime.UTC), long(1192755473000000000)) self.assertEqual(ts.nsecs(DateTime.TAI), long(1192755506000000000)) self.assertEqual(ts.nsecs(), long(1192755506000000000)) self.assertAlmostEqual(ts.get(DateTime.MJD, DateTime.UTC), 54392.040196759262) self.assertTrue(ts.isValid())
def testIsoNonUTCBasics(self): """Test basic ISO string input and output of TAI and TT dates""" for scale in (DateTime.TAI, DateTime.TT): for dateSep in ("-", ""): # "-" date separator is optional for timeSep in (":", ""): # ":" time separator is optional for decPt in (".", ","): # "." or "," may be used as decimal point dateStr = "2009{0}04{0}02T07{1}26{1}39{2}314159265".format(dateSep, timeSep, decPt) ts = DateTime(dateStr, scale) self.assertEqual(ts.toString(scale), "2009-04-02T07:26:39.314159265") self.assertTrue(ts.isValid())
def testIsoNonUTCBasics(self): """Test basic ISO string input and output of TAI and TT dates """ for scale in (DateTime.TAI, DateTime.TT): for dateSep in ("-", ""): # "-" date separator is optional for timeSep in (":", ""): # ":" time separator is optional for decPt in (".", ","): # "." or "," may be used as decimal point dateStr = "2009{0}04{0}02T07{1}26{1}39{2}314159265".format(dateSep, timeSep, decPt) ts = DateTime(dateStr, scale) self.assertEqual(ts.toString(scale), "2009-04-02T07:26:39.314159265") self.assertTrue(ts.isValid())
def testInvalid(self): ts = DateTime() self.assertFalse(ts.isValid()) for scale in self.timeScales: self.assertEqual(ts.nsecs(scale), DateTime.invalid_nsecs) for system in self.dateSystems: with self.assertRaises(RuntimeError): ts.get(system, scale) with self.assertRaises(RuntimeError): ts.gmtime(scale) with self.assertRaises(RuntimeError): ts.timespec(scale) with self.assertRaises(RuntimeError): ts.timeval(scale) with self.assertRaises(RuntimeError): ts.toString(scale) self.assertEqual(repr(ts), "DateTime()")
def testInvalid(self): ts = DateTime() self.assertFalse(ts.isValid()) for scale in self.timeScales: self.assertEqual(ts.nsecs(scale), DateTime.invalid_nsecs) for system in self.dateSystems: with self.assertRaises(pexExcept.RuntimeError): ts.get(system, scale) with self.assertRaises(pexExcept.RuntimeError): ts.gmtime(scale) with self.assertRaises(pexExcept.RuntimeError): ts.timespec(scale) with self.assertRaises(pexExcept.RuntimeError): ts.timeval(scale) with self.assertRaises(pexExcept.RuntimeError): ts.toString(scale) self.assertEqual(repr(ts), "DateTime()")
def testIsoNoNSecs(self): ts = DateTime("2009-04-02T07:26:39Z", DateTime.UTC) self.assertEqual(ts.nsecs(DateTime.TAI), 1238657233000000000) self.assertEqual(ts.nsecs(DateTime.UTC), 1238657199000000000) self.assertEqual(ts.toString(ts.UTC), "2009-04-02T07:26:39.000000000Z") self.assertTrue(ts.isValid())
def testIsoExpanded(self): ts = DateTime("2009-04-02T07:26:39.314159265Z", DateTime.UTC) self.assertEqual(ts.nsecs(DateTime.TAI), 1238657233314159265) self.assertEqual(ts.nsecs(DateTime.UTC), 1238657199314159265) self.assertEqual(ts.toString(ts.UTC), "2009-04-02T07:26:39.314159265Z") self.assertTrue(ts.isValid())
def testIsoNoNSecs(self): ts = DateTime("2009-04-02T07:26:39Z", DateTime.UTC) self.assertEqual(ts.nsecs(DateTime.TAI), long(1238657233000000000)) self.assertEqual(ts.nsecs(DateTime.UTC), long(1238657199000000000)) self.assertEqual(ts.toString(ts.UTC), "2009-04-02T07:26:39.000000000Z") self.assertTrue(ts.isValid())
def testIsoExpanded(self): ts = DateTime("2009-04-02T07:26:39.314159265Z", DateTime.UTC) self.assertEqual(ts.nsecs(DateTime.TAI), long(1238657233314159265)) self.assertEqual(ts.nsecs(DateTime.UTC), long(1238657199314159265)) self.assertEqual(ts.toString(ts.UTC), "2009-04-02T07:26:39.314159265Z") self.assertTrue(ts.isValid())