vyre-conform 0.1.0

Conformance suite for vyre backends — proves byte-identical output to CPU reference
Documentation
//! Integration tests for `string.tokenize` KAT vectors.
//!
//! Verifies that every hand-traced KAT entry matches `tokenize_cpu` output
//! exactly, and that the KAT table covers every state in the tokenizer's
//! state machine.

use vyre_conform::specs::string::tokenize::{tokenize_cpu, KAT};

#[test]
fn every_kat_matches_cpu_reference() {
    for (i, v) in KAT.iter().enumerate() {
        let actual = tokenize_cpu(v.input);
        assert_eq!(
            actual.as_slice(),
            v.expected,
            "KAT #{i} mismatch for input {:?} ({}): expected {:?}, got {:?}",
            v.input,
            v.source,
            v.expected,
            actual
        );
    }
}

#[test]
fn kat_covers_every_state() {
    let mut seen = [false; 8];
    for v in KAT {
        for chunk in v.expected.chunks_exact(4) {
            let state = chunk[0] as usize;
            if state < 8 {
                seen[state] = true;
            }
        }
    }
    let state_names = [
        "String",
        "Identifier",
        "Number",
        "Comment",
        "Regex",
        "Operator",
        "Whitespace",
        "Unknown",
    ];
    for (state, was_seen) in seen.iter().enumerate() {
        assert!(
            *was_seen,
            "KAT coverage gap: no vector exercises state {state} ({}); expand KAT",
            state_names[state]
        );
    }
}