From bf9f79b185719e1471d03983e40a88f49d6e0ffc Mon Sep 17 00:00:00 2001 From: Mark Dickinson Date: Wed, 30 Jun 2010 10:55:51 +0000 Subject: [PATCH] Tests for Python 3.1's treatment of negated imaginary literals. --- Lib/test/test_complex.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Lib/test/test_complex.py b/Lib/test/test_complex.py index a84e9495bb..f28bb6902c 100644 --- a/Lib/test/test_complex.py +++ b/Lib/test/test_complex.py @@ -407,6 +407,25 @@ class ComplexTest(unittest.TestCase): self.assertEquals(atan2(z1.imag, -1.), atan2(0., -1.)) self.assertEquals(atan2(z2.imag, -1.), atan2(-0., -1.)) + @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"), + "test requires IEEE 754 doubles") + def test_negated_imaginary_literal(self): + z0 = -0j + z1 = -7j + z2 = -1e1000j + # This behaviour is actually incorrect: the real part of a negated + # imaginary literal should be -0.0, not 0.0. It's fixed in Python 3.2. + # However, the behaviour is already out in the wild in Python 2.x and + # Python <= 3.1.2, and it would be too disruptive to change it in a + # bugfix release, so we call it a 'feature' of Python 3.1, and test to + # ensure that the behaviour remains consistent across 3.1.x releases. + self.assertFloatsAreIdentical(z0.real, 0.0) + self.assertFloatsAreIdentical(z0.imag, -0.0) + self.assertFloatsAreIdentical(z1.real, 0.0) + self.assertFloatsAreIdentical(z1.imag, -7.0) + self.assertFloatsAreIdentical(z2.real, 0.0) + self.assertFloatsAreIdentical(z2.imag, -INF) + @unittest.skipUnless(float.__getformat__("double").startswith("IEEE"), "test requires IEEE 754 doubles") def test_overflow(self): -- 2.40.0