vyre-conform 0.1.0

Conformance suite for vyre backends — proves byte-identical output to CPU reference
Documentation
//! Rust test source code generation from routes.

mod context;
mod law;
mod program;
mod values;

use crate::generate::archetypes::{Archetype, TestInput};
use crate::generate::templates::{render, rust_test_template};
use crate::spec::types::OpSpec;

pub(super) use self::context::law_name;
use self::context::{rust_template_name, test_context};
pub(super) use self::values::{expected_bytes, route_key, spec_row_index};
use super::Route;

pub(super) fn rust_test(
    name: &str,
    op: &OpSpec,
    archetype: &dyn Archetype,
    input: &TestInput,
    route: &Route,
    seed: u64,
) -> String {
    let template_name = rust_template_name(route);
    let template = rust_test_template(template_name).unwrap_or_else(|err| {
        panic!("Fix: missing generated Rust template `{template_name}`: {err}")
    });
    render(
        template,
        &test_context(name, op, archetype, input, route, seed),
    )
    .unwrap_or_else(|err| panic!("Fix: generated Rust template `{template_name}` failed: {err}"))
}