MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_date_datetime_comparison

Method test_date_datetime_comparison

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

Source from the content-addressed store, hash-verified

5897class Oddballs(unittest.TestCase):
5898
5899 def test_date_datetime_comparison(self):
5900 # bpo-1028306, bpo-5516 (gh-49766)
5901 # Trying to compare a date to a datetime should act like a mixed-
5902 # type comparison, despite that datetime is a subclass of date.
5903 as_date = date.today()
5904 as_datetime = datetime.combine(as_date, time())
5905 date_sc = SubclassDate(as_date.year, as_date.month, as_date.day)
5906 datetime_sc = SubclassDatetime(as_date.year, as_date.month,
5907 as_date.day, 0, 0, 0)
5908 for d in (as_date, date_sc):
5909 for dt in (as_datetime, datetime_sc):
5910 for x, y in (d, dt), (dt, d):
5911 self.assertTrue(x != y)
5912 self.assertFalse(x == y)
5913 self.assertRaises(TypeError, lambda: x < y)
5914 self.assertRaises(TypeError, lambda: x <= y)
5915 self.assertRaises(TypeError, lambda: x > y)
5916 self.assertRaises(TypeError, lambda: x >= y)
5917
5918 # And date should compare with other subclasses of date. If a
5919 # subclass wants to stop this, it's up to the subclass to do so.
5920 # Ditto for datetimes.
5921 for x, y in ((as_date, date_sc),
5922 (date_sc, as_date),
5923 (as_datetime, datetime_sc),
5924 (datetime_sc, as_datetime)):
5925 self.assertTrue(x == y)
5926 self.assertFalse(x != y)
5927 self.assertFalse(x < y)
5928 self.assertFalse(x > y)
5929 self.assertTrue(x <= y)
5930 self.assertTrue(x >= y)
5931
5932 # Nevertheless, comparison should work if other object is an instance
5933 # of date or datetime class with overridden comparison operators.
5934 # So special methods should return NotImplemented, as if
5935 # date and datetime were independent classes.
5936 for x, y in (as_date, as_datetime), (as_datetime, as_date):
5937 self.assertEqual(x.__eq__(y), NotImplemented)
5938 self.assertEqual(x.__ne__(y), NotImplemented)
5939 self.assertEqual(x.__lt__(y), NotImplemented)
5940 self.assertEqual(x.__gt__(y), NotImplemented)
5941 self.assertEqual(x.__gt__(y), NotImplemented)
5942 self.assertEqual(x.__ge__(y), NotImplemented)
5943
5944 def test_extra_attributes(self):
5945 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