Commit eb1a4960 authored by Tim Peters's avatar Tim Peters

test_subclass_date(): Beefed this up, to check that new instance

attributes and methods work, that new arguments can be passed to the
constructor, and that inherited methods and attrs still work.  Added
XXX comments about what to do when datetime becomes usably subclassable
too (it's not yet).
parent 1ba24b4f
......@@ -480,10 +480,35 @@ class TestDateOnly(unittest.TestCase):
self.assertEqual(dt2, dt - days)
def test_subclass_date(self):
# XXX When datetime becomes usably subclassable, uncomment the
# XXX "self.theclass" lines and move this into TestDate.
# class C(self.theclass):
class C(date):
theAnswer = 42
dt = C(2003, 4, 14)
self.assertEqual(dt.__class__, C)
def __new__(cls, *args, **kws):
temp = kws.copy()
extra = temp.pop('extra')
# result = self.theclass.__new__(cls, *args, **temp)
result = date.__new__(cls, *args, **temp)
result.extra = extra
return result
def newmeth(self, start):
return start + self.year + self.month
args = 2003, 4, 14
# dt1 = self.theclass(*args)
dt1 = date(*args)
dt2 = C(*args, **{'extra': 7})
self.assertEqual(dt2.__class__, C)
self.assertEqual(dt2.theAnswer, 42)
self.assertEqual(dt2.extra, 7)
self.assertEqual(dt1.toordinal(), dt2.toordinal())
self.assertEqual(dt2.newmeth(-7), dt1.year + dt1.month - 7)
class TestDate(HarmlessMixedComparison):
# Tests here should pass for both dates and datetimes, except for a
......@@ -977,6 +1002,7 @@ class TestDate(HarmlessMixedComparison):
base = cls(2000, 2, 29)
self.assertRaises(ValueError, base.replace, year=2001)
#############################################################################
# datetime tests
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment