"""result_checker.py - Compares simulation output against expected values."""


def check_results(got: list[str], expected_file: str) -> tuple[int, int]:
    """Compare Verilator output against expected values.

    Args:
        got: List of result strings from simulation (hex values).
        expected_file: Path to file containing expected hex values, one per line.

    Returns:
        tuple[int, int]: (num_pass, num_fail).
    """
    # Read expected values
    expected = []
    try:
        with open(expected_file, 'r') as f:
            for line in f:
                line = line.strip()
                if line and not line.startswith('#'):
                    expected.append(line)
    except FileNotFoundError:
        print(f"[ERROR] Expected file not found: {expected_file}")
        return (0, len(got))

    num_pass = 0
    num_fail = 0

    max_len = max(len(got), len(expected))

    for i in range(max_len):
        got_val = got[i].upper() if i < len(got) else 'MISSING'
        exp_val = expected[i].upper() if i < len(expected) else 'MISSING'

        if got_val == exp_val:
            num_pass += 1
        else:
            num_fail += 1
            if num_fail <= 5:  # Only show first 5 failures
                print(f"  MISMATCH[{i}]: got={got_val}, expected={exp_val}")

    if num_fail > 5:
        print(f"  ... and {num_fail - 5} more mismatches")

    return (num_pass, num_fail)
