[Python-checkins] python/nondist/sandbox/datetime datetime.py,1.109,1.110 test_datetime.py,1.71,1.72

tim_one@users.sourceforge.net tim_one@users.sourceforge.net
2002年12月16日 13:20:47 -0800


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__":

AltStyle によって変換されたページ (->オリジナル) /