weirflow 0.1.0

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

// ------------------------------------------------------------------
// 15. resident_read_ranges_from correctness
// ------------------------------------------------------------------

#[test]
fn ifds_vyre_resident_ranges_from_empty() {
    let ranges = resident_read_ranges_from(&[]).unwrap();
    assert!(ranges.is_empty());
}

#[test]
fn ifds_vyre_resident_ranges_from_single() {
    let r = vyre::backend::Resource::Resident(7);
    let input = [(&r, 16, 32)];
    let ranges = resident_read_ranges_from(&input).unwrap();
    assert_eq!(ranges.len(), 1);
    assert!(std::ptr::eq(ranges[0].resource, &r));
    assert_eq!(ranges[0].byte_offset, 16);
    assert_eq!(ranges[0].byte_len, 32);
}

#[test]
fn ifds_vyre_resident_ranges_from_multiple() {
    let r1 = vyre::backend::Resource::Resident(1);
    let r2 = vyre::backend::Resource::Resident(2);
    let input = [(&r1, 0, 8), (&r2, 16, 4)];
    let ranges = resident_read_ranges_from(&input).unwrap();
    assert_eq!(ranges.len(), 2);
    assert_eq!(ranges[0].byte_offset, 0);
    assert_eq!(ranges[1].byte_offset, 16);
}

#[test]
fn ifds_vyre_resident_ranges_from_preserves_resource_ref() {
    let r = vyre::backend::Resource::Resident(99);
    let input = [(&r, 0, 1)];
    let ranges = resident_read_ranges_from(&input).unwrap();
    assert!(std::ptr::eq(ranges[0].resource, &r));
}

#[test]
fn ifds_vyre_resident_ranges_from_zero_len() {
    let r = vyre::backend::Resource::Resident(1);
    let input = [(&r, 64, 0)];
    let ranges = resident_read_ranges_from(&input).unwrap();
    assert_eq!(ranges[0].byte_len, 0);
    assert_eq!(ranges[0].byte_offset, 64);
}

#[test]
fn ifds_vyre_resident_ranges_from_large_count() {
    let r = vyre::backend::Resource::Resident(1);
    let mut inputs: Vec<(&vyre::backend::Resource, usize, usize)> = Vec::new();
    for i in 0..100 {
        inputs.push((&r, i * 8, 8));
    }
    let ranges = resident_read_ranges_from(&inputs).unwrap();
    assert_eq!(ranges.len(), 100);
}