knok 0.1.0

Compile-time linalg graphs for Rust
use knok::{Backend, Engine, RuntimeConfig, SUPPORTED_BACKENDS};

#[test]
fn backend_capabilities_describe_supported_targets() {
    assert_eq!(SUPPORTED_BACKENDS, &[Backend::LlvmCpu, Backend::MetalSpirv]);
    assert_eq!(Backend::from_name("llvm-cpu"), Some(Backend::LlvmCpu));
    assert_eq!(Backend::from_name("metal-spirv"), Some(Backend::MetalSpirv));
    assert_eq!(Backend::from_name("vulkan-spirv"), None);
    assert_eq!(Backend::LlvmCpu.name(), "llvm-cpu");
    assert_eq!(Backend::LlvmCpu.default_driver(), "local-task");
    assert!(Backend::MetalSpirv.supports_driver("metal"));
    assert!(!Backend::MetalSpirv.supports_driver("local-task"));
}

#[test]
fn runtime_config_can_be_constructed_from_backend() {
    let engine = Engine::new(RuntimeConfig::backend(Backend::LlvmCpu)).unwrap();

    assert_eq!(engine.driver_name(), "local-task");
}

#[test]
fn engine_can_be_constructed_from_backend_kind() {
    let engine = Engine::for_backend_kind(Backend::LlvmCpu).unwrap();

    assert_eq!(engine.driver_name(), "local-task");
}