Issue #7295: Do not use a hardcoded file name in test_tarfile.
[python.git] / Lib / test / test_ascii_formatd.py
blob5ee84fa6dfeb68cd3ad6e0acc74ce09d4434b641
1 # PyOS_ascii_formatd is deprecated and not called from anywhere in
2 # Python itself. So this module is the only place it gets tested.
3 # Test that it works, and test that it's deprecated.
5 import unittest
6 from test_support import check_warnings, run_unittest, cpython_only
9 class FormatDeprecationTests(unittest.TestCase):
11 @cpython_only
12 def testFormatDeprecation(self):
13 # delay importing ctypes until we know we're in CPython
14 from ctypes import (pythonapi, create_string_buffer, sizeof, byref,
15 c_double)
16 PyOS_ascii_formatd = pythonapi.PyOS_ascii_formatd
17 buf = create_string_buffer(' ' * 100)
19 with check_warnings() as w:
20 PyOS_ascii_formatd(byref(buf), sizeof(buf), '%+.10f',
21 c_double(10.0))
22 self.assertEqual(buf.value, '+10.0000000000')
24 self.assertEqual(w.category, DeprecationWarning)
26 class FormatTests(unittest.TestCase):
27 # ensure that, for the restricted set of format codes,
28 # %-formatting returns the same values os PyOS_ascii_formatd
29 @cpython_only
30 def testFormat(self):
31 # delay importing ctypes until we know we're in CPython
32 from ctypes import (pythonapi, create_string_buffer, sizeof, byref,
33 c_double)
34 PyOS_ascii_formatd = pythonapi.PyOS_ascii_formatd
35 buf = create_string_buffer(' ' * 100)
37 tests = [
38 ('%f', 100.0),
39 ('%g', 100.0),
40 ('%#g', 100.0),
41 ('%#.2g', 100.0),
42 ('%#.2g', 123.4567),
43 ('%#.2g', 1.234567e200),
44 ('%e', 1.234567e200),
45 ('%e', 1.234),
46 ('%+e', 1.234),
47 ('%-e', 1.234),
50 with check_warnings():
51 for format, val in tests:
52 PyOS_ascii_formatd(byref(buf), sizeof(buf), format,
53 c_double(val))
54 self.assertEqual(buf.value, format % val)
57 def test_main():
58 run_unittest(FormatDeprecationTests, FormatTests)
60 if __name__ == '__main__':
61 test_main()