MCPcopy Index your code
hub / github.com/python/cpython / test_from_format

Method test_from_format

Lib/test/test_bytes.py:1210–1322  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1208
1209 # Test PyBytes_FromFormat()
1210 def test_from_format(self):
1211 ctypes = import_helper.import_module('ctypes')
1212 _testcapi = import_helper.import_module('_testcapi')
1213 from ctypes import pythonapi, py_object
1214 from ctypes import (
1215 c_int, c_uint,
1216 c_long, c_ulong,
1217 c_size_t, c_ssize_t,
1218 c_char_p)
1219
1220 PyBytes_FromFormat = pythonapi.PyBytes_FromFormat
1221 PyBytes_FromFormat.argtypes = (c_char_p,)
1222 PyBytes_FromFormat.restype = py_object
1223
1224 # basic tests
1225 self.assertEqual(PyBytes_FromFormat(b'format'),
1226 b'format')
1227 self.assertEqual(PyBytes_FromFormat(b'Hello %s !', b'world'),
1228 b'Hello world !')
1229
1230 # test formatters
1231 self.assertEqual(PyBytes_FromFormat(b'c=%c', c_int(0)),
1232 b'c=\0')
1233 self.assertEqual(PyBytes_FromFormat(b'c=%c', c_int(ord('@'))),
1234 b'c=@')
1235 self.assertEqual(PyBytes_FromFormat(b'c=%c', c_int(255)),
1236 b'c=\xff')
1237 self.assertEqual(PyBytes_FromFormat(b'd=%d ld=%ld zd=%zd',
1238 c_int(1), c_long(2),
1239 c_size_t(3)),
1240 b'd=1 ld=2 zd=3')
1241 self.assertEqual(PyBytes_FromFormat(b'd=%d ld=%ld zd=%zd',
1242 c_int(-1), c_long(-2),
1243 c_size_t(-3)),
1244 b'd=-1 ld=-2 zd=-3')
1245 self.assertEqual(PyBytes_FromFormat(b'u=%u lu=%lu zu=%zu',
1246 c_uint(123), c_ulong(456),
1247 c_size_t(789)),
1248 b'u=123 lu=456 zu=789')
1249 self.assertEqual(PyBytes_FromFormat(b'i=%i', c_int(123)),
1250 b'i=123')
1251 self.assertEqual(PyBytes_FromFormat(b'i=%i', c_int(-123)),
1252 b'i=-123')
1253 self.assertEqual(PyBytes_FromFormat(b'x=%x', c_int(0xabc)),
1254 b'x=abc')
1255
1256 sizeof_ptr = ctypes.sizeof(c_char_p)
1257
1258 if os.name == 'nt':
1259 # Windows (MSCRT)
1260 ptr_format = '0x%0{}X'.format(2 * sizeof_ptr)
1261 def ptr_formatter(ptr):
1262 return (ptr_format % ptr)
1263 else:
1264 # UNIX (glibc)
1265 def ptr_formatter(ptr):
1266 return '%#x' % ptr
1267

Callers

nothing calls this directly

Calls 11

c_intClass · 0.90
c_longClass · 0.90
c_uintClass · 0.90
c_ulongClass · 0.90
c_char_pClass · 0.90
sizeofMethod · 0.80
import_moduleMethod · 0.45
assertEqualMethod · 0.45
formatMethod · 0.45
encodeMethod · 0.45
assertRaisesMethod · 0.45

Tested by

no test coverage detected