weirflow 0.1.0

GPU-first dataflow analysis primitives for Vyre and Santh compiler pipelines.
Documentation
// ------------------------------------------------------------------
// 12. BackendError variant -> String mapping coverage
// ------------------------------------------------------------------

#[test]
fn ifds_vyre_resident_error_map_device_out_of_memory() {
    let err = vyre::BackendError::DeviceOutOfMemory {
        requested: 1024,
        available: 512,
    };
    let s = err.to_string();
    assert!(s.contains("device out of memory"));
    assert!(s.contains("1024"));
    assert!(s.contains("512"));
    assert!(s.contains("Fix:"));
}

#[test]
fn ifds_vyre_resident_error_map_unsupported_feature() {
    let err = vyre::BackendError::UnsupportedFeature {
        name: "subgroup_ops".into(),
        backend: "test".into(),
    };
    let s = err.to_string();
    assert!(s.contains("unsupported feature"));
    assert!(s.contains("subgroup_ops"));
    assert!(s.contains("Fix:"));
}

#[test]
fn ifds_vyre_resident_error_map_poisoned_lock() {
    let err = vyre::BackendError::PoisonedLock {
        lock_error: "mutex poisoned".into(),
    };
    let s = err.to_string();
    assert!(s.contains("poisoned"));
    assert!(s.contains("mutex poisoned"));
    assert!(s.contains("Fix:"));
}

#[test]
fn ifds_vyre_resident_error_map_kernel_compile_failed() {
    let err = vyre::BackendError::KernelCompileFailed {
        backend: "cuda".into(),
        compiler_message: "type mismatch".into(),
    };
    let s = err.to_string();
    assert!(s.contains("compile failed"));
    assert!(s.contains("type mismatch"));
    assert!(s.contains("Fix:"));
}

#[test]
fn ifds_vyre_resident_error_map_dispatch_failed() {
    let err = vyre::BackendError::DispatchFailed {
        code: Some(7),
        message: "queue full".into(),
    };
    let s = err.to_string();
    assert!(s.contains("dispatch failed"));
    assert!(s.contains("queue full"));
    assert!(s.contains("Fix:"));
}

#[test]
fn ifds_vyre_resident_error_map_invalid_program() {
    let err = vyre::BackendError::InvalidProgram {
        fix: "Fix: bind all inputs".into(),
    };
    let s = err.to_string();
    assert!(s.contains("Fix: bind all inputs"));
}

#[test]
fn ifds_vyre_resident_error_map_raw_with_fix() {
    let err = vyre::BackendError::Raw("something broke. Fix: retry".into());
    let s = err.to_string();
    assert!(s.contains("something broke"));
    assert!(s.contains("Fix:"));
}

#[test]
fn ifds_vyre_resident_error_map_raw_without_fix_gets_fallback() {
    let err = vyre::BackendError::new("something broke");
    let s = err.to_string();
    assert!(s.contains("something broke"));
    assert!(s.contains("Fix:"));
}