MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_utctimetuple

Method test_utctimetuple

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

Source from the content-addressed store, hash-verified

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

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