[Python-checkins] python/dist/src/Lib/test test_datetime.py,1.20,1.21

tim_one@users.sourceforge.net tim_one@users.sourceforge.net
Thu, 02 Jan 2003 13:28:09 -0800


Update of /cvsroot/python/python/dist/src/Lib/test
In directory sc8-pr-cvs1:/tmp/cvs-serv18654/python/Lib/test

Modified Files:
	test_datetime.py 
Log Message:
The tzinfo methods utcoffset() and dst() must return a timedelta object 
(or None) now.  In 2.3a1 they could also return an int or long, but that 
was an unhelpfully redundant leftover from an earlier version wherein 
they couldn't return a timedelta.  TOOWTDI.


Index: test_datetime.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_datetime.py,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** test_datetime.py	2 Jan 2003 19:35:53 -0000	1.20
--- test_datetime.py	2 Jan 2003 21:28:07 -0000	1.21
***************
*** 27,30 ****
--- 27,34 ----
  class FixedOffset(tzinfo):
      def __init__(self, offset, name, dstoffset=42):
+         if isinstance(offset, int):
+             offset = timedelta(minutes=offset)
+         if isinstance(dstoffset, int):
+             dstoffset = timedelta(minutes=dstoffset)
          self.__offset = offset
          self.__name = name
***************
*** 73,79 ****
          self.failUnless(isinstance(fo, tzinfo))
          for dt in datetime.now(), None:
!             self.assertEqual(fo.utcoffset(dt), 3)
              self.assertEqual(fo.tzname(dt), "Three")
!             self.assertEqual(fo.dst(dt), 42)
  
      def test_pickling_base(self):
--- 77,83 ----
          self.failUnless(isinstance(fo, tzinfo))
          for dt in datetime.now(), None:
!             self.assertEqual(fo.utcoffset(dt), timedelta(minutes=3))
              self.assertEqual(fo.tzname(dt), "Three")
!             self.assertEqual(fo.dst(dt), timedelta(minutes=42))
  
      def test_pickling_base(self):
***************
*** 95,102 ****
  
          # Make sure we can pickle/unpickle an instance of a subclass.
!         orig = PicklableFixedOffset(-300, 'cookie')
          self.failUnless(isinstance(orig, tzinfo))
          self.failUnless(type(orig) is PicklableFixedOffset)
!         self.assertEqual(orig.utcoffset(None), -300)
          self.assertEqual(orig.tzname(None), 'cookie')
          for pickler in pickle, cPickle:
--- 99,107 ----
  
          # Make sure we can pickle/unpickle an instance of a subclass.
!         offset = timedelta(minutes=-300)
!         orig = PicklableFixedOffset(offset, 'cookie')
          self.failUnless(isinstance(orig, tzinfo))
          self.failUnless(type(orig) is PicklableFixedOffset)
!         self.assertEqual(orig.utcoffset(None), offset)
          self.assertEqual(orig.tzname(None), 'cookie')
          for pickler in pickle, cPickle:
***************
*** 106,110 ****
                  self.failUnless(isinstance(derived, tzinfo))
                  self.failUnless(type(derived) is PicklableFixedOffset)
!                 self.assertEqual(derived.utcoffset(None), -300)
                  self.assertEqual(derived.tzname(None), 'cookie')
  
--- 111,115 ----
                  self.failUnless(isinstance(derived, tzinfo))
                  self.failUnless(type(derived) is PicklableFixedOffset)
!                 self.assertEqual(derived.utcoffset(None), offset)
                  self.assertEqual(derived.tzname(None), 'cookie')
  
***************
*** 1563,1567 ****
          class introspective(tzinfo):
              def tzname(self, dt):    return dt and "real" or "none"
!             def utcoffset(self, dt): return dt and 42 or -42
              dst = utcoffset
  
--- 1568,1573 ----
          class introspective(tzinfo):
              def tzname(self, dt):    return dt and "real" or "none"
!             def utcoffset(self, dt):
!                 return timedelta(minutes = dt and 42 or -42)
              dst = utcoffset
  
***************
*** 1594,1598 ****
          class Edgy(tzinfo):
              def __init__(self, offset):
!                 self.offset = offset
              def utcoffset(self, dt):
                  return self.offset
--- 1600,1604 ----
          class Edgy(tzinfo):
              def __init__(self, offset):
!                 self.offset = timedelta(minutes=offset)
              def utcoffset(self, dt):
                  return self.offset
***************
*** 1630,1650 ****
              self.failUnless(t.tzname() is None)
  
-         class C2(tzinfo):
-             def utcoffset(self, dt): return -1439
-             def dst(self, dt): return 1439
-             def tzname(self, dt): return "aname"
          class C3(tzinfo):
              def utcoffset(self, dt): return timedelta(minutes=-1439)
              def dst(self, dt): return timedelta(minutes=1439)
              def tzname(self, dt): return "aname"
!         for t in cls(1, 1, 1, tzinfo=C2()), cls(1, 1, 1, tzinfo=C3()):
!             self.assertEqual(t.utcoffset(), timedelta(minutes=-1439))
!             self.assertEqual(t.dst(), timedelta(minutes=1439))
!             self.assertEqual(t.tzname(), "aname")
  
          # Wrong types.
          class C4(tzinfo):
              def utcoffset(self, dt): return "aname"
!             def dst(self, dt): return ()
              def tzname(self, dt): return 0
          t = cls(1, 1, 1, tzinfo=C4())
--- 1636,1652 ----
              self.failUnless(t.tzname() is None)
  
          class C3(tzinfo):
              def utcoffset(self, dt): return timedelta(minutes=-1439)
              def dst(self, dt): return timedelta(minutes=1439)
              def tzname(self, dt): return "aname"
!         t = cls(1, 1, 1, tzinfo=C3())
!         self.assertEqual(t.utcoffset(), timedelta(minutes=-1439))
!         self.assertEqual(t.dst(), timedelta(minutes=1439))
!         self.assertEqual(t.tzname(), "aname")
  
          # Wrong types.
          class C4(tzinfo):
              def utcoffset(self, dt): return "aname"
!             def dst(self, dt): return 7
              def tzname(self, dt): return 0
          t = cls(1, 1, 1, tzinfo=C4())
***************
*** 1654,1666 ****
  
          # Offset out of range.
-         class C5(tzinfo):
-             def utcoffset(self, dt): return -1440
-             def dst(self, dt): return 1440
          class C6(tzinfo):
              def utcoffset(self, dt): return timedelta(hours=-24)
              def dst(self, dt): return timedelta(hours=24)
!         for t in cls(1, 1, 1, tzinfo=C5()), cls(1, 1, 1, tzinfo=C6()):
!             self.assertRaises(ValueError, t.utcoffset)
!             self.assertRaises(ValueError, t.dst)
  
          # Not a whole number of minutes.
--- 1656,1665 ----
  
          # Offset out of range.
          class C6(tzinfo):
              def utcoffset(self, dt): return timedelta(hours=-24)
              def dst(self, dt): return timedelta(hours=24)
!         t = cls(1, 1, 1, tzinfo=C6())
!         self.assertRaises(ValueError, t.utcoffset)
!         self.assertRaises(ValueError, t.dst)
  
          # Not a whole number of minutes.
***************
*** 1680,1686 ****
              def utcoffset(self, t):
                  if t.minute < 10:
!                     return t.minute # d0 and d1 equal after adjustment
                  else:
!                     return 59       # d2 off in the weeds
  
          base = cls(8, 9, 10, tzinfo=OperandDependentOffset())
--- 1679,1687 ----
              def utcoffset(self, t):
                  if t.minute < 10:
!                     # d0 and d1 equal after adjustment
!                     return timedelta(minutes=t.minute)
                  else:
!                     # d2 off in the weeds
!                     return timedelta(minutes=59)
  
          base = cls(8, 9, 10, tzinfo=OperandDependentOffset())
***************
*** 1938,1944 ****
          class Varies(tzinfo):
              def __init__(self):
!                 self.offset = 22
              def utcoffset(self, t):
!                 self.offset += 1
                  return self.offset
  
--- 1939,1945 ----
          class Varies(tzinfo):
              def __init__(self):
!                 self.offset = timedelta(minutes=22)
              def utcoffset(self, t):
!                 self.offset += timedelta(minutes=1)
                  return self.offset
  
***************
*** 2029,2033 ****
          # Try a bogus uctoffset.
          class Bogus(tzinfo):
!             def utcoffset(self, dt): return 1440 # out of bounds
          t1 = self.theclass(2, 2, 2, tzinfo=Bogus())
          t2 = self.theclass(2, 2, 2, tzinfo=FixedOffset(0, ""))
--- 2030,2035 ----
          # Try a bogus uctoffset.
          class Bogus(tzinfo):
!             def utcoffset(self, dt):
!                 return timedelta(minutes=1440) # out of bounds
          t1 = self.theclass(2, 2, 2, tzinfo=Bogus())
          t2 = self.theclass(2, 2, 2, tzinfo=FixedOffset(0, ""))
***************
*** 2260,2263 ****
--- 2262,2267 ----
          class DST(tzinfo):
              def __init__(self, dstvalue):
+                 if isinstance(dstvalue, int):
+                     dstvalue = timedelta(minutes=dstvalue)
                  self.dstvalue = dstvalue
              def dst(self, dt):
***************
*** 2292,2295 ****
--- 2296,2301 ----
          class DST(tzinfo):
              def __init__(self, dstvalue):
+                 if isinstance(dstvalue, int):
+                     dstvalue = timedelta(minutes=dstvalue)
                  self.dstvalue = dstvalue
              def dst(self, dt):
***************
*** 2304,2308 ****
              def __init__(self, uofs, dofs=None):
                  DST.__init__(self, dofs)
!                 self.uofs = uofs
              def utcoffset(self, dt):
                  return self.uofs
--- 2310,2314 ----
              def __init__(self, uofs, dofs=None):
                  DST.__init__(self, dofs)
!                 self.uofs = timedelta(minutes=uofs)
              def utcoffset(self, dt):
                  return self.uofs
***************
*** 2455,2461 ****
              def utcoffset(self, t):
                  if t.minute < 10:
!                     return t.minute # d0 and d1 equal after adjustment
                  else:
!                     return 59       # d2 off in the weeds
  
          base = cls(8, 9, 10, 11, 12, 13, 14, tzinfo=OperandDependentOffset())
--- 2461,2469 ----
              def utcoffset(self, t):
                  if t.minute < 10:
!                     # d0 and d1 equal after adjustment
!                     return timedelta(minutes=t.minute)
                  else:
!                     # d2 off in the weeds
!                     return timedelta(minutes=59)
  
          base = cls(8, 9, 10, 11, 12, 13, 14, tzinfo=OperandDependentOffset())
***************
*** 2503,2509 ****
          class Varies(tzinfo):
              def __init__(self):
!                 self.offset = 22
              def utcoffset(self, t):
!                 self.offset += 1
                  return self.offset
  
--- 2511,2517 ----
          class Varies(tzinfo):
              def __init__(self):
!                 self.offset = timedelta(minutes=22)
              def utcoffset(self, t):
!                 self.offset += timedelta(minutes=1)
                  return self.offset