[Python-checkins] r82152 - python/branches/py3k/Lib/test/test_datetime.py

alexander.belopolsky python-checkins at python.org
Tue Jun 22 16:07:33 CEST 2010


Author: alexander.belopolsky
Date: Tue Jun 22 16:07:33 2010
New Revision: 82152

Log:
Added more test cases

Modified:
   python/branches/py3k/Lib/test/test_datetime.py

Modified: python/branches/py3k/Lib/test/test_datetime.py
==============================================================================
--- python/branches/py3k/Lib/test/test_datetime.py	(original)
+++ python/branches/py3k/Lib/test/test_datetime.py	Tue Jun 22 16:07:33 2010
@@ -301,6 +301,7 @@
         c = td(0, 0, 1000) # One millisecond
         eq(a+b+c, td(7, 60, 1000))
         eq(a-b, td(6, 24*3600 - 60))
+        eq(b.__rsub__(a), td(6, 24*3600 - 60))
         eq(-a, td(-7))
         eq(+a, td(7))
         eq(-b, td(-1, 24*3600 - 60))
@@ -378,6 +379,7 @@
         self.assertRaises(ZeroDivisionError, lambda: a // zero)
         self.assertRaises(ZeroDivisionError, lambda: a / zero)
         self.assertRaises(ZeroDivisionError, lambda: a / 0.0)
+        self.assertRaises(TypeError, lambda: a / '')
 
     @requires_IEEE_754
     def test_disallowed_special(self):
@@ -503,10 +505,20 @@
                    microseconds=999999)),
            "999999999 days, 23:59:59.999999")
 
+    def test_repr(self):
+        name = 'datetime.' + self.theclass.__name__
+        self.assertEqual(repr(self.theclass(1)),
+                         "%s(1)" % name)
+        self.assertEqual(repr(self.theclass(10, 2)),
+                         "%s(10, 2)" % name)
+        self.assertEqual(repr(self.theclass(-10, 2, 400000)),
+                         "%s(-10, 2, 400000)" % name)
+
     def test_roundtrip(self):
         for td in (timedelta(days=999999999, hours=23, minutes=59,
                              seconds=59, microseconds=999999),
                    timedelta(days=-999999999),
+                   timedelta(days=-999999999, seconds=1),
                    timedelta(days=1, seconds=2, microseconds=3)):
 
             # Verify td -> string -> td identity.
@@ -3480,6 +3492,19 @@
             def dst(self, dt): return None
         self.assertRaises(ValueError, now.astimezone, notok())
 
+        # Sometimes blow up. In the following, tzinfo.dst()
+        # implementation may return None or not Nonedepending on
+        # whether DST is assumed to be in effect.  In this situation,
+        # a ValueError should be raised by astimezone().
+        class tricky_notok(ok):
+            def dst(self, dt):
+                if dt.year == 2000:
+                    return None
+                else:
+                    return 10*HOUR
+        dt = self.theclass(2001, 1, 1).replace(tzinfo=utc_real)
+        self.assertRaises(ValueError, dt.astimezone, tricky_notok())
+
     def test_fromutc(self):
         self.assertRaises(TypeError, Eastern.fromutc)   # not enough args
         now = datetime.utcnow().replace(tzinfo=utc_real)


More information about the Python-checkins mailing list