svod-runtime 0.1.0-alpha.3

Kernel execution runtime for the Svod ML compiler
Documentation
use super::*;

use svod_dtype::DType;
use svod_ir::CustomFunctionKind;

#[test]
fn test_encdec_returns_typed_unsupported() {
    let alloc = svod_device::registry::cpu().expect("cpu allocator");
    let dst = Buffer::new(alloc.clone(), DType::Float32, vec![4], Default::default());
    let src = Buffer::new(alloc, DType::Float32, vec![4], Default::default());

    let attr = svod_ir::UOp::index_const(7);
    let mut bufs = vec![dst, src];
    let err = run_custom_function(&CustomFunctionKind::EncDec, &[attr], &mut bufs, &HashMap::new())
        .expect_err("encdec should report unsupported runtime behavior");

    match err {
        crate::Error::Unsupported { kind, reason } => {
            assert_eq!(kind, "EncDec");
            assert!(reason.contains("attrs=1"), "unexpected reason: {reason}");
        }
        other => panic!("expected Error::Unsupported, got {other:?}"),
    }
}

#[test]
fn test_graph_returns_typed_unsupported() {
    let mut no_buffers = Vec::<Buffer>::new();
    let err = run_custom_function(&CustomFunctionKind::Graph, &[], &mut no_buffers, &HashMap::new())
        .expect_err("graph should report unsupported runtime behavior");
    assert!(matches!(err, crate::Error::Unsupported { kind, .. } if kind == "Graph"));
}

#[test]
fn test_encdec_unsupported_does_not_require_buffers_first() {
    let mut no_buffers = Vec::<Buffer>::new();
    let err = run_custom_function(&CustomFunctionKind::EncDec, &[], &mut no_buffers, &HashMap::new())
        .expect_err("encdec should fail as unsupported");
    assert!(matches!(err, crate::Error::Unsupported { .. }));
}