unittest.case: tighter annotations for various assertions (#8077)

This commit is contained in:
Alex Waygood
2022-06-20 17:49:57 +01:00
committed by GitHub
parent bae4fd2209
commit 538621e91b
3 changed files with 108 additions and 58 deletions

View File

@@ -7,6 +7,10 @@ from fractions import Fraction
case = unittest.TestCase()
###
# Tests for assertAlmostEqual
###
case.assertAlmostEqual(2.4, 2.41)
case.assertAlmostEqual(Fraction(49, 50), Fraction(48, 50))
case.assertAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1), delta=timedelta(hours=1))
@@ -20,6 +24,10 @@ case.assertAlmostEqual(2.4, 2.41, places=9, delta=0.02) # type: ignore
case.assertAlmostEqual("foo", "bar") # type: ignore
case.assertAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1)) # type: ignore
###
# Tests for assertNotAlmostEqual
###
case.assertNotAlmostEqual(Fraction(49, 50), Fraction(48, 50))
case.assertNotAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1), delta=timedelta(hours=1))
case.assertNotAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1), None, "foo", timedelta(hours=1))
@@ -27,3 +35,46 @@ case.assertNotAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond
case.assertNotAlmostEqual(2.4, 2.41, places=9, delta=0.02) # type: ignore
case.assertNotAlmostEqual("foo", "bar") # type: ignore
case.assertNotAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1)) # type: ignore
###
# Tests for assertGreater
###
class Spam:
def __lt__(self, other: object) -> bool:
return True
class Eggs:
def __gt__(self, other: object) -> bool:
return True
class Ham:
def __lt__(self, other: "Ham") -> bool:
if not isinstance(other, Ham):
return NotImplemented
return True
class Bacon:
def __gt__(self, other: "Bacon") -> bool:
if not isinstance(other, Bacon):
return NotImplemented
return True
case.assertGreater(5.8, 3)
case.assertGreater(Decimal("4.5"), Fraction(3, 2))
case.assertGreater(Fraction(3, 2), 0.9)
case.assertGreater(Eggs(), object())
case.assertGreater(object(), Spam())
case.assertGreater(Ham(), Ham())
case.assertGreater(Bacon(), Bacon())
case.assertGreater(object(), object()) # type: ignore
case.assertGreater(datetime(1999, 1, 2), 1) # type: ignore
case.assertGreater(Spam(), Eggs()) # type: ignore
case.assertGreater(Ham(), Bacon()) # type: ignore
case.assertGreater(Bacon(), Ham()) # type: ignore