diff options
-rw-r--r-- | Lib/test/test_complex.py | 8 | ||||
-rw-r--r-- | Objects/complexobject.c | 3 |
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 |