annotate Lib/test/test_complex.py @ 51749:1408feec0084 3.0

Merged revisions 69798 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ................ r69798 | benjamin.peterson | 2009-02-19 22:02:38 -0600 (Thu, 19 Feb 2009) | 13 lines Merged revisions 69769,69776 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r69769 | georg.brandl | 2009-02-19 02:30:06 -0600 (Thu, 19 Feb 2009) | 1 line #5310, #3558: fix operator precedence table. ........ r69776 | georg.brandl | 2009-02-19 10:34:51 -0600 (Thu, 19 Feb 2009) | 2 lines #5317: update IronPython URL. ........ ................
author Benjamin Peterson <benjamin@python.org>
date Fri, 20 Feb 2009 04:05:32 +0000
parents 7d824fd131ad
children d3fe6e96484c 330115137414
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30071
735ec0869492 Remove useless import.
Walter Dörwald <walter@livinglogic.de>
parents: 30070
diff changeset
1 import unittest, os
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45371
diff changeset
2 from test import support
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
3
17066
2c1be7924b04 SF bug [ #409448 ] Complex division is braindead
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
4 from random import random
44045
530fb9852c50 Merged revisions 59202-59211 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43284
diff changeset
5 from math import atan2
17066
2c1be7924b04 SF bug [ #409448 ] Complex division is braindead
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
6
45371
7c4c46342137 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45082
diff changeset
7 INF = float("inf")
7c4c46342137 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45082
diff changeset
8 NAN = float("nan")
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
9 # These tests ensure that complex math does the right thing
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
10
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
11 class ComplexTest(unittest.TestCase):
21401
6da6091a31ee Add a comment explaining what these tests are for, and where to look for
Fred Drake <fdrake@acm.org>
parents: 19791
diff changeset
12
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
13 def assertAlmostEqual(self, a, b):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
14 if isinstance(a, complex):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
15 if isinstance(b, complex):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
16 unittest.TestCase.assertAlmostEqual(self, a.real, b.real)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
17 unittest.TestCase.assertAlmostEqual(self, a.imag, b.imag)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
18 else:
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
19 unittest.TestCase.assertAlmostEqual(self, a.real, b)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
20 unittest.TestCase.assertAlmostEqual(self, a.imag, 0.)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
21 else:
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
22 if isinstance(b, complex):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
23 unittest.TestCase.assertAlmostEqual(self, a, b.real)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
24 unittest.TestCase.assertAlmostEqual(self, 0., b.imag)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
25 else:
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
26 unittest.TestCase.assertAlmostEqual(self, a, b)
17066
2c1be7924b04 SF bug [ #409448 ] Complex division is braindead
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
27
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
28 def assertCloseAbs(self, x, y, eps=1e-9):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
29 """Return true iff floats x and y "are close\""""
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
30 # put the one with larger magnitude second
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
31 if abs(x) > abs(y):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
32 x, y = y, x
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
33 if y == 0:
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
34 return abs(x) < eps
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
35 if x == 0:
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
36 return abs(y) < eps
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
37 # check that relative difference < eps
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
38 self.assert_(abs((x-y)/y) < eps)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
39
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
40 def assertClose(self, x, y, eps=1e-9):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
41 """Return true iff complexes x and y "are close\""""
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
42 self.assertCloseAbs(x.real, y.real, eps)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
43 self.assertCloseAbs(x.imag, y.imag, eps)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
44
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
45 def assertIs(self, a, b):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
46 self.assert_(a is b)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
47
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
48 def check_div(self, x, y):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
49 """Compute complex z=x*y, and check that z/x==y and z/y==x."""
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
50 z = x * y
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
51 if x != 0:
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
52 q = z / x
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
53 self.assertClose(q, y)
30070
061d86fc11bb Check both __div__ and __truediv__ in division tests.
Walter Dörwald <walter@livinglogic.de>
parents: 29867
diff changeset
54 q = z.__truediv__(x)
061d86fc11bb Check both __div__ and __truediv__ in division tests.
Walter Dörwald <walter@livinglogic.de>
parents: 29867
diff changeset
55 self.assertClose(q, y)
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
56 if y != 0:
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
57 q = z / y
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
58 self.assertClose(q, x)
30070
061d86fc11bb Check both __div__ and __truediv__ in division tests.
Walter Dörwald <walter@livinglogic.de>
parents: 29867
diff changeset
59 q = z.__truediv__(y)
061d86fc11bb Check both __div__ and __truediv__ in division tests.
Walter Dörwald <walter@livinglogic.de>
parents: 29867
diff changeset
60 self.assertClose(q, x)
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
61
37191
4bfe8afe8f65 Get rid of remnants of integer division
Neal Norwitz <nnorwitz@gmail.com>
parents: 35586
diff changeset
62 def test_truediv(self):
41642
a6eb6acfe04a Merged revisions 55007-55179 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41575
diff changeset
63 simple_real = [float(i) for i in range(-5, 6)]
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
64 simple_complex = [complex(x, y) for x in simple_real for y in simple_real]
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
65 for x in simple_complex:
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
66 for y in simple_complex:
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
67 self.check_div(x, y)
19791
c97dda238b36 Reverting to rev 1.2. Apparently gcc doesn't use the extended-precision
Tim Peters <tim.peters@gmail.com>
parents: 19790
diff changeset
68
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
69 # A naive complex division algorithm (such as in 2.0) is very prone to
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
70 # nonsense errors for these (overflows and underflows).
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
71 self.check_div(complex(1e200, 1e200), 1+0j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
72 self.check_div(complex(1e-200, 1e-200), 1+0j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
73
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
74 # Just for fun.
41642
a6eb6acfe04a Merged revisions 55007-55179 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41575
diff changeset
75 for i in range(100):
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
76 self.check_div(complex(random(), random()),
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
77 complex(random(), random()))
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
78
37191
4bfe8afe8f65 Get rid of remnants of integer division
Neal Norwitz <nnorwitz@gmail.com>
parents: 35586
diff changeset
79 self.assertRaises(ZeroDivisionError, complex.__truediv__, 1+1j, 0+0j)
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
80 # FIXME: The following currently crashes on Alpha
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
81 # self.assertRaises(OverflowError, pow, 1e200+1j, 1e200+1j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
82
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
83 def test_truediv(self):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
84 self.assertAlmostEqual(complex.__truediv__(2+0j, 1+1j), 1-1j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
85 self.assertRaises(ZeroDivisionError, complex.__truediv__, 1+1j, 0+0j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
86
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
87 def test_floordiv(self):
42435
f6cc76e4ca25 Make test_complex pass again now that floordiv and mod are illegal.
Guido van Rossum <guido@python.org>
parents: 41904
diff changeset
88 self.assertRaises(TypeError, complex.__floordiv__, 3+0j, 1.5+0j)
f6cc76e4ca25 Make test_complex pass again now that floordiv and mod are illegal.
Guido van Rossum <guido@python.org>
parents: 41904
diff changeset
89 self.assertRaises(TypeError, complex.__floordiv__, 3+0j, 0+0j)
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
90
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
91 def test_richcompare(self):
40644
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 39603
diff changeset
92 self.assertRaises(OverflowError, complex.__eq__, 1+1j, 1<<10000)
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
93 self.assertEqual(complex.__lt__(1+1j, None), NotImplemented)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
94 self.assertIs(complex.__eq__(1+1j, 1+1j), True)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
95 self.assertIs(complex.__eq__(1+1j, 2+2j), False)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
96 self.assertIs(complex.__ne__(1+1j, 1+1j), False)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
97 self.assertIs(complex.__ne__(1+1j, 2+2j), True)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
98 self.assertRaises(TypeError, complex.__lt__, 1+1j, 2+2j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
99 self.assertRaises(TypeError, complex.__le__, 1+1j, 2+2j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
100 self.assertRaises(TypeError, complex.__gt__, 1+1j, 2+2j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
101 self.assertRaises(TypeError, complex.__ge__, 1+1j, 2+2j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
102
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
103 def test_mod(self):
42435
f6cc76e4ca25 Make test_complex pass again now that floordiv and mod are illegal.
Guido van Rossum <guido@python.org>
parents: 41904
diff changeset
104 # % is no longer supported on complex numbers
f6cc76e4ca25 Make test_complex pass again now that floordiv and mod are illegal.
Guido van Rossum <guido@python.org>
parents: 41904
diff changeset
105 self.assertRaises(TypeError, (1+1j).__mod__, 0+0j)
f6cc76e4ca25 Make test_complex pass again now that floordiv and mod are illegal.
Guido van Rossum <guido@python.org>
parents: 41904
diff changeset
106 self.assertRaises(TypeError, lambda: (3.33+4.43j) % 0)
43284
1f9eee08ab35 Check in some documentation tweaks for PEP 3141, add some tests, and implement
Jeffrey Yasskin <jyasskin@gmail.com>
parents: 42911
diff changeset
107 self.assertRaises(TypeError, (1+1j).__mod__, 4.3j)
29867
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
108
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
109 def test_divmod(self):
42435
f6cc76e4ca25 Make test_complex pass again now that floordiv and mod are illegal.
Guido van Rossum <guido@python.org>
parents: 41904
diff changeset
110 self.assertRaises(TypeError, divmod, 1+1j, 1+0j)
f6cc76e4ca25 Make test_complex pass again now that floordiv and mod are illegal.
Guido van Rossum <guido@python.org>
parents: 41904
diff changeset
111 self.assertRaises(TypeError, divmod, 1+1j, 0+0j)
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
112
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
113 def test_pow(self):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
114 self.assertAlmostEqual(pow(1+1j, 0+0j), 1.0)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
115 self.assertAlmostEqual(pow(0+0j, 2+0j), 0.0)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
116 self.assertRaises(ZeroDivisionError, pow, 0+0j, 1j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
117 self.assertAlmostEqual(pow(1j, -1), 1/1j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
118 self.assertAlmostEqual(pow(1j, 200), 1)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
119 self.assertRaises(ValueError, pow, 1+1j, 1+1j, 1+1j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
120
29867
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
121 a = 3.33+4.43j
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
122 self.assertEqual(a ** 0j, 1)
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
123 self.assertEqual(a ** 0.+0.j, 1)
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
124
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
125 self.assertEqual(3j ** 0j, 1)
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
126 self.assertEqual(3j ** 0, 1)
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
127
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
128 try:
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
129 0j ** a
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
130 except ZeroDivisionError:
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
131 pass
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
132 else:
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
133 self.fail("should fail 0.0 to negative or complex power")
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
134
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
135 try:
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
136 0j ** (3-2j)
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
137 except ZeroDivisionError:
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
138 pass
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
139 else:
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
140 self.fail("should fail 0.0 to negative or complex power")
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
141
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
142 # The following is used to exercise certain code paths
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
143 self.assertEqual(a ** 105, a ** 105)
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
144 self.assertEqual(a ** -105, a ** -105)
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
145 self.assertEqual(a ** -30, a ** -30)
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
146
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
147 self.assertEqual(0.0j ** 0, 1)
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
148
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
149 b = 5.1+2.3j
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
150 self.assertRaises(ValueError, pow, a, b, 0)
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
151
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
152 def test_boolcontext(self):
41642
a6eb6acfe04a Merged revisions 55007-55179 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41575
diff changeset
153 for i in range(100):
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
154 self.assert_(complex(random() + 1e-6, random() + 1e-6))
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
155 self.assert_(not complex(0.0, 0.0))
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
156
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
157 def test_conjugate(self):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
158 self.assertClose(complex(5.3, 9.8).conjugate(), 5.3-9.8j)
17066
2c1be7924b04 SF bug [ #409448 ] Complex division is braindead
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
159
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
160 def test_constructor(self):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
161 class OS:
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
162 def __init__(self, value): self.value = value
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
163 def __complex__(self): return self.value
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
164 class NS(object):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
165 def __init__(self, value): self.value = value
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
166 def __complex__(self): return self.value
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
167 self.assertEqual(complex(OS(1+10j)), 1+10j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
168 self.assertEqual(complex(NS(1+10j)), 1+10j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
169 self.assertRaises(TypeError, complex, OS(None))
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
170 self.assertRaises(TypeError, complex, NS(None))
17066
2c1be7924b04 SF bug [ #409448 ] Complex division is braindead
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
171
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
172 self.assertAlmostEqual(complex("1+10j"), 1+10j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
173 self.assertAlmostEqual(complex(10), 10+0j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
174 self.assertAlmostEqual(complex(10.0), 10+0j)
40644
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 39603
diff changeset
175 self.assertAlmostEqual(complex(10), 10+0j)
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
176 self.assertAlmostEqual(complex(10+0j), 10+0j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
177 self.assertAlmostEqual(complex(1,10), 1+10j)
40644
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 39603
diff changeset
178 self.assertAlmostEqual(complex(1,10), 1+10j)
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
179 self.assertAlmostEqual(complex(1,10.0), 1+10j)
40644
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 39603
diff changeset
180 self.assertAlmostEqual(complex(1,10), 1+10j)
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 39603
diff changeset
181 self.assertAlmostEqual(complex(1,10), 1+10j)
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 39603
diff changeset
182 self.assertAlmostEqual(complex(1,10.0), 1+10j)
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
183 self.assertAlmostEqual(complex(1.0,10), 1+10j)
40644
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 39603
diff changeset
184 self.assertAlmostEqual(complex(1.0,10), 1+10j)
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
185 self.assertAlmostEqual(complex(1.0,10.0), 1+10j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
186 self.assertAlmostEqual(complex(3.14+0j), 3.14+0j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
187 self.assertAlmostEqual(complex(3.14), 3.14+0j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
188 self.assertAlmostEqual(complex(314), 314.0+0j)
40644
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 39603
diff changeset
189 self.assertAlmostEqual(complex(314), 314.0+0j)
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
190 self.assertAlmostEqual(complex(3.14+0j, 0j), 3.14+0j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
191 self.assertAlmostEqual(complex(3.14, 0.0), 3.14+0j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
192 self.assertAlmostEqual(complex(314, 0), 314.0+0j)
40644
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 39603
diff changeset
193 self.assertAlmostEqual(complex(314, 0), 314.0+0j)
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
194 self.assertAlmostEqual(complex(0j, 3.14j), -3.14+0j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
195 self.assertAlmostEqual(complex(0.0, 3.14j), -3.14+0j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
196 self.assertAlmostEqual(complex(0j, 3.14), 3.14j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
197 self.assertAlmostEqual(complex(0.0, 3.14), 3.14j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
198 self.assertAlmostEqual(complex("1"), 1+0j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
199 self.assertAlmostEqual(complex("1j"), 1j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
200 self.assertAlmostEqual(complex(), 0)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
201 self.assertAlmostEqual(complex("-1"), -1)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
202 self.assertAlmostEqual(complex("+1"), +1)
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40775
diff changeset
203 self.assertAlmostEqual(complex("(1+2j)"), 1+2j)
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40775
diff changeset
204 self.assertAlmostEqual(complex("(1.3+2.2j)"), 1.3+2.2j)
17066
2c1be7924b04 SF bug [ #409448 ] Complex division is braindead
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
205
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
206 class complex2(complex): pass
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
207 self.assertAlmostEqual(complex(complex2(1+1j)), 1+1j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
208 self.assertAlmostEqual(complex(real=17, imag=23), 17+23j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
209 self.assertAlmostEqual(complex(real=17+23j), 17+23j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
210 self.assertAlmostEqual(complex(real=17+23j, imag=23), 17+46j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
211 self.assertAlmostEqual(complex(real=1+2j, imag=3+4j), -3+5j)
21593
ff70e5634ae9 SF Patch #494873 add tests for complex numbers including calls to int()/long()
Neal Norwitz <nnorwitz@gmail.com>
parents: 21401
diff changeset
212
44045
530fb9852c50 Merged revisions 59202-59211 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43284
diff changeset
213 # check that the sign of a zero in the real or imaginary part
530fb9852c50 Merged revisions 59202-59211 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43284
diff changeset
214 # is preserved when constructing from two floats. (These checks
530fb9852c50 Merged revisions 59202-59211 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43284
diff changeset
215 # are harmless on systems without support for signed zeros.)
530fb9852c50 Merged revisions 59202-59211 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43284
diff changeset
216 def split_zeros(x):
530fb9852c50 Merged revisions 59202-59211 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43284
diff changeset
217 """Function that produces different results for 0. and -0."""
530fb9852c50 Merged revisions 59202-59211 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43284
diff changeset
218 return atan2(x, -1.)
530fb9852c50 Merged revisions 59202-59211 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43284
diff changeset
219
530fb9852c50 Merged revisions 59202-59211 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43284
diff changeset
220 self.assertEqual(split_zeros(complex(1., 0.).imag), split_zeros(0.))
530fb9852c50 Merged revisions 59202-59211 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43284
diff changeset
221 self.assertEqual(split_zeros(complex(1., -0.).imag), split_zeros(-0.))
530fb9852c50 Merged revisions 59202-59211 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43284
diff changeset
222 self.assertEqual(split_zeros(complex(0., 1.).real), split_zeros(0.))
530fb9852c50 Merged revisions 59202-59211 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43284
diff changeset
223 self.assertEqual(split_zeros(complex(-0., 1.).real), split_zeros(-0.))
530fb9852c50 Merged revisions 59202-59211 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43284
diff changeset
224
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
225 c = 3.14 + 1j
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
226 self.assert_(complex(c) is c)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
227 del c
21593
ff70e5634ae9 SF Patch #494873 add tests for complex numbers including calls to int()/long()
Neal Norwitz <nnorwitz@gmail.com>
parents: 21401
diff changeset
228
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
229 self.assertRaises(TypeError, complex, "1", "1")
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
230 self.assertRaises(TypeError, complex, 1, "1")
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
231
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
232 self.assertEqual(complex(" 3.14+J "), 3.14+1j)
21594
18a70a82af15 SF Patch #497487 add test to compare conjugate of a complex number
Neal Norwitz <nnorwitz@gmail.com>
parents: 21593
diff changeset
233
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
234 # SF bug 543840: complex(string) accepts strings with \0
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
235 # Fixed in 2.3.
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
236 self.assertRaises(ValueError, complex, '1+1j\0j')
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
237
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
238 self.assertRaises(TypeError, int, 5+3j)
40644
1c26505c1de6 Rip out 'long' and 'L'-suffixed integer literals.
Guido van Rossum <guido@python.org>
parents: 39603
diff changeset
239 self.assertRaises(TypeError, int, 5+3j)
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
240 self.assertRaises(TypeError, float, 5+3j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
241 self.assertRaises(ValueError, complex, "")
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
242 self.assertRaises(TypeError, complex, None)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
243 self.assertRaises(ValueError, complex, "\0")
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40775
diff changeset
244 self.assertRaises(ValueError, complex, "3\09")
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
245 self.assertRaises(TypeError, complex, "1", "2")
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
246 self.assertRaises(TypeError, complex, "1", 42)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
247 self.assertRaises(TypeError, complex, 1, "2")
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
248 self.assertRaises(ValueError, complex, "1+")
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
249 self.assertRaises(ValueError, complex, "1+1j+1j")
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
250 self.assertRaises(ValueError, complex, "--")
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40775
diff changeset
251 self.assertRaises(ValueError, complex, "(1+2j")
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40775
diff changeset
252 self.assertRaises(ValueError, complex, "1+2j)")
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40775
diff changeset
253 self.assertRaises(ValueError, complex, "1+(2j)")
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40775
diff changeset
254 self.assertRaises(ValueError, complex, "(1+2j)123")
41821
ae691227fd34 Remove have_unicode checks and merge those tests into the
Walter Dörwald <walter@livinglogic.de>
parents: 41642
diff changeset
255 self.assertRaises(ValueError, complex, "1"*500)
ae691227fd34 Remove have_unicode checks and merge those tests into the
Walter Dörwald <walter@livinglogic.de>
parents: 41642
diff changeset
256 self.assertRaises(ValueError, complex, "x")
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
257
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
258 class EvilExc(Exception):
29668
36a17904a3ed Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 29532
diff changeset
259 pass
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
260
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
261 class evilcomplex:
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
262 def __complex__(self):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
263 raise EvilExc
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
264
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
265 self.assertRaises(EvilExc, complex, evilcomplex())
21593
ff70e5634ae9 SF Patch #494873 add tests for complex numbers including calls to int()/long()
Neal Norwitz <nnorwitz@gmail.com>
parents: 21401
diff changeset
266
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
267 class float2:
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
268 def __init__(self, value):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
269 self.value = value
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
270 def __float__(self):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
271 return self.value
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
272
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
273 self.assertAlmostEqual(complex(float2(42.)), 42)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
274 self.assertAlmostEqual(complex(real=float2(17.), imag=float2(23.)), 17+23j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
275 self.assertRaises(TypeError, complex, float2(None))
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
276
34931
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
277 class complex0(complex):
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
278 """Test usage of __complex__() when inheriting from 'complex'"""
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
279 def __complex__(self):
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
280 return 42j
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
281
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
282 class complex1(complex):
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
283 """Test usage of __complex__() with a __new__() method"""
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
284 def __new__(self, value=0j):
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
285 return complex.__new__(self, 2*value)
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
286 def __complex__(self):
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
287 return self
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
288
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
289 class complex2(complex):
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
290 """Make sure that __complex__() calls fail if anything other than a
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
291 complex is returned"""
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
292 def __complex__(self):
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
293 return None
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
294
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
295 self.assertAlmostEqual(complex(complex0(1j)), 42j)
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
296 self.assertAlmostEqual(complex(complex1(1j)), 2j)
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
297 self.assertRaises(TypeError, complex, complex2(1j))
9a1b1e1ae653 Make subclasses of int, long, complex, float, and unicode perform type
Brett Cannon <bcannon@gmail.com>
parents: 33233
diff changeset
298
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
299 def test_hash(self):
41642
a6eb6acfe04a Merged revisions 55007-55179 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41575
diff changeset
300 for x in range(-30, 30):
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
301 self.assertEqual(hash(x), hash(complex(x, 0)))
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
302 x /= 3.0 # now check against floating point
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
303 self.assertEqual(hash(x), hash(complex(x, 0.)))
21593
ff70e5634ae9 SF Patch #494873 add tests for complex numbers including calls to int()/long()
Neal Norwitz <nnorwitz@gmail.com>
parents: 21401
diff changeset
304
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
305 def test_abs(self):
41642
a6eb6acfe04a Merged revisions 55007-55179 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 41575
diff changeset
306 nums = [complex(x/3., y/7.) for x in range(-9,9) for y in range(-9,9)]
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
307 for num in nums:
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
308 self.assertAlmostEqual((num.real**2 + num.imag**2) ** 0.5, abs(num))
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
309
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
310 def test_repr(self):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
311 self.assertEqual(repr(1+6j), '(1+6j)')
33233
77d3642eb87b Fix repr for negative imaginary part. Fixes #1013908.
Martin v. Löwis <martin@v.loewis.de>
parents: 30071
diff changeset
312 self.assertEqual(repr(1-6j), '(1-6j)')
17066
2c1be7924b04 SF bug [ #409448 ] Complex division is braindead
Tim Peters <tim.peters@gmail.com>
parents:
diff changeset
313
35586
e6119d577cd3 Test case for latest complexobject fix.
Georg Brandl <georg@python.org>
parents: 34931
diff changeset
314 self.assertNotEqual(repr(-(1+0j)), '(-1+-0j)')
e6119d577cd3 Test case for latest complexobject fix.
Georg Brandl <georg@python.org>
parents: 34931
diff changeset
315
41554
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40775
diff changeset
316 self.assertEqual(1-6j,complex(repr(1-6j)))
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40775
diff changeset
317 self.assertEqual(1+6j,complex(repr(1+6j)))
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40775
diff changeset
318 self.assertEqual(-6j,complex(repr(-6j)))
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40775
diff changeset
319 self.assertEqual(6j,complex(repr(6j)))
06145fbc7ab9 Merged revisions 53952-54987 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40775
diff changeset
320
45371
7c4c46342137 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45082
diff changeset
321 self.assertEqual(repr(complex(1., INF)), "(1+inf*j)")
7c4c46342137 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45082
diff changeset
322 self.assertEqual(repr(complex(1., -INF)), "(1-inf*j)")
7c4c46342137 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45082
diff changeset
323 self.assertEqual(repr(complex(INF, 1)), "(inf+1j)")
7c4c46342137 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45082
diff changeset
324 self.assertEqual(repr(complex(-INF, INF)), "(-inf+inf*j)")
7c4c46342137 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45082
diff changeset
325 self.assertEqual(repr(complex(NAN, 1)), "(nan+1j)")
7c4c46342137 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45082
diff changeset
326 self.assertEqual(repr(complex(1, NAN)), "(1+nan*j)")
7c4c46342137 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45082
diff changeset
327 self.assertEqual(repr(complex(NAN, NAN)), "(nan+nan*j)")
7c4c46342137 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45082
diff changeset
328
7c4c46342137 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45082
diff changeset
329 self.assertEqual(repr(complex(0, INF)), "inf*j")
7c4c46342137 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45082
diff changeset
330 self.assertEqual(repr(complex(0, -INF)), "-inf*j")
7c4c46342137 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45082
diff changeset
331 self.assertEqual(repr(complex(0, NAN)), "nan*j")
7c4c46342137 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60845 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45082
diff changeset
332
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
333 def test_neg(self):
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
334 self.assertEqual(-(1+6j), -1-6j)
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
335
29867
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
336 def test_file(self):
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
337 a = 3.33+4.43j
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
338 b = 5.1+2.3j
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
339
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
340 fo = None
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
341 try:
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45371
diff changeset
342 fo = open(support.TESTFN, "w")
40775
4cdf21a0dbbc Fix most trivially-findable print statements.
Guido van Rossum <guido@python.org>
parents: 40644
diff changeset
343 print(a, b, file=fo)
29867
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
344 fo.close()
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45371
diff changeset
345 fo = open(support.TESTFN, "r")
42911
cb28e14ee808 Changes in anticipation of stricter str vs. bytes enforcement.
Guido van Rossum <guido@python.org>
parents: 42902
diff changeset
346 self.assertEqual(fo.read(), ("%s %s\n" % (a, b)))
29867
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
347 finally:
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
348 if (fo is not None) and (not fo.closed):
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
349 fo.close()
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
350 try:
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45371
diff changeset
351 os.remove(support.TESTFN)
29867
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
352 except (OSError, IOError):
199cd78d6d78 Add various test cases from SF patch 543867.
Walter Dörwald <walter@livinglogic.de>
parents: 29668
diff changeset
353 pass
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
354
47555
7d824fd131ad Merged revisions 63829-63831,63858,63865,63879,63882,63948,63970-63972,63976,63989,64014-64015,64021-64022,64063-64065,64067 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
355 def test_getnewargs(self):
7d824fd131ad Merged revisions 63829-63831,63858,63865,63879,63882,63948,63970-63972,63976,63989,64014-64015,64021-64022,64063-64065,64067 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
356 self.assertEqual((1+2j).__getnewargs__(), (1.0, 2.0))
7d824fd131ad Merged revisions 63829-63831,63858,63865,63879,63882,63948,63970-63972,63976,63989,64014-64015,64021-64022,64063-64065,64067 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
357 self.assertEqual((1-2j).__getnewargs__(), (1.0, -2.0))
7d824fd131ad Merged revisions 63829-63831,63858,63865,63879,63882,63948,63970-63972,63976,63989,64014-64015,64021-64022,64063-64065,64067 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
358 self.assertEqual((2j).__getnewargs__(), (0.0, 2.0))
7d824fd131ad Merged revisions 63829-63831,63858,63865,63879,63882,63948,63970-63972,63976,63989,64014-64015,64021-64022,64063-64065,64067 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
359 self.assertEqual((-0j).__getnewargs__(), (0.0, -0.0))
7d824fd131ad Merged revisions 63829-63831,63858,63865,63879,63882,63948,63970-63972,63976,63989,64014-64015,64021-64022,64063-64065,64067 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
360 self.assertEqual(complex(0, INF).__getnewargs__(), (0.0, INF))
7d824fd131ad Merged revisions 63829-63831,63858,63865,63879,63882,63948,63970-63972,63976,63989,64014-64015,64021-64022,64063-64065,64067 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
361 self.assertEqual(complex(INF, 0).__getnewargs__(), (INF, 0.0))
7d824fd131ad Merged revisions 63829-63831,63858,63865,63879,63882,63948,63970-63972,63976,63989,64014-64015,64021-64022,64063-64065,64067 via svnmerge from
Georg Brandl <georg@python.org>
parents: 47201
diff changeset
362
45082
d7540031b959 Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44045
diff changeset
363 if float.__getformat__("double").startswith("IEEE"):
d7540031b959 Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44045
diff changeset
364 def test_plus_minus_0j(self):
d7540031b959 Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44045
diff changeset
365 # test that -0j and 0j literals are not identified
d7540031b959 Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44045
diff changeset
366 z1, z2 = 0j, -0j
d7540031b959 Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44045
diff changeset
367 self.assertEquals(atan2(z1.imag, -1.), atan2(0., -1.))
d7540031b959 Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44045
diff changeset
368 self.assertEquals(atan2(z2.imag, -1.), atan2(-0., -1.))
d7540031b959 Merged revisions 60475-60479,60481-60488 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 44045
diff changeset
369
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
370 def test_main():
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45371
diff changeset
371 support.run_unittest(ComplexTest)
29532
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
372
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
373 if __name__ == "__main__":
2fbd256a1db2 Port test_complex.py to unittest.
Walter Dörwald <walter@livinglogic.de>
parents: 24442
diff changeset
374 test_main()