| # 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)) |