(self)
| 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 |
nothing calls this directly
no test coverage detected