[Checkins] SVN: DateTime/trunk/ Allow comparison of DateTime objects against None.

Hanno Schlichting hannosch at hannosch.eu
Wed Oct 19 08:20:39 EST 2011


Log message for revision 123108:
  Allow comparison of DateTime objects against None.
  

Changed:
  U   DateTime/trunk/CHANGES.txt
  U   DateTime/trunk/src/DateTime/DateTime.py
  U   DateTime/trunk/src/DateTime/tests/testDateTime.py

-=-
Modified: DateTime/trunk/CHANGES.txt
===================================================================
--- DateTime/trunk/CHANGES.txt	2011-10-19 09:43:06 UTC (rev 123107)
+++ DateTime/trunk/CHANGES.txt	2011-10-19 13:20:38 UTC (rev 123108)
@@ -24,6 +24,7 @@
 3.0 (unreleased)
 ----------------
 
+- Allow comparison of DateTime objects against None.
 
 3.0b2 (2011-10-19)
 ------------------

Modified: DateTime/trunk/src/DateTime/DateTime.py
===================================================================
--- DateTime/trunk/src/DateTime/DateTime.py	2011-10-19 09:43:06 UTC (rev 123107)
+++ DateTime/trunk/src/DateTime/DateTime.py	2011-10-19 13:20:38 UTC (rev 123108)
@@ -1238,7 +1238,10 @@
         """
         if isinstance(t, float):
             return self._micros > long(t * 1000000)
-        return self._micros > t._micros
+        try:
+            return self._micros > t._micros
+        except AttributeError:
+            return self._micros > t
 
     __gt__ = greaterThan
 
@@ -1256,7 +1259,10 @@
         """
         if isinstance(t, float):
             return self._micros >= long(t * 1000000)
-        return self._micros >= t._micros
+        try:
+            return self._micros >= t._micros
+        except AttributeError:
+            return self._micros >= t
 
     __ge__ = greaterThanEqualTo
 
@@ -1273,7 +1279,10 @@
         """
         if isinstance(t, float):
             return self._micros == long(t * 1000000)
-        return self._micros == t._micros
+        try:
+            return self._micros == t._micros
+        except AttributeError:
+            return self._micros == t
 
     def notEqualTo(self, t):
         """Compare this DateTime object to another DateTime object
@@ -1315,7 +1324,10 @@
         """
         if isinstance(t, float):
             return self._micros < long(t * 1000000)
-        return self._micros < t._micros
+        try:
+            return self._micros < t._micros
+        except AttributeError:
+            return self._micros < t
 
     __lt__ = lessThan
 
@@ -1332,7 +1344,10 @@
         """
         if isinstance(t, float):
             return self._micros <= long(t * 1000000)
-        return self._micros <= t._micros
+        try:
+            return self._micros <= t._micros
+        except AttributeError:
+            return self._micros <= t
 
     __le__ = lessThanEqualTo
 

Modified: DateTime/trunk/src/DateTime/tests/testDateTime.py
===================================================================
--- DateTime/trunk/src/DateTime/tests/testDateTime.py	2011-10-19 09:43:06 UTC (rev 123107)
+++ DateTime/trunk/src/DateTime/tests/testDateTime.py	2011-10-19 13:20:38 UTC (rev 123108)
@@ -187,17 +187,27 @@
         dt1 = DateTime('1997/3/9 1:45pm GMT+8')
         self.assertEqual(dt1 - dt, 1.0, (dt, dt1))
 
-    def testCompareMethods(self):
+    def test_compare_methods(self):
         # Compare two dates using several methods
         dt = DateTime('1997/1/1')
         dt1 = DateTime('1997/2/2')
-        self.failUnless(dt1.greaterThan(dt))
-        self.failUnless(dt1.greaterThanEqualTo(dt))
-        self.failUnless(dt.lessThan(dt1))
-        self.failUnless(dt.lessThanEqualTo(dt1))
-        self.failUnless(dt.notEqualTo(dt1))
-        self.failUnless(not dt.equalTo(dt1))
+        self.assertTrue(dt1.greaterThan(dt))
+        self.assertTrue(dt1.greaterThanEqualTo(dt))
+        self.assertTrue(dt.lessThan(dt1))
+        self.assertTrue(dt.lessThanEqualTo(dt1))
+        self.assertTrue(dt.notEqualTo(dt1))
+        self.assertFalse(dt.equalTo(dt1))
 
+    def test_compare_methods_none(self):
+        # Compare a date to None
+        dt = DateTime('1997/1/1')
+        self.assertTrue(dt.greaterThan(None))
+        self.assertTrue(dt.greaterThanEqualTo(None))
+        self.assertFalse(dt.lessThan(None))
+        self.assertFalse(dt.lessThanEqualTo(None))
+        self.assertTrue(dt.notEqualTo(None))
+        self.assertFalse(dt.equalTo(None))
+
     def test_pickle(self):
         dt = DateTime()
         data = cPickle.dumps(dt, 1)



More information about the checkins mailing list