MCPcopy Index your code
hub / github.com/python/cpython / test_utctimetuple

Method test_utctimetuple

Lib/test/datetimetester.py:5451–5529  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

5449 self.assertRaises(ValueError, cls(1,1,1, tzinfo=DST(-1440)).timetuple)
5450
5451 def test_utctimetuple(self):
5452 class DST(tzinfo):
5453 def __init__(self, dstvalue=0):
5454 if isinstance(dstvalue, int):
5455 dstvalue = timedelta(minutes=dstvalue)
5456 self.dstvalue = dstvalue
5457 def dst(self, dt):
5458 return self.dstvalue
5459
5460 cls = self.theclass
5461 # This can't work: DST didn't implement utcoffset.
5462 self.assertRaises(NotImplementedError,
5463 cls(1, 1, 1, tzinfo=DST(0)).utcoffset)
5464
5465 class UOFS(DST):
5466 def __init__(self, uofs, dofs=None):
5467 DST.__init__(self, dofs)
5468 self.uofs = timedelta(minutes=uofs)
5469 def utcoffset(self, dt):
5470 return self.uofs
5471
5472 for dstvalue in -33, 33, 0, None:
5473 d = cls(1, 2, 3, 10, 20, 30, 40, tzinfo=UOFS(-53, dstvalue))
5474 t = d.utctimetuple()
5475 self.assertEqual(d.year, t.tm_year)
5476 self.assertEqual(d.month, t.tm_mon)
5477 self.assertEqual(d.day, t.tm_mday)
5478 self.assertEqual(11, t.tm_hour) # 20mm + 53mm = 1hn + 13mm
5479 self.assertEqual(13, t.tm_min)
5480 self.assertEqual(d.second, t.tm_sec)
5481 self.assertEqual(d.weekday(), t.tm_wday)
5482 self.assertEqual(d.toordinal() - date(1, 1, 1).toordinal() + 1,
5483 t.tm_yday)
5484 # Ensure tm_isdst is 0 regardless of what dst() says: DST
5485 # is never in effect for a UTC time.
5486 self.assertEqual(0, t.tm_isdst)
5487
5488 # For naive datetime, utctimetuple == timetuple except for isdst
5489 d = cls(1, 2, 3, 10, 20, 30, 40)
5490 t = d.utctimetuple()
5491 self.assertEqual(t[:-1], d.timetuple()[:-1])
5492 self.assertEqual(0, t.tm_isdst)
5493 # Same if utcoffset is None
5494 class NOFS(DST):
5495 def utcoffset(self, dt):
5496 return None
5497 d = cls(1, 2, 3, 10, 20, 30, 40, tzinfo=NOFS())
5498 t = d.utctimetuple()
5499 self.assertEqual(t[:-1], d.timetuple()[:-1])
5500 self.assertEqual(0, t.tm_isdst)
5501 # Check that bad tzinfo is detected
5502 class BOFS(DST):
5503 def utcoffset(self, dt):
5504 return "EST"
5505 d = cls(1, 2, 3, 10, 20, 30, 40, tzinfo=BOFS())
5506 self.assertRaises(TypeError, d.utctimetuple)
5507
5508 # Check that utctimetuple() is the same as

Callers

nothing calls this directly

Calls 15

dateClass · 0.90
timezoneClass · 0.90
DSTClass · 0.85
UOFSClass · 0.85
NOFSClass · 0.85
BOFSClass · 0.85
utctimetupleMethod · 0.80
toordinalMethod · 0.80
astimezoneMethod · 0.80
clsClass · 0.50
assertRaisesMethod · 0.45
assertEqualMethod · 0.45

Tested by

no test coverage detected