weirflow 0.1.0

GPU-first dataflow analysis primitives for Vyre and Santh compiler pipelines.
Documentation
use super::*;

// ------------------------------------------------------------------
// 21. Error mapping via every adapter method surface
// ------------------------------------------------------------------

#[test]
fn ifds_vyre_resident_err_map_via_allocate() {
    let b = backend();
    let a = adapter(&b);
    b.inject_next_allocate(InjectedFailure::InvalidProgram {
        fix: "raw alloc err".into(),
    });
    let err = a.allocate_resident(1).unwrap_err();
    assert!(err.contains("raw alloc err"));
}

#[test]
fn ifds_vyre_resident_err_map_via_upload() {
    let b = backend();
    let a = adapter(&b);
    let r = a.allocate_resident(64).unwrap();
    b.inject_next_upload(InjectedFailure::InvalidProgram {
        fix: "raw upload err".into(),
    });
    let err = a.upload_resident(&r, &[1u8]).unwrap_err();
    assert!(err.contains("raw upload err"));
}

#[test]
fn ifds_vyre_resident_err_map_via_upload_many() {
    let b = backend();
    let a = adapter(&b);
    let r = a.allocate_resident(64).unwrap();
    b.inject_next_upload(InjectedFailure::InvalidProgram {
        fix: "raw upload many err".into(),
    });
    let err = a.upload_resident_many(&[(&r, &[1u8])]).unwrap_err();
    assert!(err.contains("raw upload many err"));
}

#[test]
fn ifds_vyre_resident_err_map_via_upload_at_many() {
    let b = backend();
    let a = adapter(&b);
    let r = a.allocate_resident(64).unwrap();
    b.inject_next_upload(InjectedFailure::InvalidProgram {
        fix: "raw upload at err".into(),
    });
    let err = a.upload_resident_at_many(&[(&r, 0, &[1u8])]).unwrap_err();
    assert!(err.contains("raw upload at err"));
}

#[test]
fn ifds_vyre_resident_err_map_via_download() {
    let b = backend();
    let a = adapter(&b);
    let r = a.allocate_resident(64).unwrap();
    b.inject_next_download(InjectedFailure::InvalidProgram {
        fix: "raw download err".into(),
    });
    let err = a.download_resident(&r).unwrap_err();
    assert!(err.contains("raw download err"));
}

#[test]
fn ifds_vyre_resident_err_map_via_download_into() {
    let b = backend();
    let a = adapter(&b);
    let r = a.allocate_resident(64).unwrap();
    b.inject_next_download(InjectedFailure::InvalidProgram {
        fix: "raw download into err".into(),
    });
    let mut out = Vec::new();
    let err = a.download_resident_into(&r, &mut out).unwrap_err();
    assert!(err.contains("raw download into err"));
}

#[test]
fn ifds_vyre_resident_err_map_via_download_range() {
    let b = backend();
    let a = adapter(&b);
    let r = a.allocate_resident(64).unwrap();
    b.inject_next_download(InjectedFailure::InvalidProgram {
        fix: "raw range err".into(),
    });
    let err = a.download_resident_range(&r, 0, 8).unwrap_err();
    assert!(err.contains("raw range err"));
}

#[test]
fn ifds_vyre_resident_err_map_via_download_range_into() {
    let b = backend();
    let a = adapter(&b);
    let r = a.allocate_resident(64).unwrap();
    b.inject_next_download(InjectedFailure::InvalidProgram {
        fix: "raw range into err".into(),
    });
    let mut out = Vec::new();
    let err = a
        .download_resident_range_into(&r, 0, 8, &mut out)
        .unwrap_err();
    assert!(err.contains("raw range into err"));
}

#[test]
fn ifds_vyre_resident_err_map_via_download_ranges_into() {
    let b = backend();
    let a = adapter(&b);
    let r = a.allocate_resident(64).unwrap();
    b.inject_next_download(InjectedFailure::InvalidProgram {
        fix: "raw ranges err".into(),
    });
    let mut out = Vec::new();
    let err = a
        .download_resident_ranges_into(&[(&r, 0, 8)], &mut [&mut out])
        .unwrap_err();
    assert!(err.contains("raw ranges err"));
}

#[test]
fn ifds_vyre_resident_err_map_via_free() {
    let b = backend();
    let a = adapter(&b);
    let r = a.allocate_resident(64).unwrap();
    b.inject_next_free(InjectedFailure::InvalidProgram {
        fix: "raw free err".into(),
    });
    let err = a.free_resident(r).unwrap_err();
    assert!(err.contains("raw free err"));
}

#[test]
fn ifds_vyre_resident_err_map_via_dispatch() {
    let b = backend();
    let a = adapter(&b);
    let r = a.allocate_resident(64).unwrap();
    b.inject_next_dispatch(InjectedFailure::InvalidProgram {
        fix: "raw dispatch err".into(),
    });
    let err = a.dispatch_resident(&program(), &[r], None).unwrap_err();
    assert!(err.contains("raw dispatch err"));
}

#[test]
fn ifds_vyre_resident_err_map_via_sequence() {
    let b = backend();
    let a = adapter(&b);
    let r = a.allocate_resident(64).unwrap();
    b.inject_next_dispatch(InjectedFailure::InvalidProgram {
        fix: "raw seq err".into(),
    });
    let mut out = Vec::new();
    let err = a
        .dispatch_resident_sequence_read_ranges_into(
            &[(&program(), &[r], None)],
            &[],
            &mut [&mut out],
        )
        .unwrap_err();
    assert!(err.contains("raw seq err"));
}

#[test]
fn ifds_vyre_resident_err_map_via_repeated() {
    let b = backend();
    let a = adapter(&b);
    let r = a.allocate_resident(64).unwrap();
    b.inject_next_dispatch(InjectedFailure::InvalidProgram {
        fix: "raw rep err".into(),
    });
    let mut out = Vec::new();
    let err = a
        .dispatch_resident_repeated_sequence_read_ranges_into(
            &[],
            &[(&program(), &[r], None)],
            1,
            &[],
            &mut [&mut out],
        )
        .unwrap_err();
    assert!(err.contains("raw rep err"));
}