MCPcopy Index your code
hub / github.com/python/cpython / test_date_datetime_comparison

Method test_date_datetime_comparison

Lib/test/datetimetester.py:6086–6129  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

6084class Oddballs(unittest.TestCase):
6085
6086 def test_date_datetime_comparison(self):
6087 # bpo-1028306, bpo-5516 (gh-49766)
6088 # Trying to compare a date to a datetime should act like a mixed-
6089 # type comparison, despite that datetime is a subclass of date.
6090 as_date = date.today()
6091 as_datetime = datetime.combine(as_date, time())
6092 date_sc = SubclassDate(as_date.year, as_date.month, as_date.day)
6093 datetime_sc = SubclassDatetime(as_date.year, as_date.month,
6094 as_date.day, 0, 0, 0)
6095 for d in (as_date, date_sc):
6096 for dt in (as_datetime, datetime_sc):
6097 for x, y in (d, dt), (dt, d):
6098 self.assertTrue(x != y)
6099 self.assertFalse(x == y)
6100 self.assertRaises(TypeError, lambda: x < y)
6101 self.assertRaises(TypeError, lambda: x <= y)
6102 self.assertRaises(TypeError, lambda: x > y)
6103 self.assertRaises(TypeError, lambda: x >= y)
6104
6105 # And date should compare with other subclasses of date. If a
6106 # subclass wants to stop this, it's up to the subclass to do so.
6107 # Ditto for datetimes.
6108 for x, y in ((as_date, date_sc),
6109 (date_sc, as_date),
6110 (as_datetime, datetime_sc),
6111 (datetime_sc, as_datetime)):
6112 self.assertTrue(x == y)
6113 self.assertFalse(x != y)
6114 self.assertFalse(x < y)
6115 self.assertFalse(x > y)
6116 self.assertTrue(x <= y)
6117 self.assertTrue(x >= y)
6118
6119 # Nevertheless, comparison should work if other object is an instance
6120 # of date or datetime class with overridden comparison operators.
6121 # So special methods should return NotImplemented, as if
6122 # date and datetime were independent classes.
6123 for x, y in (as_date, as_datetime), (as_datetime, as_date):
6124 self.assertEqual(x.__eq__(y), NotImplemented)
6125 self.assertEqual(x.__ne__(y), NotImplemented)
6126 self.assertEqual(x.__lt__(y), NotImplemented)
6127 self.assertEqual(x.__gt__(y), NotImplemented)
6128 self.assertEqual(x.__gt__(y), NotImplemented)
6129 self.assertEqual(x.__ge__(y), NotImplemented)
6130
6131 def test_extra_attributes(self):
6132 with self.assertWarns(DeprecationWarning):

Callers

nothing calls this directly

Calls 14

timeClass · 0.90
SubclassDateClass · 0.85
SubclassDatetimeClass · 0.85
todayMethod · 0.80
assertTrueMethod · 0.80
assertFalseMethod · 0.80
combineMethod · 0.45
assertRaisesMethod · 0.45
assertEqualMethod · 0.45
__eq__Method · 0.45
__ne__Method · 0.45
__lt__Method · 0.45

Tested by

no test coverage detected