107 lines
2.9 KiB
Python
107 lines
2.9 KiB
Python
import stdio
|
|
import t, c
|
|
import string
|
|
|
|
|
|
# ============================================================
|
|
# string_test - string.py 库函数测试
|
|
#
|
|
# 测试 strlen / strcmp / strncmp / atoi / strchr / strstr
|
|
# ============================================================
|
|
|
|
|
|
def test_strlen():
|
|
stdio.printf("--- Test 1: strlen ---\n")
|
|
|
|
l1: t.CSizeT = string.strlen("Hello")
|
|
stdio.printf("strlen(Hello)=%lu (expect 5)\n", l1)
|
|
|
|
l2: t.CSizeT = string.strlen("")
|
|
stdio.printf("strlen()=%lu (expect 0)\n", l2)
|
|
|
|
l3: t.CSizeT = string.strlen("Hello, World!")
|
|
stdio.printf("strlen(Hello, World!)=%lu (expect 13)\n", l3)
|
|
|
|
|
|
def test_strcmp():
|
|
stdio.printf("--- Test 2: strcmp ---\n")
|
|
|
|
r1: t.CInt = string.strcmp("abc", "abc")
|
|
stdio.printf("strcmp(abc,abc)=%d (expect 0)\n", r1)
|
|
|
|
r2: t.CInt = string.strcmp("abc", "abd")
|
|
stdio.printf("strcmp(abc,abd)=%d (expect <0)\n", r2)
|
|
|
|
r3: t.CInt = string.strcmp("abd", "abc")
|
|
stdio.printf("strcmp(abd,abc)=%d (expect >0)\n", r3)
|
|
|
|
|
|
def test_strncmp():
|
|
stdio.printf("--- Test 3: strncmp ---\n")
|
|
|
|
r1: t.CInt = string.strncmp("abcdef", "abcXYZ", 3)
|
|
stdio.printf("strncmp(abcdef,abcXYZ,3)=%d (expect 0)\n", r1)
|
|
|
|
r2: t.CInt = string.strncmp("abcdef", "abcXYZ", 4)
|
|
stdio.printf("strncmp(abcdef,abcXYZ,4)=%d (expect <0)\n", r2)
|
|
|
|
|
|
def test_atoi():
|
|
stdio.printf("--- Test 4: atoi ---\n")
|
|
|
|
n1: t.CInt = string.atoi("123")
|
|
stdio.printf("atoi(123)=%d (expect 123)\n", n1)
|
|
|
|
n2: t.CInt = string.atoi("-456")
|
|
stdio.printf("atoi(-456)=%d (expect -456)\n", n2)
|
|
|
|
n3: t.CInt = string.atoi(" 789")
|
|
stdio.printf("atoi( 789)=%d (expect 789)\n", n3)
|
|
|
|
|
|
def test_strchr():
|
|
stdio.printf("--- Test 5: strchr ---\n")
|
|
|
|
# strchr 返回指向字符的指针,不为 None 表示找到
|
|
p: str = string.strchr("Hello", 108) # 'l' = 108
|
|
if p is not None:
|
|
stdio.printf("strchr(Hello,'l') found, char=%d (expect 108)\n", c.Deref(p))
|
|
else:
|
|
stdio.printf("strchr(Hello,'l') NOT FOUND (FAIL)\n")
|
|
|
|
p2: str = string.strchr("Hello", 122) # 'z' = 122
|
|
if p2 is None:
|
|
stdio.printf("strchr(Hello,'z') not found OK\n")
|
|
else:
|
|
stdio.printf("strchr(Hello,'z') FAIL (should be None)\n")
|
|
|
|
|
|
def test_strstr():
|
|
stdio.printf("--- Test 6: strstr ---\n")
|
|
|
|
p: str = string.strstr("Hello World", "World")
|
|
if p is not None:
|
|
stdio.printf("strstr(Hello,World) found OK\n")
|
|
else:
|
|
stdio.printf("strstr(Hello,World) NOT FOUND (FAIL)\n")
|
|
|
|
p2: str = string.strstr("Hello World", "xyz")
|
|
if p2 is None:
|
|
stdio.printf("strstr(Hello,xyz) not found OK\n")
|
|
else:
|
|
stdio.printf("strstr(Hello,xyz) FAIL (should be None)\n")
|
|
|
|
|
|
def string_test() -> int:
|
|
stdio.printf("=== string_test: string.py 库函数测试 ===\n\n")
|
|
|
|
test_strlen()
|
|
test_strcmp()
|
|
test_strncmp()
|
|
test_atoi()
|
|
test_strchr()
|
|
test_strstr()
|
|
|
|
stdio.printf("\n=== string_test 完成 ===\n")
|
|
return 0
|