test_abstract_numbers.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. """Unit tests for numbers.py."""
  2. import math
  3. import operator
  4. import unittest
  5. from numbers import Complex, Real, Rational, Integral
  6. class TestNumbers(unittest.TestCase):
  7. def test_int(self):
  8. self.assertTrue(issubclass(int, Integral))
  9. self.assertTrue(issubclass(int, Complex))
  10. self.assertEqual(7, int(7).real)
  11. self.assertEqual(0, int(7).imag)
  12. self.assertEqual(7, int(7).conjugate())
  13. self.assertEqual(-7, int(-7).conjugate())
  14. self.assertEqual(7, int(7).numerator)
  15. self.assertEqual(1, int(7).denominator)
  16. def test_float(self):
  17. self.assertFalse(issubclass(float, Rational))
  18. self.assertTrue(issubclass(float, Real))
  19. self.assertEqual(7.3, float(7.3).real)
  20. self.assertEqual(0, float(7.3).imag)
  21. self.assertEqual(7.3, float(7.3).conjugate())
  22. self.assertEqual(-7.3, float(-7.3).conjugate())
  23. def test_complex(self):
  24. self.assertFalse(issubclass(complex, Real))
  25. self.assertTrue(issubclass(complex, Complex))
  26. c1, c2 = complex(3, 2), complex(4,1)
  27. # XXX: This is not ideal, but see the comment in math_trunc().
  28. self.assertRaises(TypeError, math.trunc, c1)
  29. self.assertRaises(TypeError, operator.mod, c1, c2)
  30. self.assertRaises(TypeError, divmod, c1, c2)
  31. self.assertRaises(TypeError, operator.floordiv, c1, c2)
  32. self.assertRaises(TypeError, float, c1)
  33. self.assertRaises(TypeError, int, c1)
  34. if __name__ == "__main__":
  35. unittest.main()