summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_complex.py8
-rw-r--r--Objects/complexobject.c3
2 files changed, 10 insertions, 1 deletions
diff --git a/Lib/test/test_complex.py b/Lib/test/test_complex.py
index 5f623a1..9a33101 100644
--- a/Lib/test/test_complex.py
+++ b/Lib/test/test_complex.py
@@ -373,6 +373,14 @@ class ComplexTest(unittest.TestCase):
except (OSError, IOError):
pass
+ def test_getnewargs(self):
+ self.assertEqual((1+2j).__getnewargs__(), (1.0, 2.0))
+ self.assertEqual((1-2j).__getnewargs__(), (1.0, -2.0))
+ self.assertEqual((2j).__getnewargs__(), (0.0, 2.0))
+ self.assertEqual((-0j).__getnewargs__(), (0.0, -0.0))
+ self.assertEqual(complex(0, INF).__getnewargs__(), (0.0, INF))
+ self.assertEqual(complex(INF, 0).__getnewargs__(), (INF, 0.0))
+
if float.__getformat__("double").startswith("IEEE"):
def test_plus_minus_0j(self):
# test that -0j and 0j literals are not identified
diff --git a/Objects/complexobject.c b/Objects/complexobject.c
index e22c200..6110b99 100644
--- a/Objects/complexobject.c
+++ b/Objects/complexobject.c
@@ -822,7 +822,8 @@ PyDoc_STRVAR(complex_conjugate_doc,
static PyObject *
complex_getnewargs(PyComplexObject *v)
{
- return Py_BuildValue("(D)", &v->cval);
+ Py_complex c = v->cval;
+ return Py_BuildValue("(dd)", c.real, c.imag);
}
#if 0