| # 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: {}".format(time.time() - t)) | |
| t = time.time() | |
| b = "hello world" | |
| for i in range(k): | |
| python_pybuffer.title2(b) | |
| print("Time used by string: {}".format(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") | |
| try: | |
| python_pybuffer.func1(1) | |
| raise RuntimeError("should throw TypeError") | |
| except TypeError as e: | |
| check("(char *buf1, int len)" in str(e)) | |
| try: | |
| python_pybuffer.func2(1) | |
| raise RuntimeError("should throw TypeError") | |
| except TypeError as e: | |
| check("(char *buf2)" in str(e)) | |
| try: | |
| python_pybuffer.func3(1) | |
| raise RuntimeError("should throw TypeError") | |
| except TypeError as e: | |
| check("(const char *buf3, int len)" in str(e)) | |
| try: | |
| python_pybuffer.func4(1) | |
| raise RuntimeError("should throw TypeError") | |
| except TypeError as e: | |
| check("(const char *buf4)" in str(e)) |