summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_complex.py
diff options
context:
space:
mode:
authorMark Dickinson <dickinsm@gmail.com>2009-04-25 09:47:00 (GMT)
committerMark Dickinson <dickinsm@gmail.com>2009-04-25 09:47:00 (GMT)
commit0a6501bf56f559d9319baecb4e99732bd1b41908 (patch)
tree3c96c71c1f1de919e18f6b717216af1876c49b5d /Lib/test/test_complex.py
parent5083dc552b4e7026c2f405b37d7691131bc96955 (diff)
downloadcpython-0a6501bf56f559d9319baecb4e99732bd1b41908.zip
cpython-0a6501bf56f559d9319baecb4e99732bd1b41908.tar.gz
cpython-0a6501bf56f559d9319baecb4e99732bd1b41908.tar.bz2
Fix typo in complex parsing code; expand tests.
Diffstat (limited to 'Lib/test/test_complex.py')
-rw-r--r--Lib/test/test_complex.py22
1 files changed, 19 insertions, 3 deletions
diff --git a/Lib/test/test_complex.py b/Lib/test/test_complex.py
index 1ff710f..1702452 100644
--- a/Lib/test/test_complex.py
+++ b/Lib/test/test_complex.py
@@ -432,10 +432,11 @@ class ComplexTest(unittest.TestCase):
@unittest.skipUnless(float.__getformat__("double").startswith("IEEE"),
"test requires IEEE 754 doubles")
def test_repr_roundtrip(self):
- # complex(repr(z)) should recover z exactly, even for complex numbers
- # involving an infinity, nan, or negative zero
- vals = [0.0, 1e-200, 0.0123, 3.1415, 1e50, INF, NAN]
+ vals = [0.0, 1e-500, 1e-315, 1e-200, 0.0123, 3.1415, 1e50, INF, NAN]
vals += [-v for v in vals]
+
+ # complex(repr(z)) should recover z exactly, even for complex
+ # numbers involving an infinity, nan, or negative zero
for x in vals:
for y in vals:
z = complex(x, y)
@@ -443,6 +444,21 @@ class ComplexTest(unittest.TestCase):
self.assertFloatsAreIdentical(z.real, roundtrip.real)
self.assertFloatsAreIdentical(z.imag, roundtrip.imag)
+ # if we predefine some constants, then eval(repr(z)) should
+ # also work, except that it might change the sign of zeros
+ inf, nan = float('inf'), float('nan')
+ infj, nanj = complex(0.0, inf), complex(0.0, nan)
+ for x in vals:
+ for y in vals:
+ z = complex(x, y)
+ roundtrip = eval(repr(z))
+ # adding 0.0 has no effect beside changing -0.0 to 0.0
+ self.assertFloatsAreIdentical(0.0 + z.real,
+ 0.0 + roundtrip.real)
+ self.assertFloatsAreIdentical(0.0 + z.imag,
+ 0.0 + roundtrip.imag)
+
+
def test_main():
test_support.run_unittest(ComplexTest)