import sys, re
sys.stdout.reconfigure(encoding='utf-8')

with open('tests/test_core.cpp', 'r', encoding='utf-8') as f:
    text = f.read()

funcs = re.findall(r'void (Test[A-Za-z0-9_]+)\s*\(\)\s*\{([\s\S]*?)(?=\nvoid Test|\nint main|\Z)', text)
print(f"Found {len(funcs)} test functions.")

total_checks = 0
results = []
for name, body in funcs:
    c_count = len(re.findall(r'\bCHECK\(', body))
    # check for loops with CHECK
    loops = re.findall(r'for\s*\([^)]+\)\s*\{[\s\S]*?\}', body)
    loop_check = False
    for lp in loops:
        if 'CHECK(' in lp:
            loop_check = True
            break
    results.append((name, c_count, loop_check))
    total_checks += c_count

results.sort(key=lambda x: x[1], reverse=True)
print(f"Total literal checks: {total_checks}")
print("\nFunctions ranked by literal checks:")
for name, cnt, in_loop in results:
    loop_str = " [HAS LOOP]" if in_loop else ""
    print(f"  {name:50s}: {cnt:3d} checks{loop_str}")
