bpo-36833: Add tests for Datetime C API Macros (GH-14842)

Added tests for PyDateTime_xxx_GET_xxx() macros of the C API of
the datetime module.
This commit is contained in:
Joannah Nanjekye 2019-08-29 09:54:46 -03:00 committed by Victor Stinner
parent 35f6301d68
commit 2c5fb17118
3 changed files with 114 additions and 0 deletions

View file

@ -5941,6 +5941,65 @@ class CapiTest(unittest.TestCase):
self.assertEqual(dt1.astimezone(timezone.utc), dt_utc)
def test_PyDateTime_DELTA_GET(self):
class TimeDeltaSubclass(timedelta):
pass
for klass in [timedelta, TimeDeltaSubclass]:
for args in [(26, 55, 99999), (26, 55, 99999)]:
d = klass(*args)
with self.subTest(cls=klass, date=args):
days, seconds, microseconds = _testcapi.PyDateTime_DELTA_GET(d)
self.assertEqual(days, d.days)
self.assertEqual(seconds, d.seconds)
self.assertEqual(microseconds, d.microseconds)
def test_PyDateTime_GET(self):
class DateSubclass(date):
pass
for klass in [date, DateSubclass]:
for args in [(2000, 1, 2), (2012, 2, 29)]:
d = klass(*args)
with self.subTest(cls=klass, date=args):
year, month, day = _testcapi.PyDateTime_GET(d)
self.assertEqual(year, d.year)
self.assertEqual(month, d.month)
self.assertEqual(day, d.day)
def test_PyDateTime_DATE_GET(self):
class DateTimeSubclass(datetime):
pass
for klass in [datetime, DateTimeSubclass]:
for args in [(1993, 8, 26, 22, 12, 55, 99999),
(1993, 8, 26, 22, 12, 55, 99999)]:
d = klass(*args)
with self.subTest(cls=klass, date=args):
hour, minute, second, microsecond = _testcapi.PyDateTime_DATE_GET(d)
self.assertEqual(hour, d.hour)
self.assertEqual(minute, d.minute)
self.assertEqual(second, d.second)
self.assertEqual(microsecond, d.microsecond)
def test_PyDateTime_TIME_GET(self):
class TimeSubclass(time):
pass
for klass in [time, TimeSubclass]:
for args in [(12, 30, 20, 10), (12, 30, 20, 10)]:
d = klass(*args)
with self.subTest(cls=klass, date=args):
hour, minute, second, microsecond = _testcapi.PyDateTime_TIME_GET(d)
self.assertEqual(hour, d.hour)
self.assertEqual(minute, d.minute)
self.assertEqual(second, d.second)
self.assertEqual(microsecond, d.microsecond)
def test_timezones_offset_zero(self):
utc0, utc1, non_utc = _testcapi.get_timezones_offset_zero()