lib-python.2.7.test.test_ascii_formatd.py Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jython Show documentation
Show all versions of jython Show documentation
Jython is an implementation of the high-level, dynamic, object-oriented
language Python written in 100% Pure Java, and seamlessly integrated with
the Java platform. It thus allows you to run Python on any Java platform.
# PyOS_ascii_formatd is deprecated and not called from anywhere in
# Python itself. So this module is the only place it gets tested.
# Test that it works, and test that it's deprecated.
import unittest
from test.test_support import check_warnings, run_unittest, import_module
# Skip tests if _ctypes module does not exist
import_module('_ctypes')
from ctypes import pythonapi, create_string_buffer, sizeof, byref, c_double
PyOS_ascii_formatd = pythonapi.PyOS_ascii_formatd
class FormatDeprecationTests(unittest.TestCase):
def test_format_deprecation(self):
buf = create_string_buffer(' ' * 100)
with check_warnings(('PyOS_ascii_formatd is deprecated',
DeprecationWarning)):
PyOS_ascii_formatd(byref(buf), sizeof(buf), '%+.10f',
c_double(10.0))
self.assertEqual(buf.value, '+10.0000000000')
class FormatTests(unittest.TestCase):
# ensure that, for the restricted set of format codes,
# %-formatting returns the same values os PyOS_ascii_formatd
def test_format(self):
buf = create_string_buffer(' ' * 100)
tests = [
('%f', 100.0),
('%g', 100.0),
('%#g', 100.0),
('%#.2g', 100.0),
('%#.2g', 123.4567),
('%#.2g', 1.234567e200),
('%e', 1.234567e200),
('%e', 1.234),
('%+e', 1.234),
('%-e', 1.234),
]
with check_warnings(('PyOS_ascii_formatd is deprecated',
DeprecationWarning)):
for format, val in tests:
PyOS_ascii_formatd(byref(buf), sizeof(buf), format,
c_double(val))
self.assertEqual(buf.value, format % val)
def test_main():
run_unittest(FormatDeprecationTests, FormatTests)
if __name__ == '__main__':
test_main()