Author: Faye Zhao <[email protected]>
Branch: 
Changeset: r80659:1294e75456b2
Date: 2015-11-13 00:18 +0000
http://bitbucket.org/pypy/pypy/changeset/1294e75456b2/

Log:    test_pystrtod.py edited online with Bitbucket

diff --git a/pypy/module/cpyext/test/test_pystrtod.py 
b/pypy/module/cpyext/test/test_pystrtod.py
--- a/pypy/module/cpyext/test/test_pystrtod.py
+++ b/pypy/module/cpyext/test/test_pystrtod.py
@@ -1,5 +1,6 @@
 import math
 
+from pypy.module.cpyext import pystrtod
 from pypy.module.cpyext.test.test_api import BaseApiTest
 from rpython.rtyper.lltypesystem import rffi
 from rpython.rtyper.lltypesystem import lltype
@@ -91,3 +92,76 @@
         api.PyErr_Clear()
         rffi.free_charp(s)
         lltype.free(endp, flavor='raw')
+
+
+class TestPyOS_double_to_string(BaseApiTest):
+
+    def test_format_code(self, api):
+        ptype = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
+        r = api.PyOS_double_to_string(150.0, 'e', 1, 0, ptype)
+        assert '1.5e+02' == rffi.charp2str(r)
+        type_value = rffi.cast(lltype.Signed, ptype[0])
+        assert pystrtod.Py_DTST_FINITE == type_value
+        rffi.free_charp(r)
+        lltype.free(ptype, flavor='raw')
+
+    def test_precision(self, api):
+        ptype = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
+        r = api.PyOS_double_to_string(3.14159269397, 'g', 5, 0, ptype)
+        assert '3.1416' == rffi.charp2str(r)
+        type_value = rffi.cast(lltype.Signed, ptype[0])
+        assert pystrtod.Py_DTST_FINITE == type_value
+        rffi.free_charp(r)
+        lltype.free(ptype, flavor='raw')
+
+    def test_flags_sign(self, api):
+        ptype = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
+        r = api.PyOS_double_to_string(-3.14, 'g', 3, 1, ptype)
+        assert '-3.14' == rffi.charp2str(r)
+        type_value = rffi.cast(lltype.Signed, ptype[0])
+        assert pystrtod.Py_DTST_FINITE == type_value
+        rffi.free_charp(r)
+        lltype.free(ptype, flavor='raw')
+
+    def test_flags_add_dot_0(self, api):
+        ptype = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
+        r = api.PyOS_double_to_string(3, 'g', 5, 2, ptype)
+        assert '3.0' == rffi.charp2str(r)
+        type_value = rffi.cast(lltype.Signed, ptype[0])
+        assert pystrtod.Py_DTST_FINITE == type_value
+        rffi.free_charp(r)
+        lltype.free(ptype, flavor='raw')
+
+    def test_flags_alt(self, api):
+        ptype = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
+        r = api.PyOS_double_to_string(314., 'g', 3, 4, ptype)
+        assert '314.' == rffi.charp2str(r)
+        type_value = rffi.cast(lltype.Signed, ptype[0])
+        assert pystrtod.Py_DTST_FINITE == type_value
+        rffi.free_charp(r)
+        lltype.free(ptype, flavor='raw')
+
+    def test_ptype_nan(self, api):
+        ptype = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
+        r = api.PyOS_double_to_string(float('nan'), 'g', 3, 4, ptype)
+        assert 'nan' == rffi.charp2str(r)
+        type_value = rffi.cast(lltype.Signed, ptype[0])
+        assert pystrtod.Py_DTST_NAN == type_value
+        rffi.free_charp(r)
+        lltype.free(ptype, flavor='raw')
+
+    def test_ptype_infinity(self, api):
+        ptype = lltype.malloc(rffi.INTP.TO, 1, flavor='raw')
+        r = api.PyOS_double_to_string(1e200 * 1e200, 'g', 0, 0, ptype)
+        assert 'inf' == rffi.charp2str(r)
+        type_value = rffi.cast(lltype.Signed, ptype[0])
+        assert pystrtod.Py_DTST_INFINITE == type_value
+        rffi.free_charp(r)
+        lltype.free(ptype, flavor='raw')
+
+    def test_ptype_null(self, api):
+        ptype = lltype.nullptr(rffi.INTP.TO)
+        r = api.PyOS_double_to_string(3.14, 'g', 3, 0, ptype)
+        assert '3.14' == rffi.charp2str(r)
+        assert ptype == lltype.nullptr(rffi.INTP.TO)
+        rffi.free_charp(r)
\ No newline at end of file
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to