Mailing List Archive

python/nondist/sandbox/datetime datetime.py,1.109,1.110 test_datetime.py,1.71,1.72
Update of /cvsroot/python/python/nondist/sandbox/datetime
In directory sc8-pr-cvs1:/tmp/cvs-serv20758

Modified Files:
datetime.py test_datetime.py
Log Message:
Made the guts of the tests identical to the version in Python CVS; the
only differences now are due to that Python CVS uses its test_support
module to invoke unitttest. Changed __repr__s in the Python implementation
to put 'datetime.' before the class name. I don't really care whether
it's there or not, but the Python and C implementations should do the
same thing, and the Python implementation is a lot easier to change.


Index: datetime.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/datetime/datetime.py,v
retrieving revision 1.109
retrieving revision 1.110
diff -C2 -d -r1.109 -r1.110
*** datetime.py 16 Dec 2002 00:25:34 -0000 1.109
--- datetime.py 16 Dec 2002 21:20:42 -0000 1.110
***************
*** 450,462 ****
def __repr__(self):
if self.__microseconds:
! return "%s(%d, %d, %d)" % (self.__class__.__name__,
self.__days,
self.__seconds,
self.__microseconds)
if self.__seconds:
! return "%s(%d, %d)" % (self.__class__.__name__,
self.__days,
self.__seconds)
! return "%s(%d)" % (self.__class__.__name__, self.__days)

def __str__(self):
--- 450,462 ----
def __repr__(self):
if self.__microseconds:
! return "%s(%d, %d, %d)" % ('datetime.' + self.__class__.__name__,
self.__days,
self.__seconds,
self.__microseconds)
if self.__seconds:
! return "%s(%d, %d)" % ('datetime.' + self.__class__.__name__,
self.__days,
self.__seconds)
! return "%s(%d)" % ('datetime.' + self.__class__.__name__, self.__days)

def __str__(self):
***************
*** 629,633 ****
def __repr__(self):
"Convert to formal string, for repr()."
! return "%s(%d, %d, %d)" % (self.__class__.__name__,
self.__year,
self.__month,
--- 629,633 ----
def __repr__(self):
"Convert to formal string, for repr()."
! return "%s(%d, %d, %d)" % ('datetime.' + self.__class__.__name__,
self.__year,
self.__month,
***************
*** 857,861 ****
else:
s = ""
! return "%s(%d, %d%s)" % (self.__class__.__name__,
self.__hour, self.__minute, s)

--- 857,861 ----
else:
s = ""
! return "%s(%d, %d%s)" % ('datetime.' + self.__class__.__name__,
self.__hour, self.__minute, s)

***************
*** 1233,1237 ****
del L[-1]
s = ", ".join(map(str, L))
! return "%s(%s)" % (self.__class__.__name__, s)

def __str__(self):
--- 1233,1237 ----
del L[-1]
s = ", ".join(map(str, L))
! return "%s(%s)" % ('datetime.' + self.__class__.__name__, s)

def __str__(self):

Index: test_datetime.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/datetime/test_datetime.py,v
retrieving revision 1.71
retrieving revision 1.72
diff -C2 -d -r1.71 -r1.72
*** test_datetime.py 16 Dec 2002 03:34:21 -0000 1.71
--- test_datetime.py 16 Dec 2002 21:20:43 -0000 1.72
***************
*** 2,11 ****

See http://www.zope.org/Members/fdrake/DateTimeWiki/TestCases
-
- Pass c on the cmdline to test the C implementation; else the Python
- implementation is tested.
-
- Run with --leak under a debug build to get some simple but powerful leak
- detection.
"""

--- 2,5 ----
***************
*** 13,38 ****
import unittest

! # Import the right implementation, under name "datetime".
! TESTING_C = 'c' in sys.argv
! if TESTING_C:
! print "Testing the C implementation."
! import _datetime as datetime
! import _datetime
! else:
! print "Testing the Python implementation."
! import datetime
!
! # Always use datetime.this or datetime.that. If, e.g., you do
! # from datetime import this
! # you're going to pick up the Python implementation.
!
! date = datetime.date
! timedelta = datetime.timedelta
! time = datetime.time
! tzinfo = datetime.tzinfo
! timetz = datetime.timetz
! datetimetz = datetime.datetimetz
! MINYEAR = datetime.MINYEAR
! MAXYEAR = datetime.MAXYEAR

#############################################################################
--- 7,15 ----
import unittest

! from datetime import MINYEAR, MAXYEAR
! from datetime import timedelta
! from datetime import tzinfo
! from datetime import time, timetz
! from datetime import date, datetime, datetimetz

#############################################################################
***************
*** 42,45 ****
--- 19,23 ----

def test_constants(self):
+ import datetime
self.assertEqual(datetime.MINYEAR, 1)
self.assertEqual(datetime.MAXYEAR, 9999)
***************
*** 69,73 ****
# NotImplementedError.
useless = tzinfo()
! dt = datetime.datetime.max
self.assertRaises(NotImplementedError, useless.tzname, dt)
self.assertRaises(NotImplementedError, useless.utcoffset, dt)
--- 47,51 ----
# NotImplementedError.
useless = tzinfo()
! dt = datetime.max
self.assertRaises(NotImplementedError, useless.tzname, dt)
self.assertRaises(NotImplementedError, useless.utcoffset, dt)
***************
*** 83,87 ****
self.failUnless(isinstance(ne, tzinfo))

! dt = datetime.datetime.now()
self.assertRaises(NotImplementedError, ne.tzname, dt)
self.assertRaises(NotImplementedError, ne.utcoffset, dt)
--- 61,65 ----
self.failUnless(isinstance(ne, tzinfo))

! dt = datetime.now()
self.assertRaises(NotImplementedError, ne.tzname, dt)
self.assertRaises(NotImplementedError, ne.utcoffset, dt)
***************
*** 91,95 ****
fo = FixedOffset(3, "Three")
self.failUnless(isinstance(fo, tzinfo))
! for dt in datetime.datetime.now(), None:
self.assertEqual(fo.utcoffset(dt), 3)
self.assertEqual(fo.tzname(dt), "Three")
--- 69,73 ----
fo = FixedOffset(3, "Three")
self.failUnless(isinstance(fo, tzinfo))
! for dt in datetime.now(), None:
self.assertEqual(fo.utcoffset(dt), 3)
self.assertEqual(fo.tzname(dt), "Three")
***************
*** 346,349 ****
--- 324,329 ----
# Verify td -> string -> td identity.
s = repr(td)
+ self.failUnless(s.startswith('datetime.'))
+ s = s[9:]
td2 = eval(s)
self.assertEqual(td, td2)
***************
*** 463,466 ****
--- 443,448 ----
# Verify dt -> string -> date identity.
s = repr(dt)
+ self.failUnless(s.startswith('datetime.'))
+ s = s[9:]
dt2 = eval(s)
self.assertEqual(dt, dt2)
***************
*** 882,886 ****
class TestDateTime(TestDate):

! theclass = datetime.datetime

def test_basic_attributes(self):
--- 864,868 ----
class TestDateTime(TestDate):

! theclass = datetime

def test_basic_attributes(self):
***************
*** 911,922 ****
# Verify dt -> string -> datetime identity.
s = repr(dt)
! if not TESTING_C:
! # XXX This hack is due to that the Python implementation of
! # XXX type datetime calls its name 'datetime', but that's a
! # XXX module object here. The C implementation calls its name
! # XXX '_datetime.datetime', so doesn't need a hack.
! # XXX This can get simpler when the Python implementation goes
! # XXX away.
! s = 'datetime.' + s
dt2 = eval(s)
self.assertEqual(dt, dt2)
--- 893,898 ----
# Verify dt -> string -> datetime identity.
s = repr(dt)
! self.failUnless(s.startswith('datetime.'))
! s = s[9:]
dt2 = eval(s)
self.assertEqual(dt, dt2)
***************
*** 1282,1285 ****
--- 1258,1263 ----
# Verify t -> string -> time identity.
s = repr(t)
+ self.failUnless(s.startswith('datetime.'))
+ s = s[9:]
t2 = eval(s)
self.assertEqual(t, t2)
***************
*** 1323,1327 ****

for badarg in (10, 10L, 34.5, "abc", {}, [], (), date(1, 1, 1),
! datetime.datetime(1, 1, 1, 1, 1), timedelta(9)):
self.assertRaises(TypeError, lambda: t1 == badarg)
self.assertRaises(TypeError, lambda: t1 != badarg)
--- 1301,1305 ----

for badarg in (10, 10L, 34.5, "abc", {}, [], (), date(1, 1, 1),
! datetime(1, 1, 1, 1, 1), timedelta(9)):
self.assertRaises(TypeError, lambda: t1 == badarg)
self.assertRaises(TypeError, lambda: t1 != badarg)
***************
*** 1429,1436 ****

def test_repr(self):
! name = self.theclass.__name__
! if TESTING_C:
! name = '_datetime.' + name
!
self.assertEqual(repr(self.theclass(1, 2, 3, 4)),
"%s(1, 2, 3, 4)" % name)
--- 1407,1411 ----

def test_repr(self):
! name = 'datetime.' + self.theclass.__name__
self.assertEqual(repr(self.theclass(1, 2, 3, 4)),
"%s(1, 2, 3, 4)" % name)
***************
*** 1560,1572 ****
self.assertEqual(t5.isoformat(), "00:00:00.000040+00:00")

! if TESTING_C:
! d = '_datetime.'
! else:
! d = ''
! self.assertEqual(repr(t1), d + "timetz(7, 47, tzinfo=est)")
! self.assertEqual(repr(t2), d + "timetz(12, 47, tzinfo=utc)")
! self.assertEqual(repr(t3), d + "timetz(13, 47, tzinfo=met)")
! self.assertEqual(repr(t4), d + "timetz(0, 0, 0, 40)")
! self.assertEqual(repr(t5), d + "timetz(0, 0, 0, 40, tzinfo=utc)")

self.assertEqual(t1.strftime("%H:%M:%S %%Z=%Z %%z=%z"),
--- 1535,1544 ----
self.assertEqual(t5.isoformat(), "00:00:00.000040+00:00")

! d = 'datetime.timetz'
! self.assertEqual(repr(t1), d + "(7, 47, tzinfo=est)")
! self.assertEqual(repr(t2), d + "(12, 47, tzinfo=utc)")
! self.assertEqual(repr(t3), d + "(13, 47, tzinfo=met)")
! self.assertEqual(repr(t4), d + "(0, 0, 0, 40)")
! self.assertEqual(repr(t5), d + "(0, 0, 0, 40, tzinfo=utc)")

self.assertEqual(t1.strftime("%H:%M:%S %%Z=%Z %%z=%z"),
***************
*** 1848,1861 ****
self.assertEqual(str(t2), "2002-03-19 12:47:00+00:00")
self.assertEqual(str(t3), "2002-03-19 13:47:00+01:00")
! if TESTING_C:
! d = "_datetime."
! else:
! d = ""
! self.assertEqual(repr(t1),
! d + "datetimetz(2002, 3, 19, 7, 47, tzinfo=est)")
! self.assertEqual(repr(t2),
! d + "datetimetz(2002, 3, 19, 12, 47, tzinfo=utc)")
! self.assertEqual(repr(t3),
! d + "datetimetz(2002, 3, 19, 13, 47, tzinfo=met)")

def test_combine(self):
--- 1820,1827 ----
self.assertEqual(str(t2), "2002-03-19 12:47:00+00:00")
self.assertEqual(str(t3), "2002-03-19 13:47:00+01:00")
! d = 'datetime.datetimetz(2002, 3, 19, '
! self.assertEqual(repr(t1), d + "7, 47, tzinfo=est)")
! self.assertEqual(repr(t2), d + "12, 47, tzinfo=utc)")
! self.assertEqual(repr(t3), d + "13, 47, tzinfo=met)")

def test_combine(self):
***************
*** 2146,2149 ****
--- 2112,2117 ----
while True:
r.run(s)
+ if 1: # change to 0, under a debug build, for some leak detection
+ break
gc.collect()
if gc.garbage:
***************
*** 2152,2163 ****
if hasattr(sys, 'gettotalrefcount'):
thisrc = sys.gettotalrefcount()
! print '*' * 10, 'total refs:', thisrc,
if lastrc:
! print 'delta:', thisrc - lastrc
else:
! print
lastrc = thisrc
- if '--leak' not in sys.argv:
- break

if __name__ == "__main__":
--- 2120,2129 ----
if hasattr(sys, 'gettotalrefcount'):
thisrc = sys.gettotalrefcount()
! print >> sys.stderr, '*' * 10, 'total refs:', thisrc,
if lastrc:
! print >> sys.stderr, 'delta:', thisrc - lastrc
else:
! print >> sys.stderr
lastrc = thisrc

if __name__ == "__main__":