Files
TransPyC/includes/testcheck.py

79 lines
1.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# testcheck - 回归测试格式化输出库
# 提供 PASS/FAIL 计数、分节标题、汇总报告
import t, c
import stdio
from w32.win32console import SetConsoleOutputCP, SetConsoleCP
CP_UTF8: t.CDefine = 65001
_pass_count: t.CInt = 0
_fail_count: t.CInt = 0
_total_pass: t.CInt = 0
_total_fail: t.CInt = 0
def begin(name: str):
"""开始测试套件,打印头部并重置当前套件计数器(累计计数不变)"""
global _pass_count, _fail_count
_pass_count = 0
_fail_count = 0
SetConsoleOutputCP(CP_UTF8)
SetConsoleCP(CP_UTF8)
stdio.printf("=== %s ===\n\n", name)
stdio.fflush(None)
def section(name: str):
"""打印分节标题"""
stdio.printf("--- %s ---\n", name)
stdio.fflush(None)
def ok(msg: str):
"""打印 PASS 并计数"""
global _pass_count
_pass_count += 1
stdio.printf("PASS: %s\n", msg)
stdio.fflush(None)
def fail(msg: str):
"""打印 FAIL 并计数"""
global _fail_count
_fail_count += 1
stdio.printf("FAIL: %s\n", msg)
stdio.fflush(None)
def check(cond: t.CInt, ok_msg: str, fail_msg: str):
"""条件检查,自动选择 PASS/FAIL"""
if cond:
ok(ok_msg)
else:
fail(fail_msg)
def info(msg: str):
"""打印信息消息(不计入 PASS/FAIL"""
stdio.printf("%s\n", msg)
stdio.fflush(None)
def end() -> t.CInt:
"""打印当前套件汇总,累加到总计,返回当前套件失败数"""
global _total_pass, _total_fail
_total_pass += _pass_count
_total_fail += _fail_count
stdio.printf("\n--- Summary ---\n")
stdio.printf("PASS: %d, FAIL: %d\n", _pass_count, _fail_count)
stdio.fflush(None)
return _fail_count
def summary() -> t.CInt:
"""打印所有套件的总计汇总,返回总失败数"""
stdio.printf("\n=== Total Summary ===\n")
stdio.printf("Total PASS: %d, Total FAIL: %d\n", _total_pass, _total_fail)
stdio.fflush(None)
return _total_fail