test_abstract_numbers.py 1.57 KB
Newer Older
1 2
"""Unit tests for numbers.py."""

3 4
import math
import operator
5 6
import unittest
from numbers import Complex, Real, Rational, Integral
7
from test import support
8 9 10

class TestNumbers(unittest.TestCase):
    def test_int(self):
11 12
        self.assertTrue(issubclass(int, Integral))
        self.assertTrue(issubclass(int, Complex))
13 14 15 16

        self.assertEqual(7, int(7).real)
        self.assertEqual(0, int(7).imag)
        self.assertEqual(7, int(7).conjugate())
17
        self.assertEqual(-7, int(-7).conjugate())
18 19 20 21
        self.assertEqual(7, int(7).numerator)
        self.assertEqual(1, int(7).denominator)

    def test_float(self):
22 23
        self.assertFalse(issubclass(float, Rational))
        self.assertTrue(issubclass(float, Real))
24 25 26 27

        self.assertEqual(7.3, float(7.3).real)
        self.assertEqual(0, float(7.3).imag)
        self.assertEqual(7.3, float(7.3).conjugate())
28
        self.assertEqual(-7.3, float(-7.3).conjugate())
29 30

    def test_complex(self):
31 32
        self.assertFalse(issubclass(complex, Real))
        self.assertTrue(issubclass(complex, Complex))
33 34

        c1, c2 = complex(3, 2), complex(4,1)
35 36
        # XXX: This is not ideal, but see the comment in math_trunc().
        self.assertRaises(TypeError, math.trunc, c1)
37 38 39 40 41 42 43
        self.assertRaises(TypeError, operator.mod, c1, c2)
        self.assertRaises(TypeError, divmod, c1, c2)
        self.assertRaises(TypeError, operator.floordiv, c1, c2)
        self.assertRaises(TypeError, float, c1)
        self.assertRaises(TypeError, int, c1)

def test_main():
44
    support.run_unittest(TestNumbers)
45 46 47 48


if __name__ == "__main__":
    unittest.main()