vyre-conform 0.1.0

Conformance suite for vyre backends — proves byte-identical output to CPU reference
Documentation
//! Public test hooks for streaming audit regressions.

use super::batch_execution::Batch;
use super::{ProgressSink, StreamingRunner};

impl<P: ProgressSink> StreamingRunner<P> {
    /// Test helper: run all ops and return failures.
    #[inline]
    pub fn __test_run_mut(
        &mut self,
        backend: &dyn vyre::VyreBackend,
        specs: &[crate::OpSpec],
    ) -> Vec<crate::spec::types::ParityFailure> {
        if let Some(f) = self.config_failure() {
            return vec![f];
        }

        let mut failures = Vec::new();
        let mut next_test_id = 0_u64;

        for op in specs {
            self.run_op(backend, op, None, &mut next_test_id, &mut failures);
            for (label, alt_wgsl_fn) in &op.alt_wgsl_fns {
                let alt = crate::OpSpec {
                    wgsl_fn: *alt_wgsl_fn,
                    alt_wgsl_fns: Vec::new(),
                    version_history: op.version_history.clone(),
                    ..op.clone()
                };
                self.run_op(backend, &alt, Some(label), &mut next_test_id, &mut failures);
            }
        }

        failures
    }

    /// Test helper: run one case.
    #[inline]
    pub fn __test_accept_case(
        &mut self,
        backend: &dyn vyre::VyreBackend,
        op: &crate::OpSpec,
        case: crate::pipeline::execution::InputCase,
        next_test_id: &mut u64,
        failures: &mut Vec<crate::spec::types::ParityFailure>,
    ) -> Result<(), String> {
        let mut batch = Batch::new(op.id, op.version, 1, None);
        self.accept_case(backend, op, case, next_test_id, &mut batch, failures)
    }

    /// Test helper: clear generators.
    #[inline]
    pub fn __test_clear_generators(&mut self) {
        self.generators.clear();
    }
}