Merge branch 'gmazzamuto-pybuf_test'
* gmazzamuto-pybuf_test: pybuffer: don't use the old deprecated buffer protocol for Python 3 Enable test case for python_pybuf
This commit is contained in:
commit
33f3dbb005
3 changed files with 53 additions and 19 deletions
|
|
@ -66,6 +66,7 @@ CPP_TEST_CASES += \
|
|||
python_moduleimport \
|
||||
python_overload_simple_cast \
|
||||
python_pickle \
|
||||
python_pybuf \
|
||||
python_pythoncode \
|
||||
python_richcompare \
|
||||
python_strict_unicode \
|
||||
|
|
@ -77,7 +78,6 @@ CPP_TEST_CASES += \
|
|||
|
||||
# li_std_carray
|
||||
# director_profile
|
||||
# python_pybuf
|
||||
|
||||
CPP11_TEST_CASES = \
|
||||
cpp11_hash_tables \
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
# run:
|
||||
# python python_pybuf_runme3.py benchmark
|
||||
# python python_pybuf_runme.py benchmark
|
||||
# for the benchmark, other wise the test case will be run
|
||||
import python_pybuf
|
||||
import sys
|
||||
|
||||
|
||||
if len(sys.argv) >= 2 and sys.argv[1] == "benchmark":
|
||||
# run the benchmark
|
||||
import time
|
||||
|
|
@ -11,31 +13,31 @@ if len(sys.argv) >= 2 and sys.argv[1] == "benchmark":
|
|||
t = time.time()
|
||||
a = bytearray(b'hello world')
|
||||
for i in range(k):
|
||||
pybuf.title1(a)
|
||||
print("Time used by bytearray:", time.time() - t)
|
||||
python_pybuf.title1(a)
|
||||
print "Time used by bytearray:", time.time() - t
|
||||
|
||||
t = time.time()
|
||||
b = 'hello world'
|
||||
for i in range(k):
|
||||
pybuf.title2(b)
|
||||
print("Time used by string:", time.time() - t)
|
||||
python_pybuf.title2(b)
|
||||
print "Time used by string:", time.time() - t
|
||||
else:
|
||||
# run the test case
|
||||
buf1 = bytearray(10)
|
||||
buf2 = bytearray(50)
|
||||
|
||||
pybuf.func1(buf1)
|
||||
python_pybuf.func1(buf1)
|
||||
assert buf1 == b'a' * 10
|
||||
|
||||
pybuf.func2(buf2)
|
||||
python_pybuf.func2(buf2)
|
||||
assert buf2.startswith(b"Hello world!\x00")
|
||||
|
||||
count = pybuf.func3(buf2)
|
||||
count = python_pybuf.func3(buf2)
|
||||
assert count == 10 # number of alpha and number in 'Hello world!'
|
||||
|
||||
length = pybuf.func4(buf2)
|
||||
length = python_pybuf.func4(buf2)
|
||||
assert length == 12
|
||||
|
||||
buf3 = bytearray(b"hello")
|
||||
pybuf.title1(buf3)
|
||||
python_pybuf.title1(buf3)
|
||||
assert buf3 == b'Hello'
|
||||
|
|
@ -13,9 +13,17 @@
|
|||
*/
|
||||
|
||||
%define %pybuffer_mutable_binary(TYPEMAP, SIZE)
|
||||
%typemap(in) (TYPEMAP, SIZE)
|
||||
(int res, Py_ssize_t size = 0, void *buf = 0) {
|
||||
%typemap(in) (TYPEMAP, SIZE) {
|
||||
int res; Py_ssize_t size = 0; void *buf = 0;
|
||||
%#if PY_VERSION_HEX < 0x03000000
|
||||
res = PyObject_AsWriteBuffer($input, &buf, &size);
|
||||
%#else
|
||||
Py_buffer view;
|
||||
res = PyObject_GetBuffer($input, &view, PyBUF_WRITABLE);
|
||||
size = view.len;
|
||||
buf = view.buf;
|
||||
PyBuffer_Release(&view);
|
||||
%#endif
|
||||
if (res<0) {
|
||||
PyErr_Clear();
|
||||
%argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum);
|
||||
|
|
@ -39,9 +47,17 @@
|
|||
*/
|
||||
|
||||
%define %pybuffer_mutable_string(TYPEMAP)
|
||||
%typemap(in) (TYPEMAP)
|
||||
(int res, Py_ssize_t size = 0, void *buf = 0) {
|
||||
%typemap(in) (TYPEMAP) {
|
||||
int res; Py_ssize_t size = 0; void *buf = 0;
|
||||
%#if PY_VERSION_HEX < 0x03000000
|
||||
res = PyObject_AsWriteBuffer($input, &buf, &size);
|
||||
%#else
|
||||
Py_buffer view;
|
||||
res = PyObject_GetBuffer($input, &view, PyBUF_WRITABLE);
|
||||
size = view.len;
|
||||
buf = view.buf;
|
||||
PyBuffer_Release(&view);
|
||||
%#endif
|
||||
if (res<0) {
|
||||
PyErr_Clear();
|
||||
%argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum);
|
||||
|
|
@ -65,9 +81,17 @@
|
|||
*/
|
||||
|
||||
%define %pybuffer_binary(TYPEMAP, SIZE)
|
||||
%typemap(in) (TYPEMAP, SIZE)
|
||||
(int res, Py_ssize_t size = 0, const void *buf = 0) {
|
||||
%typemap(in) (TYPEMAP, SIZE) {
|
||||
int res; Py_ssize_t size = 0; const void *buf = 0;
|
||||
%#if PY_VERSION_HEX < 0x03000000
|
||||
res = PyObject_AsReadBuffer($input, &buf, &size);
|
||||
%#else
|
||||
Py_buffer view;
|
||||
res = PyObject_GetBuffer($input, &view, PyBUF_CONTIG_RO);
|
||||
size = view.len;
|
||||
buf = view.buf;
|
||||
PyBuffer_Release(&view);
|
||||
%#endif
|
||||
if (res<0) {
|
||||
PyErr_Clear();
|
||||
%argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum);
|
||||
|
|
@ -93,9 +117,17 @@
|
|||
*/
|
||||
|
||||
%define %pybuffer_string(TYPEMAP)
|
||||
%typemap(in) (TYPEMAP)
|
||||
(int res, Py_ssize_t size = 0, const void *buf = 0) {
|
||||
%typemap(in) (TYPEMAP) {
|
||||
int res; Py_ssize_t size = 0; const void *buf = 0;
|
||||
%#if PY_VERSION_HEX < 0x03000000
|
||||
res = PyObject_AsReadBuffer($input, &buf, &size);
|
||||
%#else
|
||||
Py_buffer view;
|
||||
res = PyObject_GetBuffer($input, &view, PyBUF_CONTIG_RO);
|
||||
size = view.len;
|
||||
buf = view.buf;
|
||||
PyBuffer_Release(&view);
|
||||
%#endif
|
||||
if (res<0) {
|
||||
%argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue