Remove asserts from Python testcase
Also rename testcase python_pybuf to python_pybuffer.
This commit is contained in:
parent
4313c2c168
commit
fdd2bcf0e6
3 changed files with 19 additions and 16 deletions
|
|
@ -66,7 +66,7 @@ CPP_TEST_CASES += \
|
|||
python_moduleimport \
|
||||
python_overload_simple_cast \
|
||||
python_pickle \
|
||||
python_pybuf \
|
||||
python_pybuffer \
|
||||
python_pythoncode \
|
||||
python_richcompare \
|
||||
python_strict_unicode \
|
||||
|
|
|
|||
46
Examples/test-suite/python/python_pybuffer_runme.py
Normal file
46
Examples/test-suite/python/python_pybuffer_runme.py
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# run:
|
||||
# python python_pybuffer_runme.py benchmark
|
||||
# for the benchmark, other wise the test case will be run
|
||||
import python_pybuffer
|
||||
import sys
|
||||
|
||||
def check(flag):
|
||||
if not flag:
|
||||
raise RuntimeError("Test failed")
|
||||
|
||||
if len(sys.argv) >= 2 and sys.argv[1] == "benchmark":
|
||||
# run the benchmark
|
||||
import time
|
||||
k = 1000000 # number of times to execute the functions
|
||||
|
||||
t = time.time()
|
||||
a = bytearray(b'hello world')
|
||||
for i in range(k):
|
||||
python_pybuffer.title1(a)
|
||||
print "Time used by bytearray:", time.time() - t
|
||||
|
||||
t = time.time()
|
||||
b = 'hello world'
|
||||
for i in range(k):
|
||||
python_pybuffer.title2(b)
|
||||
print "Time used by string:", time.time() - t
|
||||
else:
|
||||
# run the test case
|
||||
buf1 = bytearray(10)
|
||||
buf2 = bytearray(50)
|
||||
|
||||
python_pybuffer.func1(buf1)
|
||||
check(buf1 == b'a' * 10)
|
||||
|
||||
python_pybuffer.func2(buf2)
|
||||
check(buf2.startswith(b"Hello world!\x00"))
|
||||
|
||||
count = python_pybuffer.func3(buf2)
|
||||
check(count == 10) # number of alpha and number in 'Hello world!'
|
||||
|
||||
length = python_pybuffer.func4(buf2)
|
||||
check(length == 12)
|
||||
|
||||
buf3 = bytearray(b"hello")
|
||||
python_pybuffer.title1(buf3)
|
||||
check(buf3 == b'Hello')
|
||||
64
Examples/test-suite/python_pybuffer.i
Normal file
64
Examples/test-suite/python_pybuffer.i
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
%module python_pybuffer
|
||||
%include <pybuffer.i>
|
||||
%include <cstring.i>
|
||||
/*functions for the test case*/
|
||||
%pybuffer_mutable_binary(char *buf1, int len);
|
||||
%pybuffer_mutable_string(char *buf2);
|
||||
%pybuffer_binary(const char *buf3, int len);
|
||||
%pybuffer_string(const char *buf4);
|
||||
|
||||
%inline %{
|
||||
void func1(char *buf1, int len)
|
||||
{
|
||||
int i;
|
||||
for (i=0; i<len; ++i)
|
||||
buf1[i] = 'a';
|
||||
return;
|
||||
}
|
||||
void func2(char *buf2)
|
||||
{
|
||||
strcpy(buf2, "Hello world!");
|
||||
}
|
||||
int func3(const char *buf3, int len)
|
||||
{
|
||||
int count = 0;
|
||||
int i;
|
||||
for(i=0; i<len; ++i)
|
||||
if (isalnum(buf3[i]))
|
||||
++count;
|
||||
return count;
|
||||
}
|
||||
int func4(const char *buf4)
|
||||
{
|
||||
return strlen(buf4);
|
||||
}
|
||||
%}
|
||||
|
||||
/*functions for the benchmark*/
|
||||
%pybuffer_mutable_string(char *str1);
|
||||
%cstring_mutable(char *str2);
|
||||
|
||||
%inline %{
|
||||
void title(char *str) {
|
||||
int outword = 1;
|
||||
while(*str) {
|
||||
if (isalnum(*str)) {
|
||||
if (outword) {
|
||||
outword = 0;
|
||||
*str = toupper(*str);
|
||||
}
|
||||
}
|
||||
else {
|
||||
outword = 0;
|
||||
}
|
||||
str++;
|
||||
}
|
||||
}
|
||||
|
||||
void title1(char *str1) {
|
||||
title(str1);
|
||||
}
|
||||
void title2(char *str2) {
|
||||
title(str2);
|
||||
}
|
||||
%}
|
||||
Loading…
Reference in a new issue