Files
TransPyC/TransPyV/Test/App/string_test.py
2026-07-18 19:25:40 +08:00

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