tokitai-operator 0.1.0

Verified DL kernel compiler: formally-checked GEMM, p-adic, sheaf, contract-carrying ops. Paper-artifact grade.
Documentation
use tokitai_operator::object::Tensor;

#[test]
fn tensor_into_iter_consumes_data() {
    let v = Tensor::vector(
        tokitai_operator::domain::DomainId::new("integer"),
        3,
        vec![1_i64, 2, 3],
    );
    let collected: Vec<i64> = v.into_iter().collect();
    assert_eq!(collected, vec![1, 2, 3]);
}

#[test]
fn tensor_from_iter_collects_i64_values() {
    let t: Tensor<i64> = (0..6).collect();
    assert_eq!(t.rank(), 1);
    assert_eq!(t.as_slice(), &[0, 1, 2, 3, 4, 5]);
}

#[test]
fn tensor_from_iter_with_explicit_collect_preserves_order() {
    let source = vec![10, 20, 30, 40];
    let t: Tensor<i64> = source.iter().copied().collect();
    assert_eq!(t.as_slice(), &[10, 20, 30, 40]);
}

#[test]
fn empty_tensor_from_iter_works() {
    let t: Tensor<i64> = std::iter::empty::<i64>().collect();
    assert!(t.is_empty());
    assert_eq!(t.len(), 0);
    assert_eq!(t.rank(), 1);
}

#[test]
fn tensor_into_iter_supports_iterator_chains() {
    let t: Tensor<i64> = (1..=5).collect();
    // Use into_iter to chain off the tensor.
    let sum: i64 = t.into_iter().sum();
    assert_eq!(sum, 15);
}

#[test]
fn tensor_from_iter_with_filter_and_map() {
    let t: Tensor<i64> = (0..10).filter(|x| x % 2 == 0).map(|x| x * x).collect();
    assert_eq!(t.as_slice(), &[0, 4, 16, 36, 64]);
}