(self)
| 5262 | self.assertRaises(ValueError, cls(1,1,1, tzinfo=DST(-1440)).timetuple) |
| 5263 | |
| 5264 | def test_utctimetuple(self): |
| 5265 | class DST(tzinfo): |
| 5266 | def __init__(self, dstvalue=0): |
| 5267 | if isinstance(dstvalue, int): |
| 5268 | dstvalue = timedelta(minutes=dstvalue) |
| 5269 | self.dstvalue = dstvalue |
| 5270 | def dst(self, dt): |
| 5271 | return self.dstvalue |
| 5272 | |
| 5273 | cls = self.theclass |
| 5274 | # This can't work: DST didn't implement utcoffset. |
| 5275 | self.assertRaises(NotImplementedError, |
| 5276 | cls(1, 1, 1, tzinfo=DST(0)).utcoffset) |
| 5277 | |
| 5278 | class UOFS(DST): |
| 5279 | def __init__(self, uofs, dofs=None): |
| 5280 | DST.__init__(self, dofs) |
| 5281 | self.uofs = timedelta(minutes=uofs) |
| 5282 | def utcoffset(self, dt): |
| 5283 | return self.uofs |
| 5284 | |
| 5285 | for dstvalue in -33, 33, 0, None: |
| 5286 | d = cls(1, 2, 3, 10, 20, 30, 40, tzinfo=UOFS(-53, dstvalue)) |
| 5287 | t = d.utctimetuple() |
| 5288 | self.assertEqual(d.year, t.tm_year) |
| 5289 | self.assertEqual(d.month, t.tm_mon) |
| 5290 | self.assertEqual(d.day, t.tm_mday) |
| 5291 | self.assertEqual(11, t.tm_hour) # 20mm + 53mm = 1hn + 13mm |
| 5292 | self.assertEqual(13, t.tm_min) |
| 5293 | self.assertEqual(d.second, t.tm_sec) |
| 5294 | self.assertEqual(d.weekday(), t.tm_wday) |
| 5295 | self.assertEqual(d.toordinal() - date(1, 1, 1).toordinal() + 1, |
| 5296 | t.tm_yday) |
| 5297 | # Ensure tm_isdst is 0 regardless of what dst() says: DST |
| 5298 | # is never in effect for a UTC time. |
| 5299 | self.assertEqual(0, t.tm_isdst) |
| 5300 | |
| 5301 | # For naive datetime, utctimetuple == timetuple except for isdst |
| 5302 | d = cls(1, 2, 3, 10, 20, 30, 40) |
| 5303 | t = d.utctimetuple() |
| 5304 | self.assertEqual(t[:-1], d.timetuple()[:-1]) |
| 5305 | self.assertEqual(0, t.tm_isdst) |
| 5306 | # Same if utcoffset is None |
| 5307 | class NOFS(DST): |
| 5308 | def utcoffset(self, dt): |
| 5309 | return None |
| 5310 | d = cls(1, 2, 3, 10, 20, 30, 40, tzinfo=NOFS()) |
| 5311 | t = d.utctimetuple() |
| 5312 | self.assertEqual(t[:-1], d.timetuple()[:-1]) |
| 5313 | self.assertEqual(0, t.tm_isdst) |
| 5314 | # Check that bad tzinfo is detected |
| 5315 | class BOFS(DST): |
| 5316 | def utcoffset(self, dt): |
| 5317 | return "EST" |
| 5318 | d = cls(1, 2, 3, 10, 20, 30, 40, tzinfo=BOFS()) |
| 5319 | self.assertRaises(TypeError, d.utctimetuple) |
| 5320 | |
| 5321 | # Check that utctimetuple() is the same as |
nothing calls this directly
no test coverage detected