tension 0.0.2

Tensor library with OpenCL acceleration
Documentation
use crate::{prelude::*, Shape, HostTensor as Tensor};

#[test]
fn new_filled() {
    let value: i32 = -123;
    let a = Tensor::new_filled(&Shape::from([4, 3, 2].as_ref()), value);

    let mut v = Vec::new();
    v.resize(24, 0);
    a.load(v.as_mut_slice());

    assert!(v.iter().all(|&x| x == value));
}

#[test]
fn new_zeroed() {
    let a = Tensor::new_zeroed(&Shape::from([4, 3, 2].as_ref()));

    let mut v = Vec::new();
    v.resize(24, -1);
    a.load(v.as_mut_slice());

    assert!(v.iter().all(|&x| x == 0));
}

#[test]
fn iter() {
    let mut a = Tensor::new_zeroed(&Shape::from([1, 2, 3, 4].as_ref()));
    for i in 0..(2*3*4) {
        a.buffer_mut().as_mut_slice()[i] = i;
    }

    for (i, v) in a.iter().enumerate() {
        assert_eq!(*v, i);
    }
}

#[test]
fn iter_mut() {
    let mut a = Tensor::new_zeroed(&Shape::from([1, 2, 3, 4].as_ref()));
    for (i, v) in a.iter_mut().enumerate() {
        *v = i;
    }

    for i in 0..(2*3*4) {
        assert_eq!(a.buffer().as_slice()[i], i);
    }
}