tenferro-cpu 0.8.1

CPU backend, kernels, provider selection, and CPU resource pools for tenferro.
Documentation
use super::*;

#[test]
fn cpu_engine_rejects_a_zero_thread_count_without_building_a_pool() {
    let error = cpu_engine(0).expect_err("zero threads must be refused");
    assert!(matches!(
        error,
        crate::Error::Validation {
            op: "test_support::cpu_engine",
            source: crate::ValidationError::InvalidArgument {
                argument: "configuration",
                ..
            },
        }
    ));
}

#[test]
fn test_engine_helpers_forward_through_a_mutable_reference_engine() {
    let mut engine = cpu_engine(1).expect("serial test engine");
    let has_native_engine = on_engine(&mut &mut engine, |erased| erased.native_engine().is_some())
        .expect("erased engine call");
    assert!(has_native_engine);

    let borrowed = &mut engine;
    let value = borrowed.run_erased(|_| 7usize).expect("erased run");
    assert_eq!(value, 7);
}

#[test]
fn with_cpu_session_runs_on_the_concrete_engine() {
    let mut engine = cpu_engine(1).expect("serial test engine");
    let threads = with_cpu_session(&mut engine, |cpu| cpu.num_threads());
    assert_eq!(threads, 1);
}