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_moduleimport \
|
||||||
python_overload_simple_cast \
|
python_overload_simple_cast \
|
||||||
python_pickle \
|
python_pickle \
|
||||||
|
python_pybuf \
|
||||||
python_pythoncode \
|
python_pythoncode \
|
||||||
python_richcompare \
|
python_richcompare \
|
||||||
python_strict_unicode \
|
python_strict_unicode \
|
||||||
|
|
@ -77,7 +78,6 @@ CPP_TEST_CASES += \
|
||||||
|
|
||||||
# li_std_carray
|
# li_std_carray
|
||||||
# director_profile
|
# director_profile
|
||||||
# python_pybuf
|
|
||||||
|
|
||||||
CPP11_TEST_CASES = \
|
CPP11_TEST_CASES = \
|
||||||
cpp11_hash_tables \
|
cpp11_hash_tables \
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
# run:
|
# run:
|
||||||
# python python_pybuf_runme3.py benchmark
|
# python python_pybuf_runme.py benchmark
|
||||||
# for the benchmark, other wise the test case will be run
|
# for the benchmark, other wise the test case will be run
|
||||||
import python_pybuf
|
import python_pybuf
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
||||||
if len(sys.argv) >= 2 and sys.argv[1] == "benchmark":
|
if len(sys.argv) >= 2 and sys.argv[1] == "benchmark":
|
||||||
# run the benchmark
|
# run the benchmark
|
||||||
import time
|
import time
|
||||||
|
|
@ -11,31 +13,31 @@ if len(sys.argv) >= 2 and sys.argv[1] == "benchmark":
|
||||||
t = time.time()
|
t = time.time()
|
||||||
a = bytearray(b'hello world')
|
a = bytearray(b'hello world')
|
||||||
for i in range(k):
|
for i in range(k):
|
||||||
pybuf.title1(a)
|
python_pybuf.title1(a)
|
||||||
print("Time used by bytearray:", time.time() - t)
|
print "Time used by bytearray:", time.time() - t
|
||||||
|
|
||||||
t = time.time()
|
t = time.time()
|
||||||
b = 'hello world'
|
b = 'hello world'
|
||||||
for i in range(k):
|
for i in range(k):
|
||||||
pybuf.title2(b)
|
python_pybuf.title2(b)
|
||||||
print("Time used by string:", time.time() - t)
|
print "Time used by string:", time.time() - t
|
||||||
else:
|
else:
|
||||||
# run the test case
|
# run the test case
|
||||||
buf1 = bytearray(10)
|
buf1 = bytearray(10)
|
||||||
buf2 = bytearray(50)
|
buf2 = bytearray(50)
|
||||||
|
|
||||||
pybuf.func1(buf1)
|
python_pybuf.func1(buf1)
|
||||||
assert buf1 == b'a' * 10
|
assert buf1 == b'a' * 10
|
||||||
|
|
||||||
pybuf.func2(buf2)
|
python_pybuf.func2(buf2)
|
||||||
assert buf2.startswith(b"Hello world!\x00")
|
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!'
|
assert count == 10 # number of alpha and number in 'Hello world!'
|
||||||
|
|
||||||
length = pybuf.func4(buf2)
|
length = python_pybuf.func4(buf2)
|
||||||
assert length == 12
|
assert length == 12
|
||||||
|
|
||||||
buf3 = bytearray(b"hello")
|
buf3 = bytearray(b"hello")
|
||||||
pybuf.title1(buf3)
|
python_pybuf.title1(buf3)
|
||||||
assert buf3 == b'Hello'
|
assert buf3 == b'Hello'
|
||||||
|
|
@ -13,9 +13,17 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
%define %pybuffer_mutable_binary(TYPEMAP, SIZE)
|
%define %pybuffer_mutable_binary(TYPEMAP, SIZE)
|
||||||
%typemap(in) (TYPEMAP, SIZE)
|
%typemap(in) (TYPEMAP, SIZE) {
|
||||||
(int res, Py_ssize_t size = 0, void *buf = 0) {
|
int res; Py_ssize_t size = 0; void *buf = 0;
|
||||||
|
%#if PY_VERSION_HEX < 0x03000000
|
||||||
res = PyObject_AsWriteBuffer($input, &buf, &size);
|
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) {
|
if (res<0) {
|
||||||
PyErr_Clear();
|
PyErr_Clear();
|
||||||
%argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum);
|
%argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum);
|
||||||
|
|
@ -39,9 +47,17 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
%define %pybuffer_mutable_string(TYPEMAP)
|
%define %pybuffer_mutable_string(TYPEMAP)
|
||||||
%typemap(in) (TYPEMAP)
|
%typemap(in) (TYPEMAP) {
|
||||||
(int res, Py_ssize_t size = 0, void *buf = 0) {
|
int res; Py_ssize_t size = 0; void *buf = 0;
|
||||||
|
%#if PY_VERSION_HEX < 0x03000000
|
||||||
res = PyObject_AsWriteBuffer($input, &buf, &size);
|
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) {
|
if (res<0) {
|
||||||
PyErr_Clear();
|
PyErr_Clear();
|
||||||
%argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum);
|
%argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum);
|
||||||
|
|
@ -65,9 +81,17 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
%define %pybuffer_binary(TYPEMAP, SIZE)
|
%define %pybuffer_binary(TYPEMAP, SIZE)
|
||||||
%typemap(in) (TYPEMAP, SIZE)
|
%typemap(in) (TYPEMAP, SIZE) {
|
||||||
(int res, Py_ssize_t size = 0, const void *buf = 0) {
|
int res; Py_ssize_t size = 0; const void *buf = 0;
|
||||||
|
%#if PY_VERSION_HEX < 0x03000000
|
||||||
res = PyObject_AsReadBuffer($input, &buf, &size);
|
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) {
|
if (res<0) {
|
||||||
PyErr_Clear();
|
PyErr_Clear();
|
||||||
%argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum);
|
%argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum);
|
||||||
|
|
@ -93,9 +117,17 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
%define %pybuffer_string(TYPEMAP)
|
%define %pybuffer_string(TYPEMAP)
|
||||||
%typemap(in) (TYPEMAP)
|
%typemap(in) (TYPEMAP) {
|
||||||
(int res, Py_ssize_t size = 0, const void *buf = 0) {
|
int res; Py_ssize_t size = 0; const void *buf = 0;
|
||||||
|
%#if PY_VERSION_HEX < 0x03000000
|
||||||
res = PyObject_AsReadBuffer($input, &buf, &size);
|
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) {
|
if (res<0) {
|
||||||
%argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum);
|
%argument_fail(res, "(TYPEMAP, SIZE)", $symname, $argnum);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue